from django.db import models

class UserMaster(models.Model):
    """
        Model to store user details
            attirs:
                Id: Auto-incrementing primary key
                Username: Username of the user
                Password: Password of the user
                Email: Email address of the user
                FirstName: First name of the user
                LastName: Last name of the user
                Role: Role of the user
                IsTestAccount: Integer field to indicate if the user is a test account

    """
    Id = models.AutoField(primary_key=True)
    Username = models.CharField(max_length=50, unique=True)
    Password = models.CharField(max_length=255)
    Email = models.EmailField(max_length=100, unique=True)
    FirstName = models.CharField(max_length=50)
    LastName = models.CharField(max_length=50)
    Role = models.CharField(max_length=100)
    Image = models.CharField(max_length=255, null=True, blank=True)
    ResourceNo = models.IntegerField(null=True, blank=True)
    ResourceCode = models.CharField(max_length=50, null=True, blank=True)
    LastLogin = models.DateTimeField(null=True, blank=True)
    CreatedAt = models.DateTimeField(auto_now_add=True)
    UpdatedAt = models.DateTimeField(auto_now=True)
    ExactUserID = models.IntegerField(null=True, blank=True)
    IsDeleted = models.BooleanField(default=False)
    IsTestAccount = models.IntegerField(default=1)

    class Meta:
        db_table = 'UserMaster'  # Explicitly map to the existing table
        managed = False  # Indicates that this model does not manage the table schema

    def __str__(self):
        return self.Username


class Departments(models.Model):
    Id = models.AutoField(primary_key=True)
    Department = models.CharField(max_length=100)
    IsDeleted = models.BooleanField(default=False)

    class Meta:
        db_table = 'Departments'
        managed = False


class DepartmentPermissions(models.Model):
    Id = models.AutoField(primary_key=True)
    UserId = models.IntegerField()
    DepartmentId = models.ForeignKey(Departments, on_delete=models.CASCADE)
    IsDeleted = models.BooleanField(default=False)

    class Meta:
        db_table = 'DepartmentPermissions'
        managed = False

class UserLogins(models.Model):
    Id = models.AutoField(primary_key=True)  # Auto-increment primary key
    UserId = models.IntegerField()
    LoginTime = models.DateTimeField(null=True, blank=True)  # Nullable datetime for login
    LogoutTime = models.DateTimeField(null=True, blank=True)  # Nullable datetime for logout
    AuthToken = models.CharField(max_length=255, unique=True)
    IsActive = models.BooleanField(default=True)
    class Meta:
        db_table = "UserLogins"
