from django.db import models
from users.models import User_Departments, User_Types
from program_department.models import Projects

# Create your models here.
class Team(models.Model):
    employment_type = models.IntegerField(default =0, choices=((0, 'Permanent'), (1, 'Project Based')))
    employee_id = models.CharField(max_length=255, default="", blank=False, null=False, unique=True)
    position = models.IntegerField(default =0, choices=((0, 'Employeee'), (1, 'Volunteer'), (2, 'Intern')))
    name = models.CharField(max_length=255, blank=False, null=False)
    father_name = models.CharField(max_length=255, blank=False, null=False)
    mother_name = models.CharField(max_length=255, blank=False, null=False)
    email = models.CharField(max_length=255, blank=False, null=False)
    mobile = models.CharField(max_length=255, blank=False, null=False)
    date_of_birth = models.CharField(max_length=255, blank=False, null=False)
    gender = models.IntegerField(default =0, choices=((0, 'Male'), (1, 'Female'), (2, 'transgender')))
    qualification = models.CharField(max_length=255, blank=False, null=False)
    university = models.CharField(max_length=255, blank=False, null=False)
    experience = models.IntegerField(default =0, choices=((0, 'Fresher'), (1, '6 Months'), (2, '1 Year'), (2, '2 Years'), (3, '3 Years+')))
    marital_status = models.IntegerField(default =0, choices=((0, 'Single'), (1, 'Married'), (2, 'Divorced'), (2, 'Other')))
    emergency_contact_no = models.CharField(max_length=255, blank=False, null=False)
    joining_date = models.CharField(max_length=255, blank=False, null=False)
    designation = models.ForeignKey(User_Types, blank=True, null=True, on_delete=models.SET_NULL, default=None)
    department = models.ForeignKey(User_Departments, default=None, on_delete=models.SET_NULL, blank=True, null=True, related_name="team_department")
    payment_type = models.IntegerField(default =0, choices=((0, 'Salary'), (1, 'Stipend'), (2, 'Honorarium')))
    basic_amount = models.CharField(max_length=255, blank=False, null=False)
    ctc_amount = models.CharField(max_length=255, blank=False, null=False)
    epf = models.CharField(max_length=255, blank=False, null=False)
    esic = models.CharField(max_length=255, blank=False, null=False)
    photo = models.ImageField(upload_to="team", blank=False, null=False)
    resume = models.ImageField(upload_to="team", blank=False, null=False)
    aadhar = models.ImageField(upload_to="team", blank=False, null=False)
    pan_no = models.CharField(max_length=255, blank=True, null=True, default="")
    pan_card = models.ImageField(upload_to="team", blank=False, null=False)
    marksheet = models.ImageField(upload_to="team", blank=False, null=False)
    address = models.TextField(blank=True, null=True)
    message = models.TextField(blank=True, null=True)
    assets = models.TextField(blank=True, null=True)
    condition = models.TextField(blank=True, null=True)
    declaration = models.FileField(upload_to="team", blank=True, null=True)
    issue_date = models.CharField(blank=True, null=True, max_length=255, default="")
    return_date = models.CharField(blank=True, null=True, max_length=255, default="")


class Team_Projects(models.Model):
    member = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='members_projects')
    project = models.ForeignKey(Projects, on_delete=models.CASCADE, related_name='members_projects')



class Vendors(models.Model):
    name = models.CharField(max_length=255, blank=False, null=False)
    email = models.CharField(max_length=255, blank=False, null=False)
    mobile = models.CharField(max_length=255, blank=False, null=False)
    pan_no = models.CharField(max_length=255, blank=True, null=True, default="")
    pan_card = models.ImageField(upload_to="vendors", blank=True, null=True, default="")
    address = models.TextField(blank=True, null=True)
    message = models.TextField(blank=True, null=True)


class Attendance(models.Model):
    member = models.ForeignKey(Team, on_delete=models.CASCADE, related_name='attendance_records')
    month = models.IntegerField(blank=False, null=False)
    year = models.IntegerField(blank=False, null=False)
    file = models.FileField(upload_to="attendance", blank=False, null=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)