from django.db import models
from django.utils.text import slugify
from departments.models import Department
from teacher_management.models import Teacher
from status.models import Status
from organization.models import BaseTenantModel

class Batch(BaseTenantModel):
    batch_id = models.AutoField(primary_key=True)
    batch_name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=255, unique=True, blank=True)
    department = models.ForeignKey(Department, on_delete=models.CASCADE)
    start_year = models.IntegerField()
    end_year = models.IntegerField()
    advisor = models.ForeignKey(Teacher, on_delete=models.SET_NULL, null=True, blank=True)
    status = models.ForeignKey(Status, on_delete=models.SET_NULL, null=True, blank=True, limit_choices_to={'type': 'batch'})

    class Meta:
        ordering = ['batch_name']
        verbose_name_plural = "Batches"

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(f"{self.department.department_name}-{self.batch_name}")
        super().save(*args, **kwargs)

    def __str__(self):
        return f"{self.batch_name} ({self.department.department_name})"