from django.db import models
from admissions.models import Program


class Course(models.Model):
    YEAR_1 = 1
    YEAR_2 = 2
    YEAR_3 = 3

    YEAR_CHOICES = [
        (YEAR_1, 'Year 1'),
        (YEAR_2, 'Year 2'),
        (YEAR_3, 'Year 3'),
    ]

    program = models.ForeignKey(Program, on_delete=models.CASCADE, related_name='courses')
    name = models.CharField(max_length=200)
    code = models.CharField(max_length=20, blank=True, help_text='e.g. EI-101')
    description = models.TextField(blank=True)
    year = models.PositiveSmallIntegerField(choices=YEAR_CHOICES, default=YEAR_1)
    is_active = models.BooleanField(default=True)
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['program', 'year', 'name']
        unique_together = ['program', 'code']

    def __str__(self):
        code_part = f' [{self.code}]' if self.code else ''
        return f"{self.name}{code_part} — {self.program.name} Yr{self.year}"
