from management.models.fascicolo import Fascicolo
from management.models.gruppo import Gruppo
from management.models.tipo_commessa import TipoCommessa
from management.models.utente import Utente
from management.models.modello import Modello
from management.models.pratica import Pratica
from management.models.stato_pratica import StatoPratica
from management.models.clienti import Cliente

from .base import *

class TipoDocumento(models.Model):
    id = models.AutoField(primary_key=True) 
    nome = models.CharField(max_length=200)
    
    class Meta:
        db_table = 'Tipo_documento'

class PlanArchivio(models.Model, EagerLoadingMixin):
    id = models.AutoField(primary_key=True) 
    stato_pratica = models.ForeignKey(StatoPratica, on_delete=models.DO_NOTHING, null=True, blank=True)
    title = models.CharField(max_length=100, null=True, blank=True)
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE)
    pratica = models.ForeignKey(Pratica, on_delete=models.CASCADE)
    tipo_pratica = models.CharField(max_length=100, null=True, blank=True)
    anno_di_lavorazione = models.IntegerField(blank=True, null=True)
    mese_di_lavorazione = models.IntegerField(blank=True, null=True)
    settimana_di_lavorazione = models.IntegerField(blank=True, null=True)
    anno_di_competenza = models.IntegerField(blank=True, null=True)
    periodo_di_competenza = models.IntegerField(blank=True, null=True)
    anno_standard = models.IntegerField(blank=True, null=True)
    mese_standard = models.IntegerField(blank=True, null=True)
    tariffa = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    spese = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    autorizzazione_fattura = models.SmallIntegerField(default=0)
    numero_fattura = models.CharField(max_length=100, null=True, blank=True)
    data_fatturazione = models.DateTimeField(null=True, blank=True)
    gestore = models.ForeignKey(Utente, on_delete=models.DO_NOTHING, related_name="plan_gestore")
    incaricato = models.ForeignKey(Utente, on_delete=models.SET_NULL, related_name="plan_incaricato", null=True, blank=True)
    fascicolo = models.ForeignKey(Fascicolo, on_delete=models.CASCADE)
    commessa = models.ForeignKey(TipoCommessa, on_delete=models.SET_NULL, null=True, blank=True)
    ore_standard = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    ore_effettive = models.DecimalField(max_digits=9, decimal_places=2, default=0, null=True, blank=True)
    extraplan_produzione = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    extraplan_cliente = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    ore_extra_review = models.DecimalField(max_digits=9, decimal_places=2, default=0)
    preso_in_carico = models.BooleanField(default=False)
    documenti = models.ForeignKey(TipoDocumento, on_delete=models.DO_NOTHING, null=True, blank=True)
    data_ora_creazione = models.DateTimeField(auto_now_add=True)
    data_ora_modifica = models.DateTimeField(auto_now=True)
    data_di_scadenza = models.DateTimeField(null=True, blank=True)
    data = models.DateField(null=True, blank=True)
    # studio = models.ForeignKey(Cliente, on_delete=models.SET_NULL)
    # periodicita = models.IntegerField(null=True, blank=True)
    # autorizzazione_ore_lavorate = models.CharField(max_length=100, null=True, blank=True)
    stato_pre_review = models.IntegerField(null=True, blank=True)


    class Meta:
        managed = False
        db_table = 'Plan_Archivio'

class PlanArchivioAllegati(models.Model):
    plan = models.ForeignKey(PlanArchivio, on_delete=models.CASCADE, related_name='attachments')
    nome = models.CharField(max_length=200)
    location = models.CharField(max_length=500)  # Percorso completo del file
    data_ora_creazione = models.DateTimeField(auto_now_add=True)
    data_ora_modifica = models.DateTimeField(auto_now=True)    
    
    class Meta:
        db_table = 'Plan_Archivio_Allegati'
        indexes = [
            models.Index(fields=['plan']),
        ]