from django.db import models
from django.utils.text import slugify


class FAQCategory(models.Model):
    tenant      = models.ForeignKey(
        'tenants.Tenant', on_delete=models.CASCADE,
        null=True, blank=True, related_name='faq_categories'
    )
    name        = models.CharField(max_length=100)
    slug        = models.SlugField(max_length=120, blank=True)
    description = models.TextField(blank=True)
    icon_class  = models.CharField(max_length=100, blank=True)
    order       = models.PositiveIntegerField(default=1)
    is_active   = models.BooleanField(default=True)

    class Meta:
        ordering = ['order']
        unique_together = [('tenant', 'slug')]
        verbose_name = 'FAQ Category'
        verbose_name_plural = 'FAQ Categories'

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        super().save(*args, **kwargs)


class FAQItem(models.Model):
    category  = models.ForeignKey(FAQCategory, on_delete=models.CASCADE, related_name='items')
    question  = models.CharField(max_length=400)
    answer    = models.TextField()
    added_by  = models.ForeignKey(
        'accounts.User', on_delete=models.SET_NULL,
        null=True, blank=True, related_name='faq_items'
    )
    order     = models.PositiveIntegerField(default=1)
    is_active = models.BooleanField(default=True)

    class Meta:
        ordering = ['category__order', 'order']
        verbose_name = 'FAQ Item'
        verbose_name_plural = 'FAQ Items'

    def __str__(self):
        return self.question
