from rest_framework import serializers
from apps.support.choices import SupportTicketStatus
from apps.support.models import SupportTicket


class SupportTicketCreateSerializer(serializers.ModelSerializer):

    def validate_status(self, value):
        if not value:
            return SupportTicketStatus.OPEN

        if not SupportTicketStatus.is_valid(value):

            raise serializers.ValidationError(
                f"Invalid support ticket status "
                f"choices are '{SupportTicketStatus.OPEN}'"
                f", '{SupportTicketStatus.IN_PROGRESS}'"
                f", '{SupportTicketStatus.RESOLVED}'"
                f", '{SupportTicketStatus.CLOSED}'"
            )
        return value

    def validate_description(self, value):
        if not value.strip():
            raise serializers.ValidationError("Description cannot be empty.")
        return value

    class Meta:
        model = SupportTicket
        fields = ("description", "status")
