from django.db import models
from django.utils import timezone
from .utils import *
from django.urls import reverse
 
 
 

class CeremonyCategory(models.Model):
    parent = models.ForeignKey(
        'self',
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='children'
    )

    name = models.CharField(max_length=255)

    created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    def __str__(self):
        return self.name
    def get_parents(self):
        parents = []
        current = self
        while current:
            parents.append(current)
            current = current.parent
        return parents[::-1] 

        
    def get_absolute_url(self):
        return reverse(
            "category_detail",
            kwargs={"parent_id": self.id}
        )


class Occasion(models.Model):
    title = models.CharField(max_length=200)
    is_active_video = models.BooleanField(default=False)
    is_active_audio =  models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title
    
class Tag(models.Model):
     name = models.CharField(max_length=255)
     def __str__(self):
         return self.name

class Ceremony(models.Model):
    category = models.ForeignKey(
        CeremonyCategory,
        on_delete=models.CASCADE,
        related_name='ceremonies'
    )
    occasion =models.ForeignKey(
        Occasion,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ceremony_occasion'
        
    )

    title = models.CharField(max_length=255)

    poster = models.CharField(max_length=255, blank=True)

    date = models.DateField(default=timezone.now)

    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

        
    def get_absolute_url(self):
        return reverse(
            "ceremony_detail",
            kwargs={"pk": self.id}
        )

 
    
class CeremonyFile(models.Model):
    FILE_TYPES = (
        ('image', 'Image'),
        ('video', 'Video'),
        ('audio', 'Audio'),
    )
    STYLE_TYPES = (
        ('zamineh', 'زمینه'),
        ('shoore', 'شور'),
        ('namahanag', 'نماهنگ'),
        ('rozeh', 'روضه'),
        ('naghmeh', 'نغمه'),
        ('vahed', 'واحد'),
        ('tak', 'تک'),
        ('noheh', 'نوحه'),


        
    )


    ceremony = models.ForeignKey(
        Ceremony,
        on_delete=models.CASCADE,
        related_name='files'
    )
    occasion =models.ForeignKey(
        Occasion,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ceremony_file_occasion'
        
    )

    file_type = models.CharField(max_length=10, choices=FILE_TYPES)
    file_style = models.CharField(max_length=10, choices=STYLE_TYPES)
    
    poster_desktop = models.CharField(max_length=255,null=True, blank=True)
    poster = models.CharField(max_length=255,null=True, blank=True)
    thumbnail = models.CharField(max_length=255,null=True, blank=True)
    
    
    
    file = models.CharField(max_length=255, blank=True)

    title = models.CharField(max_length=255, blank=True)

    is_pin = models.BooleanField(default=False)
    
    tags = models.ManyToManyField(Tag)
    
    quality = models.CharField(max_length=255, blank=True)

    uploaded_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return f"{self.ceremony.title} - {self.file_type}"
class RingbackTone(models.Model):
    title = models.CharField(max_length=255)

    code_mtn = models.CharField(max_length=50)
    code_mci = models.CharField(max_length=50)

    occasion =models.ForeignKey(
        Occasion,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name='ring_back_tones'
        
    )


    cover = models.CharField(max_length=255,null=True, blank=True)

    audio_file = models.CharField(max_length=255,null=True, blank=True)
      
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title