from django.db import models

class Cliente(models.Model):
    STATO_CHOICES = [
        ('Cliente', 'Cliente'),
        ('Prospect', 'Prospect'),
        ('Ex-Cliente', 'Ex-Cliente'),
    ]
    CATEGORIA_CHOICES = [
        ('Privato', 'Privato'),
        ('Azienda', 'Azienda'),
    ]

    Nome = models.CharField(max_length=100)
    Cognome = models.CharField(max_length=100)
    Codice_Fiscale = models.CharField(max_length=16, unique=True)
    Email = models.EmailField()
    Telefono = models.CharField(max_length=20)
    Data_di_Nascita = models.DateField()
    Lavoro = models.CharField(max_length=100)
    Stato = models.CharField(max_length=20, choices=STATO_CHOICES)
    Categoria = models.CharField(max_length=20, choices=CATEGORIA_CHOICES)
    Importo_Portafoglio_Attuale = models.DecimalField(max_digits=15, decimal_places=2, default=0.00, editable=False)

    def __str__(self):
        return f"{self.Nome} {self.Cognome}"

class Portafoglio(models.Model):
    PROFILO_RISCHIO_CHOICES = [
        ('Conservativo', 'Conservativo'),
        ('Bilanciato', 'Bilanciato'),
        ('Aggressivo', 'Aggressivo'),
    ]
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='portafogli')
    Nome_Portafoglio = models.CharField(max_length=100)
    Profilo_di_Rischio = models.CharField(max_length=20, choices=PROFILO_RISCHIO_CHOICES)
    Composizione_Asset_Allocation = models.TextField(blank=True, null=True)
    Data_Inizio = models.DateField()
    Valore_Iniziale = models.DecimalField(max_digits=15, decimal_places=2)
    Valore_Corrente = models.DecimalField(max_digits=15, decimal_places=2)
    Note = models.TextField(blank=True, null=True)

    def __str__(self):
        return f"{self.Nome_Portafoglio} ({self.cliente})"

class Attivita(models.Model):
    TIPO_CHOICES = [
        ('Chiamata', 'Chiamata'),
        ('Riunione', 'Riunione'),
        ('Email', 'Email'),
        ('To-Do', 'To-Do'),
        ('Avviso Cedola', 'Avviso Cedola'),
        ('Scadenza Obbligazione', 'Scadenza Obbligazione'),
        ('Revisione Annuale', 'Revisione Annuale'),
    ]
    STATO_CHOICES = [
        ('Pianificato', 'Pianificato'),
        ('Completato', 'Completato'),
    ]
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='attivita')
    Data = models.DateField()
    Ora = models.TimeField(blank=True, null=True)
    Tipo = models.CharField(max_length=30, choices=TIPO_CHOICES)
    Stato = models.CharField(max_length=20, choices=STATO_CHOICES, default='Pianificato')
    Note = models.TextField(blank=True, null=True)

    def __str__(self):
        return f"{self.Tipo} - {self.Data} - {self.cliente}"

class Documento(models.Model):
    TIPO_CHOICES = [
        ('Contratto', 'Contratto'),
        ('KYC', 'KYC'),
        ('Report', 'Report'),
        ('Altro', 'Altro'),
    ]
    cliente = models.ForeignKey(Cliente, on_delete=models.CASCADE, related_name='documenti')
    Nome_Documento = models.CharField(max_length=100)
    Tipo = models.CharField(max_length=20, choices=TIPO_CHOICES)
    Data_Caricamento = models.DateField(auto_now_add=True)
    Data_di_Scadenza = models.DateField(blank=True, null=True)
    File = models.FileField(upload_to='documenti/') # Placeholder, will be configured for S3
    Condivisibile = models.BooleanField(default=False)

    def __str__(self):
        return f"{self.Nome_Documento} ({self.cliente})"