from rest_framework import serializers

from .models import GeneratedResume, ResumeTemplate


class ResumeTemplateSerializer(serializers.ModelSerializer):
    class Meta:
        model = ResumeTemplate
        fields = (
            "id",
            "name",
            "description",
            "thumbnail",
            "is_active",
            "created_at",
        )
        read_only_fields = (
            "id",
            "name",
            "description",
            "thumbnail",
            "is_active",
            "created_at",
        )


class ResumeTemplateAdminSerializer(serializers.ModelSerializer):
    class Meta:
        model = ResumeTemplate
        fields = (
            "id",
            "name",
            "description",
            "html_template",
            "css_styles",
            "thumbnail",
            "is_active",
            "created_at",
        )
        read_only_fields = ("id", "created_at")


class VacancyAnalyzeSerializer(serializers.Serializer):
    vacancy_text = serializers.CharField()


class ResumeGenerateSerializer(serializers.Serializer):
    vacancy_text = serializers.CharField()
    template_id = serializers.IntegerField()
    is_public = serializers.BooleanField(required=False, default=False)


class ResumePreviewSerializer(serializers.Serializer):
    vacancy_text = serializers.CharField()
    template_id = serializers.IntegerField()


class GeneratedResumeListSerializer(serializers.ModelSerializer):
    template_name = serializers.CharField(
        source="template.name", read_only=True, allow_null=True
    )

    class Meta:
        model = GeneratedResume
        fields = (
            "id",
            "template_id",
            "template_name",
            "vacancy_text",
            "vacancy_keywords",
            "created_at",
            "is_public",
            "pdf_file",
            "docx_file",
        )
