from django.db import models
import uuid

class AdminAccess(models.Model):
    """Armazena a chave privada única para acesso ao painel."""
    private_key = models.CharField(max_length=255, unique=True, default=uuid.uuid4)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"Key created on {self.created_at}"

class Lottery(models.Model):
    """Configurações específicas de cada tipo de loteria."""
    LOTTERY_TYPES = [
        ('mega_sena', 'Mega-Sena'),
        ('quina', 'Quina'),
        ('dupla_sena', 'Dupla Sena'),
        ('lotomania', 'Lotomania'),
        ('lotofacil', 'Lotofácil'),
        ('timemania', 'Timemania'),
        ('dia_de_sorte', 'Dia de Sorte'),
        ('federal', 'Federal'),
        ('super_sete', 'Super Sete'),
        ('maismilionaria', '+Milionária'),
    ]
    name = models.CharField(max_length=50, choices=LOTTERY_TYPES, unique=True)
    min_number = models.IntegerField(default=1)
    max_number = models.IntegerField()
    numbers_to_draw = models.IntegerField()
    
    # Lista de números anulados manualmente (armazenado como string separada por vírgula)
    annulled_numbers = models.TextField(default="", blank=True)
    
    # Novas configurações solicitadas
    analysis_window = models.IntegerField(default=0, help_text="0 para todos os sorteios")
    ai_predictions = models.TextField(default="", blank=True, help_text="Números quentes sugeridos pela IA")

    def __str__(self):
        return self.get_name_display()

class DrawResult(models.Model):
    """Resultados reais dos sorteios da Caixa."""
    lottery = models.ForeignKey(Lottery, on_delete=models.CASCADE, related_name='draws')
    draw_number = models.IntegerField()
    draw_date = models.DateField()
    numbers = models.CharField(max_length=255) # Ex: "05,12,34,45,56,59"
    
    class Meta:
        unique_together = ('lottery', 'draw_number')
        ordering = ['-draw_date']

    def __str__(self):
        return f"{self.lottery.name} - Concurso {self.draw_number}"
