from django.db import models
from account.models import User
from django.utils.text import slugify
from django.utils.timezone import now
from product.models import SubCategoryModel


class BlogCategoryModel(models.Model):
    title = models.CharField(max_length=200, verbose_name='عنوان')

    class Meta:
        verbose_name = 'دسته بندی بلاگ'
        verbose_name_plural = 'دسته بندی های بلاگ'

    def __str__(self):
        return self.title

class BlogModel(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blogs', verbose_name='نویسنده')
    title = models.CharField(max_length=200, verbose_name='عنوان')
    slug = models.SlugField(max_length=200, unique=True, blank=True)
    content = models.TextField(verbose_name='محتوا')
    summery = models.TextField(verbose_name='خلاصه')
    category = models.ForeignKey(BlogCategoryModel, on_delete=models.SET_NULL, null=True, related_name='blogs', verbose_name='دسته بندی')
    created_at = models.DateTimeField(default=now, editable=False, verbose_name='ساخته شده در')
    updated_at = models.DateTimeField(auto_now=True, verbose_name='ابدیت شده در')
    is_published = models.BooleanField(default=False, verbose_name='انتشار در وبسایت')
    cover_image = models.ImageField(upload_to='blog_covers/', blank=True, verbose_name='کاور بلاگ')
    views = models.PositiveIntegerField(default=0, verbose_name='بازدید')
    meta_description = models.CharField(max_length=300, help_text='این فیلد را حتما پر کنید', verbose_name='متا دیسکریپشن')
    meta_keywords = models.CharField(max_length=300, help_text='این فیلد را حتما پر کنید', verbose_name='متا کیورد')
    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.title)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = 'بلاگ'
        verbose_name_plural = 'بلاگ ها'


# class Comment(models.Model):
#     blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments')
#     user = models.ForeignKey(User, on_delete=models.CASCADE)
#     content = models.TextField()
#     created_at = models.DateTimeField(default=now)

#     def __str__(self):
#         return f'Comment by {self.user} on {self.blog}'