from rest_framework import serializers

from ..models import Decision, DecisionChoices
from .administre import AdministreSerializer
from .initial import PosteSerializer
from .notation import NotationSerializer


class DecisionSerializer(serializers.ModelSerializer):
    """Cette classe sera responsable de la conversion des objets decisions en type json contenant les champs de decision
    et les champs de notation, poste et administre liés à chaque decision . Cette classe va également ordonner le json par de_date_decision.
    Si fields='__all__', alors toutes les variables liées à cette classe seront affichées dans le json.
    """
    notation = NotationSerializer()
    # poste = PosteSerializer()
    # administre = AdministreSerializer()
    de_date_decision = serializers.ReadOnlyField()

    class Meta:
        model = Decision
        fields = '__all__'
        ordering = ['de_date_decision']


class CreateDecisionSerializer(serializers.ModelSerializer):
    """ Valide les données pour une création de décision """

    administre_id = serializers.IntegerField(write_only=True)
    poste_id = serializers.CharField(max_length=100, write_only=True)
    de_decision = serializers.ChoiceField(choices=DecisionChoices.choices)
    delete_former = serializers.BooleanField(write_only=True, required=False)

    class Meta:
        model = Decision
        fields = ['administre_id', 'poste_id', 'de_decision', 'delete_former']
