from django.db import models


class EsInvigilatorSetting(models.Model):
    IS_FLOATING_TO_CODE = {
        "false": 0,
        "true": 1,
    }
    IS_INCLUSIVE_TO_CODE = {
        "false": 0,
        "true": 1,
    }
    QUANTITY_MODE_TO_CODE = {
        "fixed": 1,
        "ratio": 2,
    }
    ANY_ROLE_ID = 0

    is_floating = models.SmallIntegerField(default=0)
    is_inclusive = models.SmallIntegerField(default=0)
    quantity_mode = models.SmallIntegerField()
    quantity = models.IntegerField()
    students_count = models.IntegerField(null=True)
    priority = models.IntegerField(default=0)
    sort_order = models.IntegerField()
    role = models.ManyToManyField(
        "api.EsInvigilatorRole",
        through="api.EsInvigilatorSettingRole",
    )
    created_by = models.BigIntegerField(null=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_by = models.BigIntegerField(null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    class Meta:
        db_table = "es_invigilator_setting"
        ordering = ["sort_order", "id"]

    def __str__(self):
        return f"{self.is_floating}-{self.quantity_mode}-{self.quantity}"
