from django.db import models

# Create your models here.
class Professor_Tables(models.Model):
    username = models.CharField(max_length = 10 , unique = True)
    Name = models.CharField(max_length=50)
    password = models.CharField(max_length=15)
    designation = models.CharField(max_length=30)
    date_of_birth = models.DateField()
    def __str__(self):
        return self.username

class Courses_Table(models.Model):
    course_id = models.CharField(max_length = 6,unique = True)
    course_name = models.CharField(max_length=50)
    course_credits = models.IntegerField()
    course_alias = models.CharField(max_length = 15,default = "None")
    def __str__(self):
        return self.course_name

class Students_Table(models.Model):
    student_dept = models.CharField(max_length = 3)
    student_year = models.CharField(max_length=4)
    student_section = models.CharField(max_length=1)
    student_rollno = models.CharField(max_length = 2)
    student_name = models.CharField(max_length=50)
    class Meta:
        unique_together = ['student_dept','student_year','student_section','student_rollno']
    def __str__(self):
        return self.student_rollno

class Teacher_Course(models.Model):
    prof = models.ForeignKey(Professor_Tables,on_delete=models.CASCADE)
    courses_taken = models.ForeignKey(Courses_Table,on_delete=models.CASCADE)
    batch = models.CharField(max_length=4)
    section = models.CharField(max_length=1)
    class Meta:
        unique_together = ['prof','courses_taken','batch','section']
    def __str__(self):
        return str(self.prof) + ":" + str(self.courses_taken)

class Student_course(models.Model):
    student = models.ForeignKey(Students_Table,on_delete=models.CASCADE)
    course = models.ForeignKey(Courses_Table,on_delete=models.CASCADE)
    class Meta:
        unique_together = ['student','course']
    def __str__(self):
        return str(self.student) + " " + str(self.course)

class Student_attendance(models.Model):
    student_course = models.OneToOneField(Student_course,on_delete=models.CASCADE)
    classes_held = models.IntegerField(default = 0)
    classes_attended = models.IntegerField(default = 0)
    attendance_persentage = models.FloatField(default = 0.0)
    def __str__(self):
        return str(self.student_course) + ":" + str(self.attendance_persentage)

class Date_wise_attendance(models.Model):
    student_attendance = models.ForeignKey(Student_attendance,on_delete=models.CASCADE)
    date = models.DateField()
    status = models.CharField(max_length = 8,default = "Absent")
    number_of_hours = models.IntegerField(default=1)
    def __str__(self):
        return str(self.student_attendance) + ":" + str(self.date)

class periodicals_marks(models.Model):
    student_course = models.OneToOneField(Student_course,on_delete=models.CASCADE)
    periodicals_1 = models.FloatField(default=0.0)
    periodicals_2 = models.FloatField(default=0.0)
    def __str__(self):
        return str(Student_course)