from django.db import models
from apps.channels.models import Channel
from apps.campaigns.models import Campaign, AdSpot


class AdbreakHistory(models.Model):
    """Track ad break occurrences across channels"""
    channel = models.ForeignKey(Channel, on_delete=models.CASCADE, related_name="analytics_adbreak_history")
    datetime = models.DateTimeField()
    day = models.CharField(max_length=255)
    time = models.CharField(max_length=255)
    duration = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        db_table = "analytics_adbreak_history"
        verbose_name = "Analytics Ad Break History"
        verbose_name_plural = "Analytics Ad Break Histories"
        ordering = ["-datetime"]


class SfrAnalytics(models.Model):
    """SFR analytics data for market share analysis"""
    sfr_channel_name = models.CharField(max_length=255)
    day = models.CharField(max_length=255)
    region = models.CharField(max_length=255)
    cible = models.CharField(max_length=255)
    indicateur = models.CharField(max_length=255)
    minute = models.CharField(max_length=255)
    purcent = models.CharField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        db_table = "sfr_analytics"
        verbose_name = "SFR Analytics"
        verbose_name_plural = "SFR Analytics"
        ordering = ["-created_at"]


class VastResponseGo(models.Model):
    """VAST response tracking for impression analytics"""
    datetime_timestamp = models.DateTimeField()
    ad_spot = models.ForeignKey(AdSpot, on_delete=models.CASCADE, null=True, blank=True)
    campaign = models.ForeignKey(Campaign, on_delete=models.CASCADE, null=True, blank=True)
    channel = models.ForeignKey(Channel, on_delete=models.CASCADE, null=True, blank=True)
    
    # VAST tracking events
    impression_status = models.CharField(max_length=50, null=True, blank=True)
    tracking_firstquartile_status = models.CharField(max_length=50, null=True, blank=True)
    tracking_midpoint_status = models.CharField(max_length=50, null=True, blank=True)
    tracking_thirdquartile_status = models.CharField(max_length=50, null=True, blank=True)
    tracking_completed_status = models.CharField(max_length=50, null=True, blank=True)
    
    # Request details
    user_agent = models.TextField(null=True, blank=True)
    ip_address = models.GenericIPAddressField(null=True, blank=True)
    
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        db_table = "vast_response_go"
        verbose_name = "VAST Response"
        verbose_name_plural = "VAST Responses"
        ordering = ["-datetime_timestamp"]


class RealtimeAdbreak(models.Model):
    """Real-time ad break notifications"""
    channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
    start_at = models.DateTimeField()
    duration = models.CharField(max_length=255)
    message = models.TextField(null=True, blank=True)
    status = models.CharField(max_length=50, default="active")
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        db_table = "realtime_adbreak"
        verbose_name = "Realtime Ad Break"
        verbose_name_plural = "Realtime Ad Breaks"
        ordering = ["-start_at"]
