from django.db import models
from ckeditor.fields import RichTextField
from django.utils.html import strip_tags

class Article(models.Model):
    CATEGORY_CHOICES = [
        ('cssc', 'CSSC'),
        ('sctc', 'SCTC'),
    ]

    class Meta:
        verbose_name = "บทความ"
        verbose_name_plural = "Activities" 

    title = models.CharField(max_length=200)
    content = RichTextField()
    cover_image = models.ImageField(upload_to='covers/%Y/%m', null=True, blank=True)
    category = models.CharField(
        max_length=10, 
        choices=CATEGORY_CHOICES, 
        default='cssc'  # เปลี่ยน default ได้ตามที่ต้องการ เช่น 'sctc'
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

    def get_two_lines(self):
        raw_text = strip_tags(self.content)
        lines = [line.strip() for line in raw_text.splitlines() if line.strip()]
        if not lines:
            return ''
        line1 = lines[0]
        if len(lines) > 1:
            line2 = ' '.join(lines[1:])
            return line1 + ' ' + line2
        else:
            return line1


class ArticleImage(models.Model):
    article = models.ForeignKey(
        Article,
        on_delete=models.CASCADE,
        related_name='gallery'
    )
    image = models.ImageField(upload_to='gallery/%Y/%m', blank=True, null=True)
    caption = models.CharField(max_length=200, blank=True)

    def __str__(self):
        return f"Image of {self.article.title} - {self.caption or 'No Caption'}"


# ------------------------------------------------------------------
# โมเดลสำหรับ Innovation
# ------------------------------------------------------------------

class Innovation(models.Model):
    CATEGORY_CHOICES = [
        ('cssc', 'CSSC'),
        ('sctc', 'SCTC'),
    ]

    class Meta:
        verbose_name = "นวัตกรรม"
        verbose_name_plural = "Innovation"

    title = models.CharField(max_length=200)
    content = RichTextField()
    cover_image = models.ImageField(upload_to='innovation_covers/%Y/%m', null=True, blank=True)
    category = models.CharField(
        max_length=10, 
        choices=CATEGORY_CHOICES, 
        default='cssc'
    )
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

    def get_two_lines(self):
        raw_text = strip_tags(self.content)
        lines = [line.strip() for line in raw_text.splitlines() if line.strip()]
        if not lines:
            return ''
        line1 = lines[0]
        if len(lines) > 1:
            line2 = ' '.join(lines[1:])
            return line1 + ' ' + line2
        else:
            return line1


class InnovationImage(models.Model):
    innovation = models.ForeignKey(
        Innovation,
        on_delete=models.CASCADE,
        related_name='gallery'
    )
    image = models.ImageField(upload_to='innovation_gallery/%Y/%m', blank=True, null=True)
    caption = models.CharField(max_length=200, blank=True)

    def __str__(self):
        return f"Image of {self.innovation.title} - {self.caption or 'No Caption'}"
