
import secrets
import string

from django.db import models

from management.models.clienti import Cliente
from management.models.plan_archivio import PlanArchivio
from management.models.pratica import Pratica

class NotaPermanente(models.Model):
    id = models.AutoField(primary_key=True)
    descrizione_nota = models.TextField(null=True, blank=True)
    plan = models.ForeignKey(PlanArchivio, on_delete=models.CASCADE)
    pratica = models.ForeignKey(Pratica, on_delete=models.CASCADE)
    data = models.DateField(null=True, blank=True)
    decorrenza = models.DateField(null=True, blank=True)
    data_ora_modifica = models.DateTimeField(auto_now=True)
    data_ora_creazione = models.DateTimeField(auto_now_add=True)
    random_code = models.CharField(max_length=50, blank=True)

    class Meta:
        db_table = "Note_permanenti"
    
    def save(self, *args, **kwargs):
        if not self.random_code:
            while True:
                code = self.generate_code()
                if not NotaPermanente.objects.filter(random_code=code).exists():
                    self.random_code = code
                    break
        super().save(*args, **kwargs)

    def generate_code(self, length=12):
        chars = string.ascii_uppercase + string.digits
        return ''.join(secrets.choice(chars) for _ in range(length))