from django.db import models
from django.contrib.auth.models import User
from organizationmanagement.models import Country,Branch
from codesofy_lib.master_details import JobRole,SubFeatureType
import os

# Create your models here.
""" class JobRole(models.Model):
    role_name = models.CharField(max_length=256)

    def __str__(self):
        return self.role_name """
    

class SystemRole(models.Model):
    role_name = models.CharField(max_length=256)

    def __str__(self):
        return self.role_name
    

class UserProfile(models.Model):


    user = models.OneToOneField(User,on_delete=models.CASCADE)

    profile_picture = models.ImageField(upload_to='user-profile-images',blank=True)

    
    middle_name = models.CharField(max_length=100)
    system_role = models.ForeignKey(to=SystemRole,on_delete=models.DO_NOTHING)

    mobile = models.CharField(max_length=20)
    telephone = models.CharField(max_length=20)
    address = models.CharField(max_length=100)

    branch = models.ForeignKey(to=Branch,on_delete=models.DO_NOTHING)

    employee_number = models.CharField(max_length=20)
    #job_role = models.ForeignKey(to=JobRole,on_delete=models.DO_NOTHING)
    job_role = models.CharField(max_length=100,choices=JobRole.choices())
    reference_id = models.CharField(max_length=100)
    

    def __str__(self):
        return self.user.username
    
    @property
    def profile_picture_url(self):
        if self.profile_picture and hasattr(self.profile_picture, 'url'):
            return self.profile_picture.url
        
class MainFeature(models.Model):
    
    feature_name = models.CharField(max_length=256)

    def __str__(self):
        return self.feature_name
    

class SubFeature(models.Model):
    
    main_feature = models.ForeignKey(to=MainFeature,on_delete=models.CASCADE)
    feature_name = models.CharField(max_length=256)
    feature_type = models.CharField(max_length=100,choices=SubFeatureType.choices(),default=SubFeatureType.MODULE.value)
    

    def __str__(self):
        return self.main_feature.feature_name + " - "+self.feature_name
    
class Privilege(models.Model):
    system_role = models.ForeignKey(to=SystemRole,on_delete=models.CASCADE)
    sub_feature = models.ForeignKey(to=SubFeature,on_delete=models.CASCADE)

    def __str__(self):
        return self.system_role.role_name + " : "+ self.sub_feature.main_feature.feature_name + " - " + self.sub_feature.feature_name
    
 
    

    

    
