from django.db import models

# Create your models here.
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
import re
# from sales_and_marketing.models import CommissionSheetInstance

# from sales_and_marketing.models import CommissionSheetInstance
from human_resource.models import StaffProfile
# from sales_and_marketing.models import CustomerProfile
from system_administration.models import CompanyBranch, CompanyDepartment, CompanyProfile


class AgentProfile(models.Model):
    user = models.OneToOneField(
        User, null=True, on_delete=models.SET_NULL, related_name="user_agent_profile")
    agent_number = models.CharField(max_length=30, default="", unique=True)
    first_name = models.CharField(max_length=50, default="", blank=False)
    # remember these length limits
    last_name = models.CharField(max_length=50, default="", blank=False)
    email_address = models.EmailField(max_length=50, default="", blank=False)
    # remember these length limits
    country_name = models.CharField(
        max_length=20, default="Kenya (KE) [+254]", blank=False)
    identification_number = models.CharField(
        max_length=20, default="", blank=False)  # remember these length limits
    # remember these length limits
    phone_number = models.CharField(max_length=25, default="", blank=False)
    company_name = models.CharField(
        max_length=100, default="", blank=True)
    kra_pin = models.CharField(max_length=50, default="", blank=False)
    certificate_of_registration_number = models.CharField(
        max_length=25, default="", blank=True)
    title_choices = [("mr", "Mr."), ("mrs", "Mrs."), ("miss", "Miss"),
                     ("other", "Other"), ("not_selected", "Not Selected")]
    agent_title = models.CharField(
        max_length=20, choices=title_choices, default="not_selected", blank=False)
    contract_start_date = models.DateField(null=True, blank=True)
    contract_end_date = models.DateField(null=True, blank=True)
    banking_institution_name = models.CharField(
        max_length=100, default="", blank=True)
    bank_account_name = models.CharField(
        max_length=100, default="", blank=True)
    bank_account_number = models.CharField(
        max_length=100, default="", blank=True)
    # added banking details
    bank_branch_name = models.CharField(
        max_length=100, default="", blank=True)
    bank_branch_code = models.CharField(
        max_length=100, default="", blank=True)
    bank_swift_code = models.CharField(
        max_length=100, default="", blank=True)
    agent_additional_info = models.CharField(
        max_length=500, default="", blank=True)
    is_profile_set = models.BooleanField(default=False)
    is_profile_active = models.BooleanField(default=True)
    recycle_bin = models.BooleanField(default=False)
    # email_verification_code = models.CharField(max_length=6,null=True,blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    last_updated_on = models.DateTimeField(auto_now=True)
    timestamp = models.DateTimeField(default=timezone.now)

    class Meta:
        # ordering= ("first_name", "last_name",)
        verbose_name = "Agent Profile"
        verbose_name_plural = "Agent Profiles"


class AgentAccountManager(models.Model):
    staff_profile = models.ForeignKey(
        StaffProfile, null=True, on_delete=models.SET_NULL, related_name="staff_agent_accounts")
    agent_profile = models.OneToOneField(
        AgentProfile, null=True, on_delete=models.CASCADE, related_name='agent_profile_management')
    agent_account_manager_description = models.CharField(
        max_length=500, default="", blank=True)


# class CustomerAgentManager(models.Model):
#     agent_profile = models.ForeignKey(
#         AgentProfile, null=True, on_delete=models.SET_NULL, related_name="agent_customer_accounts")
#     # customer_profile = models.OneToOneField(
#     #     CustomerProfile, null=True, on_delete=models.CASCADE, related_name="agent_managing_customer_profile")
#     agent_account_manager_description = models.CharField(
#         max_length=500, default="", blank=True)
