from django.db import models
from django.utils import timezone
from django.conf import settings
from core.models import BaseModel
import datetime

class NoticeCategory(models.TextChoices):
    GENERAL   = "general",   "General"
    EXAM      = "exam",      "Exam"
    ADMISSION = "admission", "Admission"
    EVENT     = "event",     "Event"
    RESULT    = "result",    "Result"
    HOLIDAY   = "holiday",   "Holiday"
    OTHER     = "other",     "Other"


class NoticePriority(models.TextChoices):
    LOW    = "low",    "Low"
    MEDIUM = "medium", "Medium"
    HIGH   = "high",   "High"
    URGENT = "urgent", "Urgent"


class Notice(BaseModel):
    title    = models.CharField(max_length=255)
    excerpt  = models.TextField(blank=True)
    body     = models.TextField(blank=True)           # full rich content
    category = models.CharField(max_length=30, choices=NoticeCategory.choices, default=NoticeCategory.GENERAL)
    priority = models.CharField(max_length=10, choices=NoticePriority.choices, default=NoticePriority.MEDIUM)

    
    date       = models.DateField(default=datetime.date.today)
    expires_at = models.DateField(null=True, blank=True)   # auto-hide after this date
    is_new     = models.BooleanField(default=True)
    is_pinned  = models.BooleanField(default=False)        # pin to top of list
    is_published = models.BooleanField(default=True)
    image = models.ImageField(upload_to="notices/images/", blank=True)
    attachment = models.FileField(upload_to="notices/attachments/", blank=True)
    attachment_url  = models.URLField(blank=True)          # PDF / file link
    attachment_name = models.CharField(max_length=255, blank=True)

    
    views      = models.PositiveIntegerField(default=0)
    
    def __str__(self):
        return self.title

    def increment_views(self):
        self.views += 1
        self.save(update_fields=["views"])

    class Meta:
        ordering = ["-is_pinned", "-date", "-created_at"]
