from django.db import models
from django.conf import settings

class BusinessModelCanvas(models.Model):
    """
    Le BMC en 9 blocs. Se débloque après le Business Plan.
    """
    entrepreneur = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='bmc')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    # --- INFRASTRUCTURE ---
    key_partners = models.TextField(verbose_name="Partenaires Clés")
    key_activities = models.TextField(verbose_name="Activités Clés")
    key_resources = models.TextField(verbose_name="Ressources Clés")

    # --- OFFRE ---
    value_proposition = models.TextField(verbose_name="Proposition de Valeur")

    # --- CLIENTS ---
    customer_relationships = models.TextField(verbose_name="Relation Client")
    channels = models.TextField(verbose_name="Canaux de Distribution")
    customer_segments = models.TextField(verbose_name="Segments Clients")

    # --- FINANCES ---
    cost_structure = models.TextField(verbose_name="Structure de Coûts")
    revenue_streams = models.TextField(verbose_name="Flux de Revenus")

    def __str__(self):
        return f"BMC de {self.entrepreneur.email}"


class PitchDeck(models.Model):
    """
    Le Pitch Deck final. Se débloque après le BMC.
    Structure basée sur le modèle 'Green Lands' fourni.
    """
    entrepreneur = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='pitch_deck')
    created_at = models.DateTimeField(auto_now_add=True)

    # --- 1. INTRODUCTION (PItchcomplet pages 1-2) ---
    project_name = models.CharField(max_length=200, blank=True, default="", verbose_name="Nom du Projet")
    tagline = models.CharField(max_length=255, blank=True, default="", verbose_name="Slogan / Accroche")
    promoter_presentation = models.TextField(blank=True, default="", verbose_name="Présentation du promoteur (page 1)")
    project_description = models.TextField(blank=True, default="", verbose_name="Description du projet (page 2)")
    logo = models.ImageField(upload_to='pitch/logos/', blank=True, null=True)

    # --- 2. PROBLÈME & SOLUTION (pages 3-4) ---
    problem = models.TextField(blank=True, default="", verbose_name="Quel problème résolvez-vous ?")
    solution = models.TextField(blank=True, default="", verbose_name="Quelle est votre solution innovante ?")

    # --- 3. MARCHÉ & MODÈLE ---
    market_potential = models.TextField(blank=True, default="", verbose_name="Clients potentiels & Taille du marché")
    business_model = models.TextField(blank=True, default="", verbose_name="Modèle Économique (Comment gagnez-vous de l'argent ?)")

    # --- 4. RÉALISATIONS (Traction) ---
    achievements_text = models.TextField(blank=True, default="", verbose_name="Vos réalisations (écrit)")

    # --- 5. FUTUR & BESOINS ---
    roadmap = models.TextField(blank=True, default="", verbose_name="Vos prochaines étapes")
    needs = models.TextField(blank=True, default="", verbose_name="Vos besoins (Financiers & Matériels)")
    vision_5_years = models.TextField(blank=True, default="", verbose_name="Votre vision d'ici 5 ans")

    # --- 6. CONCLUSION ---
    final_pitch = models.TextField(blank=True, default="", verbose_name="Le mot de la fin pour convaincre")

    def __str__(self):
        return f"Pitch Deck de {self.entrepreneur.email}"


class PitchImage(models.Model):
    """
    Images de réalisations liées à un Pitch Deck.
    """
    pitch = models.ForeignKey(PitchDeck, on_delete=models.CASCADE, related_name='images')
    image = models.ImageField(upload_to='pitch/images/', verbose_name="Image de réalisation")
    caption = models.CharField(max_length=255, blank=True, verbose_name="Légende")

    def __str__(self):
        return self.caption or f"Image pour {self.pitch.project_name}"


class AssistantChatMessage(models.Model):
    """
    Historique des messages du chat assistant IA (par page : market, bmc, bp, pitch).
    """
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='assistant_messages')
    page = models.CharField(max_length=20)  # market, bmc, bp, pitch
    role = models.CharField(max_length=20)  # user, assistant
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['created_at']

    def __str__(self):
        return f"{self.page} [{self.role}] {self.content[:50]}..."