from django.db import models
from django.contrib.auth import get_user_model
from common.models import NameSlugModel, BaseModel
from accounts.models import Company

User = get_user_model()


class ContractTemplate(NameSlugModel):
    body = models.TextField(verbose_name='متن قرارداد')
    company = models.ForeignKey(Company, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='شرکت')

    class Meta:
        verbose_name = 'قالب قرارداد'
        verbose_name_plural = 'قالب‌های قرارداد'

    def __str__(self):
        return self.name


class ContractInstance(BaseModel):
    process_instance = models.ForeignKey('processes.ProcessInstance', on_delete=models.CASCADE, related_name='contracts', verbose_name='نمونه فرآیند')
    template = models.ForeignKey(ContractTemplate, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='قالب مورد استفاده')
    rendered_body = models.TextField(verbose_name='متن نهایی قرارداد')
    approved = models.BooleanField(default=False, verbose_name='تایید شده')
    approved_at = models.DateTimeField(null=True, blank=True, verbose_name='تاریخ تایید')
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, verbose_name='ایجاد کننده')

    class Meta:
        verbose_name = 'قرارداد'
        verbose_name_plural = 'قراردادها'
        ordering = ['-created']

    def __str__(self):
        return f"Contract for {self.process_instance}"

