from django.db import models
from django.contrib.auth import get_user_model
from common.models import BaseModel

User = get_user_model()


class CertificateTemplate(BaseModel):
    title = models.CharField(max_length=200, verbose_name='عنوان')
    body = models.TextField(verbose_name='متن قالب (با جایگزین‌ها)')
    company = models.ForeignKey('accounts.Company', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت صادر کننده')
    is_active = models.BooleanField(default=True, verbose_name='فعال')

    class Meta:
        verbose_name = 'قالب گواهی'
        verbose_name_plural = 'قالب‌های گواهی'

    def __str__(self):
        return self.title


class CertificateInstance(BaseModel):
    process_instance = models.ForeignKey('processes.ProcessInstance', on_delete=models.CASCADE, related_name='certificates', verbose_name='نمونه فرآیند')
    template = models.ForeignKey(CertificateTemplate, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='قالب')
    rendered_title = models.CharField(max_length=250, verbose_name='عنوان رندر شده')
    rendered_body = models.TextField(verbose_name='متن رندر شده')
    issued_at = models.DateField(auto_now_add=True, verbose_name='تاریخ صدور')
    approved = models.BooleanField(default=False, verbose_name='تایید شده')
    approved_at = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تایید')

    class Meta:
        verbose_name = 'گواهی'
        verbose_name_plural = 'گواهی‌ها'

    def __str__(self):
        return f"گواهی {self.process_instance.code}"


