import os
from rest_framework import serializers, fields
from management.models import *

class GenericErrorSerializer(serializers.Serializer):
    code=serializers.CharField()
    description=serializers.CharField()
    
class GenericResponseObjectSerializer(serializers.Serializer):
    status=serializers.BooleanField()
    validation_errors=serializers.DictField()
   
class FileSerializer(serializers.Serializer):
    file = serializers.FileField()

     
class BasePagedAndFilterResponseSerializer(serializers.Serializer):
    total_count=serializers.IntegerField()
    page=serializers.IntegerField()   

class FilterValueField(fields.Field):
    pass


class FilterSerializer(serializers.Serializer):
    field_name=serializers.CharField()
    filter_condition=serializers.CharField()
    filter_value=FilterValueField()
    

class SortingSerializer(serializers.Serializer):
    field_name=serializers.CharField()
    operation=serializers.CharField()


class FilterAndSortingRequestSerializer(serializers.Serializer):
    filters=serializers.ListSerializer(child=FilterSerializer())
    sortings=serializers.ListSerializer(child=SortingSerializer())


class AnnoDiCompetenzaGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Anno_di_competenza'] 

class GestoreGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Gestore'] 

class ClienteGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Cliente'] 

class StatoPreReviewGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'STATO_PRE_REVIEW'] 

class TipoPraticaGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Tipo_Pratica'] 

class FascicoloGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Fascicolo'] 

class ModelloGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Modello'] 

class GruppoGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Gruppo'] 

class AnnoStandardGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Anno_standard'] 

class MeseStandardGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Mese_standard'] 

class PeriodoStandardGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'anno_standard' , 'mese_standard'] 

class PeriodoCompetenzaGetItemsSerializer(serializers.ModelSerializer):
    # user=UserSerializer(many=False, read_only=True)
    # attachments = AbsenceAttachmentListSerializer(many=True, read_only=True)

    class Meta:
        model = PlanArchivio
        fields = [ 'Periodo_di_competenza'] 
