from rest_framework import serializers
from apps.companies.models import Holiday, CompanyBotSettings


class HolidaySerializer(serializers.ModelSerializer):
    duration_days = serializers.SerializerMethodField()
    bots = serializers.PrimaryKeyRelatedField(
        queryset=CompanyBotSettings.objects.all(),
        many=True,
        required=False
    )

    class Meta:
        model = Holiday
        fields = [
            'id', 'name', 'message',
            'start_date', 'end_date',
            'is_active', 'bots',
            'duration_days',
            'created_at', 'updated_at'
        ]
        read_only_fields = ['id', 'duration_days', 'created_at', 'updated_at']

    def get_duration_days(self, obj):
        return obj.get_duration_days()

    def validate(self, data):
        start = data.get('start_date')
        end = data.get('end_date')

        if start and end and start > end:
            raise serializers.ValidationError(
                "End date must be after or equal to start date"
            )
        return data
