from django.db import models

from hrms.models.user import Advocate
from masters.models.admin_master_tables import Bench, CaseNature, CaseType, Country, RosterBench, RosterSession, Subheading,CheckerCategory
from masters.models.district import District, SubDistrict
from masters.models.establishment import Establishment
from masters.models.state import State
from masters.models.village import Village

    
class Advocate_for_lokadalat(models.Model):
    
    
    
    advocate=models.ForeignKey(Advocate,null=True,related_name="roster_advocate",on_delete=models.SET_NULL)
       
    from_date    = models.DateTimeField()
    to_date    = models.DateTimeField(null=True)
    display=models.CharField(max_length=1)
        
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_by = models.IntegerField( null=True, blank=True)
    updated_by = models.IntegerField( null=True, blank=True) 
    

    class Meta:
        
        verbose_name = 'advocate'
        verbose_name_plural = 'advocate'

    def __str__(self):
        return f"Session: {self.advocate or 'N/A'}"
    
class Roster(models.Model):
    branch = models.ForeignKey(Establishment,null=True,related_name="roster_estbl",on_delete=models.SET_NULL)
    bench = models.ForeignKey(Bench,null=True,related_name="roster_bench",on_delete=models.SET_NULL)   
    benchno = models.ForeignKey(RosterBench,null=True,related_name="roster_benchno",on_delete=models.SET_NULL)  

    matter_ids = models.CharField(max_length=1000, null=True, blank=True)
    # not in used

    roster_session = models.ForeignKey(RosterSession,null=True,related_name="roster_session",on_delete=models.SET_NULL)  
    from_date = models.DateField()
    to_date = models.DateField()
    

    display = models.CharField(max_length=1, default='Y')
    courtno = models.IntegerField(default=0)
    m_f = models.CharField(max_length=5)
    from_time = models.CharField(max_length=10)
    total_cases = models.IntegerField()
    session = models.CharField(max_length=20)
    bench_fail = models.IntegerField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_by = models.IntegerField( null=True, blank=True)
    updated_by = models.IntegerField( null=True, blank=True) 

    class Meta:
        
        
        verbose_name = 'benchno'
        verbose_name_plural = 'benchno'

    def __str__(self):
        return f"benchno: {self.benchno or 'N/A'}"
class RosterJudge(models.Model):
    roster = models.ForeignKey(Roster,related_name='judges', on_delete=models.CASCADE)
    judge = models.IntegerField(null=False,blank=False)
    judge_type = models.IntegerField(null=False,blank=False)
    position = models.PositiveSmallIntegerField(help_text="Position like 1 for judge1_id, 2 for judge2_id etc.")
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_by = models.IntegerField( null=True, blank=True)
    updated_by = models.IntegerField( null=True, blank=True) 

    class Meta:
        unique_together = ('roster', 'judge')
        ordering = ['position']
class RosterMatter(models.Model):
    roster = models.ForeignKey(Roster,related_name='matter_roster', on_delete=models.CASCADE)
     
    caseNature = models.ForeignKey(CaseNature,null=True,related_name='case_nature', on_delete=models.CASCADE)
    caseType = models.ForeignKey(CaseType,null=True,related_name='case_types', on_delete=models.CASCADE)
    subheading = models.ForeignKey(Subheading,null=True,related_name='sub_heading_matter', on_delete=models.CASCADE)
    beforeNotBeforeFlag = models.CharField(null=True,max_length=1)
    CheckerCategory = models.ForeignKey(CheckerCategory,null=True,related_name='checker_category', on_delete=models.CASCADE)
    subcode = models.IntegerField(default=0)
    subcode1 = models.IntegerField(default=0)
    subcode2 = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    created_by = models.IntegerField( null=True, blank=True)
    updated_by = models.IntegerField( null=True, blank=True) 
 
    class Meta:
        
        ordering = ['caseNature']
