from rest_framework import serializers
from .models import PlayerDevelopmentProgress,PlayerRatingMaterializationRun,TrainingDevelopmentResult,TrainingParticipant,TrainingSession
class TrainingParticipantSerializer(serializers.ModelSerializer):
    class Meta:model=TrainingParticipant;fields="__all__"
class TrainingSessionSerializer(serializers.ModelSerializer):
    player_ids=serializers.SerializerMethodField()
    attendance=TrainingParticipantSerializer(source="participants", many=True, read_only=True)
    class Meta:model=TrainingSession;fields="__all__"
    def get_player_ids(self,obj):return [str(x) for x in (p.player_id for p in obj.participants.all())]
class TrainingResultSerializer(serializers.ModelSerializer):
    class Meta:model=TrainingDevelopmentResult;fields="__all__"
class PlayerDevelopmentSerializer(serializers.ModelSerializer):
    class Meta:model=PlayerDevelopmentProgress;fields="__all__"
class RatingRunSerializer(serializers.ModelSerializer):
    class Meta:model=PlayerRatingMaterializationRun;fields="__all__"
class IndividualScheduleSerializer(serializers.Serializer):
    player_id=serializers.UUIDField();training_date=serializers.DateField();target_attribute=serializers.CharField()
class TeamScheduleSerializer(serializers.Serializer):
    club_id=serializers.UUIDField();training_date=serializers.DateField();target_attribute=serializers.CharField()
    starts_at=serializers.DateTimeField();ends_at=serializers.DateTimeField()
    slot_number=serializers.IntegerField(min_value=1,max_value=2)
    formation=serializers.CharField()
    formation_slots=serializers.ListField(child=serializers.CharField(),required=False)
    player_ids=serializers.ListField(child=serializers.UUIDField(),required=False)
