from django.db import models
from django.urls import reverse

class SliderModel(models.Model):
    id = models.BigAutoField(auto_created=True, db_index=True, primary_key=True, serialize=False, verbose_name='ID')
    link = models.URLField(verbose_name='لینک')
    title = models.CharField(max_length=50, verbose_name='عنوان')
    description = models.TextField(verbose_name='توضیحات')
    image = models.ImageField(upload_to='slider_image/', blank=True, null=True, verbose_name='عکس اسلایدر')
    video = models.FileField(upload_to='slider_video/', blank=True, null=True, verbose_name='ویدیواسلایدر')

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'اسلایدر'
        verbose_name_plural = 'اسلایدر ها'


class HomeImageModel(models.Model):
    image1 = models.ImageField(upload_to='diff_section/', verbose_name='عکس اول')
    image2 = models.ImageField(upload_to='diff_section/', verbose_name='عکس دوم')
    title1 = models.CharField(max_length=50, verbose_name='عنوان عکس اول')
    title2 = models.CharField(max_length=50, verbose_name='عنوان عکس دوم')
    description1 = models.TextField(verbose_name='توضیحات عکس اول')
    description2 = models.TextField(verbose_name='توضیحات عکس دوم')
    link1 = models.URLField(verbose_name='لینک عکس اول')
    link2 = models.URLField(verbose_name='لینک عکس دوم')
    video1 = models.FileField(verbose_name='ویدیو اول', upload_to='diff_section/', null=True)
    video2 = models.FileField(verbose_name='ویدیو دوم', upload_to='diff_section/', null=True)
    unique = (('unique', 'unique'),)
    unique_filed = models.CharField(max_length=20, choices=unique, unique=True, default='unique', verbose_name='یونیک فیلد')

    def __str__(self):
        return f'{self.title1} - {self.title2}'
        
    class Meta:
        verbose_name = 'مدل عکس تفاوت خانه'
        verbose_name_plural = 'مدل عکس تفاوت خانه'


class ShowCaseSlider(models.Model):
    title = models.CharField(max_length=30, verbose_name='عنوان')
    description = models.CharField(max_length=150, verbose_name='توضیحات')
    image1 = models.ImageField(upload_to='show_case/', verbose_name='۱عکس', blank=True, null=True)
    image2 = models.ImageField(upload_to='show_case/', verbose_name='۲عکس', blank=True, null=True)
    image3 = models.ImageField(upload_to='show_case/', verbose_name='۳عکس', blank=True, null=True)
    background_image = models.FileField(upload_to='show_case/', verbose_name='عکس بکگراند', blank=True, null=True)
    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'مدل نمایش کیس'
        verbose_name_plural = 'مدل نمایش کیس ها'

from django.contrib.contenttypes.models import ContentType
class LearnVideoModel(models.Model):
    title = models.CharField(max_length=100, verbose_name='عنوان ویدیو')
    section = models.CharField(max_length=40, verbose_name='بخش مربوطه')
    video = models.FileField(upload_to='learning_video/', verbose_name='ویدیو')
    content_type = models.OneToOneField(
        ContentType,
        on_delete=models.CASCADE,
        verbose_name='مدل مرتبط', blank=True, null=True, unique=True
    )
    icon = models.CharField(max_length=30, verbose_name='ایکون')
    viewd = models.BooleanField(default=False, verbose_name='تماشا شده')
    @property
    def section_url(self):
        if not self.content_type:
            return None  

        app_label = self.content_type.app_label
        model_name = self.content_type.model

        try:
            return reverse(f'admin:{app_label}_{model_name}_changelist')
        except Exception:
            return None



    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'ویدیوی اموزشی'
        verbose_name_plural = 'ویدیوی های اموزشی'