from django.db import models
from django.contrib.auth.hashers import make_password, check_password

class School(models.Model):
    school_id = models.CharField(max_length=10)
    name = models.CharField(max_length=30)
    province = models.CharField(max_length=20)
    city = models.CharField(max_length=30)
    def __str__(self):
        return self.name

class User(models.Model):
    user_id = models.CharField(max_length=10)
    password = models.CharField(max_length=64)
    stu_id = models.CharField(max_length=20)  # 学号
    nickname = models.CharField(max_length=15)
    realname = models.CharField(max_length=10, null=True)
    gender = models.SmallIntegerField()  # 1是男, 2是女, 3以上是其他
    birthday = models.DateField(null=True)
    mobile = models.CharField(max_length=21)  # 手机号是21位
    email = models.EmailField(null=True)
    updatetime = models.DateField(auto_now_add=True)

    school_index = models.ForeignKey(School, on_delete=models.CASCADE)
    major = models.CharField(max_length=30)
    entry_date = models.DateField()
    def __str__(self):
        return self.realname

class Group(models.Model):
    group_id = models.CharField(max_length=10)
    name = models.CharField(max_length=50)
    introduction = models.CharField(max_length=100, default="无")
    establish_date = models.DateField(auto_now=True)
    update_date = models.DateField(auto_now_add=True)
    is_public = models.BooleanField()
    max_member = models.PositiveSmallIntegerField()
    def __str__(self):
        return self.group_name

class Group_User(models.Model):
    group_index = models.ForeignKey(Group, on_delete=models.CASCADE)
    user_index = models.ForeignKey(User, on_delete=models.CASCADE)
    privilege = models.SmallIntegerField()  # 1是创建者, 2是管理员, 3是普通成员
    visible = models.BooleanField(default=True)
    update_time = models.DateTimeField(auto_now_add=True)


class Affairs(models.Model):
    name = models.CharField(max_length=20)
    type = models.SmallIntegerField()  # 1是课程, 2是目标, 3是活动
    place = models.CharField(max_length=30, default="未填写")
    details = models.CharField(max_length=100, default="无")
    organizer_index = models.ForeignKey(User)
    def __str__(self):
        return self.name


class SingleAffairsTime(models.Model):
    ''' 单一时间 '''
    affair_index = models.ForeignKey(Affairs)
    dateTime = models.DateTimeField()


class SuccessiveAffairsTime(models.Model):
    ''' 连续时间 '''
    affair_index = models.ForeignKey(Affairs)
    time = models.TimeField()
    startData = models.DateField()
    lastData = models.DateField()
    every = models.SmallIntegerField()  # 从最低一位到第7位分别对于星期一到日


class HaveAffair(models.Model):
    user_index = models.ForeignKey(User)
    affair_index = models.ForeignKey(Affairs)


class InGroup(models.Model):
    user_index = models.ForeignKey(User)
    group_index = models.ForeignKey(Group)
    role_index = models.ForeignKey(Group_User)
 
