from django.db import models

class Country(models.Model):
    code = models.CharField(max_length=3, unique=True)
    name = models.CharField(max_length=100)

    class Meta:
        verbose_name = 'País'
        verbose_name_plural = 'Países'

    def __str__(self):
        return self.name


class GeoScenario(models.Model):
    name = models.CharField(max_length=255, help_text='Nombre del escenario geográfico base')
    upload_date = models.DateTimeField(auto_now_add=True)
    country = models.ForeignKey(Country, on_delete=models.SET_NULL, null=True)
    geographic_field_name = models.CharField(max_length=100, help_text='Columna con el identificador geográfico (ej. N_URBANO, PUEBLO)')
    csv_file = models.FileField(upload_to='geo_scenarios/')

    class Meta:
        verbose_name = 'Escenario Geográfico'
        verbose_name_plural = 'Escenarios Geográficos'

    def __str__(self):
        return f"{self.name} ({self.country})"


class OptScenario(models.Model):
    geo_scenario = models.ForeignKey(GeoScenario, on_delete=models.CASCADE, related_name='opt_scenarios')
    name = models.CharField(max_length=255, help_text='Nombre del escenario de optimización')
    type_of_waste = models.CharField(max_length=100, help_text='Tipo de residuo (ej. orgánico, reciclable)')
    strategy = models.CharField(max_length=100, help_text='Método de optimización utilizado')
    upload_date = models.DateTimeField(auto_now_add=True)
    optimized_csv = models.FileField(upload_to='opt_scenarios/')

        # Nuevo campo:
    dispatch_json = models.FileField(
        upload_to='opt_scenarios/json/', 
        blank=True, 
        null=True, 
        help_text='Archivo JSON con el resultado de despacho por ruta'
    )

    class Meta:
        verbose_name = 'Escenario de Optimización'
        verbose_name_plural = 'Escenarios de Optimización'

    def __str__(self):
        return f"{self.name} ({self.type_of_waste})"
