
from django.db import models

# Create your models here.
from jalali_date import date2jalali

from django.conf import settings



class ArticleCategory(models.Model):
    parent = models.ForeignKey('ArticleCategory', null=True,blank=True, on_delete=models.CASCADE, verbose_name='دسته بندی والد')
    title = models.CharField(max_length=300, verbose_name='عنوان دسته بندی')
    url_title = models.CharField(max_length=300, unique=True, verbose_name='عنوان در url')
    is_active = models.BooleanField(verbose_name='فعال/غیرفعال', default=True)


    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'دسته بندی مقاله'
        verbose_name_plural = 'دسته بندی های مقاله'

class Article(models.Model):
     title = models.CharField(max_length=300, verbose_name='عنوان مقاله')
     slug = models.SlugField(max_length=400, db_index=True, allow_unicode=True, verbose_name='عنوان درurl')
     image = models.ImageField(upload_to='images/article', verbose_name='تصویر مقاله')
     short_description = models.TextField(verbose_name='توضیحات کوتاه')
     text = models.TextField(verbose_name=' متن مقاله')
     is_active = models.BooleanField(default=True, verbose_name='فعال/غیرفعال')
     selected_categories = models.ManyToManyField(ArticleCategory, verbose_name='دسته بندیها')
     author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name='نویسنده', null=True, blank=True,editable=False)
     create_date = models.DateField(auto_now_add=True, verbose_name='تاریخ ثبت')

     def __str__(self):
         return self.title

     def get_jalali_create_date(self):
         return date2jalali(self.create_date)

     def get_jalali_create_time(self):
         return self.create_date.strftime('%H:%M')


     class Meta:
          verbose_name = 'مقاله'
          verbose_name_plural = 'مقالات'

class ArticleComment(models.Model):
    article = models.ForeignKey(
        Article,
        on_delete=models.CASCADE,
        verbose_name='مقاله'
    )

    parent = models.ForeignKey(
        'self',
        null=True,
        blank=True,
        related_name='replies',
        on_delete=models.CASCADE,
        verbose_name='والد'
    )

    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        verbose_name='کاربر'
    )

    create_date = models.DateTimeField(
        auto_now_add=True,
        verbose_name='تاریخ ثبت'
    )

    text = models.TextField(verbose_name='متن نظر')

    def __str__(self):
        return f"{self.user} : {self.text[:20]}"

    class Meta:
        verbose_name = 'نظر مقاله'
        verbose_name_plural = 'نظرات مقاله'
