from django.db import models

from portfolio.models import StudentProfile


class ResumeTemplate(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField(blank=True)
    html_template = models.TextField()
    css_styles = models.TextField(blank=True)
    thumbnail = models.ImageField(upload_to="templates/", blank=True, null=True)
    is_active = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        db_table = "resume_templates"
        verbose_name = "Шаблон резюме"
        verbose_name_plural = "Шаблоны резюме"

    def __str__(self):
        return self.name


class GeneratedResume(models.Model):
    student = models.ForeignKey(
        StudentProfile,
        on_delete=models.CASCADE,
        related_name="generated_resumes",
        db_column="student_id",
    )
    template = models.ForeignKey(
        ResumeTemplate,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name="generated_resumes",
        db_column="template_id",
    )
    vacancy_text = models.TextField()
    vacancy_keywords = models.JSONField(default=dict, blank=True)
    selected_data = models.JSONField(default=dict, blank=True)
    html_content = models.TextField(blank=True)
    pdf_file = models.FileField(upload_to="resumes/pdf/", blank=True, null=True)
    docx_file = models.FileField(upload_to="resumes/docx/", blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    is_public = models.BooleanField(default=False)

    class Meta:
        db_table = "generated_resumes"
        verbose_name = "Сгенерированное резюме"
        verbose_name_plural = "Сгенерированные резюме"
        ordering = ("-created_at",)


class ResumeAnalytics(models.Model):
    resume = models.OneToOneField(
        GeneratedResume,
        on_delete=models.CASCADE,
        related_name="analytics",
        db_column="resume_id",
    )
    views_count = models.IntegerField(default=0)
    downloads_count = models.IntegerField(default=0)
    last_viewed = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = "resume_analytics"
        verbose_name = "Аналитика резюме"
        verbose_name_plural = "Аналитика резюме"
