from django.db import models
from Models.Empresa import Empresa
from Models.contacto_model import Contacto
from api_login.models import Usuario
from Models.estado_oportunidad_venta import EstadoOportunidadVenta

class OportunidadDeVenta(models.Model):
    id = models.AutoField(primary_key=True)
    nombre = models.CharField(max_length=255)

    # Relaciones correctas con las tablas
    empresa = models.ForeignKey(
        Empresa, on_delete=models.CASCADE, db_column="empresa_id", related_name="oportunidades"
    )
    contacto = models.ForeignKey(
        Contacto, on_delete=models.CASCADE, db_column="contacto_id", related_name="oportunidades"
    )
    usuario_responsable = models.ForeignKey(
        Usuario, on_delete=models.CASCADE, db_column="usuario_responsable_id", related_name="oportunidades"
    )
    estado_oportunidad = models.ForeignKey(
        EstadoOportunidadVenta, on_delete=models.CASCADE, db_column="estado_oportunidad_id", related_name="oportunidades"
    )

    valor_estimado = models.DecimalField(max_digits=12, decimal_places=2, null=True, blank=True)
    fecha_estimada_cierre = models.DateField()
    origen = models.CharField(max_length=100)
    fecha_creacion = models.DateTimeField()
    fecha_ultima_actualizacion = models.DateTimeField()
    deleted_at = models.DateTimeField(null=True, blank=True)

    # Relación con columna del workflow
    column_workflow = models.ForeignKey(
        'ColumnWorkflow', on_delete=models.SET_NULL, null=True, db_column='column_workflow_id', related_name='oportunidades'
    )

    class Meta:
        db_table = 'oportunidad_de_venta'
        managed = False  # Si la tabla ya existe, mantenelo en False

    def __str__(self):
        return self.nombre


class ColumnWorkflow(models.Model):
    id = models.AutoField(primary_key=True)
    workflow_id = models.IntegerField()
    nombre = models.CharField(max_length=1000, null=True, blank=True)
    orden = models.IntegerField(null=True, blank=True)
    created_at = models.DateTimeField(null=True, blank=True)
    updated_at = models.DateTimeField(null=True, blank=True)
    deleted_at = models.DateTimeField(null=True, blank=True)

    class Meta:
        db_table = 'column_workflow'
        managed = False

    def __str__(self):
        return self.nombre or f"Columna {self.id}"



