from django.db import models
from django.core.validators import FileExtensionValidator

# Create your models here.
class Program(models.Model):
    CATEGORY_CHOICES = [
        ('scholarship', 'Scholarship'),
        ('mentorship', 'Mentorship'),
        ('workshop', 'Workshop'),
    ]

    title = models.CharField(max_length=200)
    description = models.TextField()
    image = models.ImageField(
        upload_to='programs/',
        null=True,
        blank=True,
        validators=[FileExtensionValidator(['jpg', 'jpeg', 'png'])],
        help_text='Recommended image size: 1920x800px, max 300KB, JPEG format'
    )
    category = models.CharField(max_length=100, choices=CATEGORY_CHOICES)
    features = models.JSONField(
        default=list,
        help_text='List of program features'
    )
    created_at = models.DateTimeField(auto_now_add=True, db_index=True)
    active = models.BooleanField(default=True)
    order = models.PositiveIntegerField(
        default=0,
        help_text='Order in which the program appears (lower numbers appear first)'
    )

    class Meta:
        ordering = ['order', 'created_at']
        verbose_name = 'Program'
        verbose_name_plural = 'Programs'

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        # Ensure features is always a list
        if not self.features:
            self.features = []
        super().save(*args, **kwargs)