from django.db import models
from django.core.validators import MinValueValidator
from degree.models import Curriculum
from admission.models import Admission
from utils.data import difference_between_semesters

# Create your models here.
class Student(models.Model):
    name = models.CharField(max_length=255)
    ira = models.FloatField(validators = [MinValueValidator(0)], null = True, blank = True)
    grr = models.CharField(max_length = 15)
    evasion_form = models.CharField(max_length = 255)
    evasion_year = models.PositiveIntegerField(null = True, blank = True)
    evasion_semester = models.PositiveIntegerField(null = True, blank = True)
    current_curriculum = models.ForeignKey(Curriculum)
    admission = models.ForeignKey(Admission)
    admission_form = models.CharField(max_length=255)
    klasses = models.ManyToManyField('klass.Klass', through = 'klass.StudentKlass')

    def get_time_in_degree(self):
        year_end = self.admission.degree.report_year
        semester_end = self.admission.degree.report_semester
        if self.evasion_year is not None:
            year_end = self.evasion_year
            if self.evasion_semester is None:
                semester_end = 2
            else:
                semester_end = self.evasion_semester

        year_start = self.admission.year
        semester_start = self.admission.semester
        difference = difference_between_semesters(year_start, semester_start, year_end, semester_end)
        return difference