import json
from datetime import datetime

from payrollservice.util.payrollutil import advancestatus, get_paymode, data_roundup


class Employeemonthly_payinfoResponse:
    id = None
    employee_id = None
    standard_ctc = None
    disability = None
    payable_days = None
    paid_days =None
    pay_status = None
    is_tds = None
    pf_type = None
    pay_mode = None
    Employeemonthlypay_details_data =None
    gross_pay = None
    created_date = None
    month = None
    payroll_date = None
    take_home = None
    code = None
    year = None
    Paid_days = None
    leave_count = None
    ref_id = None
    paid_date = None
    remarks = None
    def get(self):
        return json.dumps(self, default=lambda o: o.__dict__,
                          sort_keys=True, indent=4)
    def set_id(self, id):
        self.id = id

    def set_employee_id(self, employee_id):
        self.employee_id = employee_id

    def set_employee_val(self, employee_id, arr):
        self.employee = None
        for i in arr:
            if i.get('id') == employee_id:
                self.employee = i
                break
            else:
                pass

    def set_employee_val1(self, employee_id, arr):
        self.EmployeeName = None
        self.EmployeeCode = None
        self.Bank = None
        self.BankBranch = None
        self.ifsccode = None
        self.accountnumber = None
        for i in arr:
            if i.id == employee_id:
                self.EmployeeName = i.full_name
                self.EmployeeCode = i.code
                if json.loads(i.get())["employeebank"] is not None:
                    self.Bank=json.loads(i.get())["employeebank"]["Bank"]['name']
                    if json.loads(i.get())["employeebank"]["BankBranch"] is not None:
                        self.BankBranch=json.loads(i.get())["employeebank"]["BankBranch"]['name']
                        self.ifsccode=json.loads(i.get())["employeebank"]["BankBranch"]['ifsccode']
                        self.accountnumber=json.loads(i.get())["employeebank"]['accountnumber']
                    else:
                        self.BankBranch = None
                        self.ifsccode = None
                        self.accountnumber = None
                break
            else:
                pass

    def set_standard_ctc(self, standard_ctc):
        # self.standard_ctc = str(standard_ctc)
        self.standard_ctc = data_roundup(standard_ctc)

    def set_disability(self, disability):
        self.disability = disability

    def set_payable_days(self, payable_days):
        self.payable_days = payable_days

    def set_paid_days(self, paid_days):
        self.paid_days = paid_days

    def set_pay_status(self, pay_status):
        self.pay_status = advancestatus(pay_status)

    def set_pf_type(self, pf_type):
        self.pf_type = pf_type

    def set_is_tds(self,is_tds):
        self.is_tds = str(is_tds)

    def set_pay_mode(self, pay_mode):
        self.pay_mode = get_paymode(pay_mode)

    def set_empmonthly_pay_val(self, empmonthly_pay_id, arr):
        self.Employeemonthlypay_details_data = None
        new_arr=[]
        for i in arr:
            if i.empmonthly_pay_id == empmonthly_pay_id:
                self.Employeemonthlypay_details_data = i
                new_arr.append(i)
                # break
            else:
                pass
        self.Employeemonthlypay_details_data=new_arr

    def set_gross_pay(self, gross_pay):
        # self.gross_pay = str(gross_pay)
        self.gross_pay = data_roundup(gross_pay)

    def set_created_date(self, created_date):
        date = str(created_date.date())
        self.Month = datetime.strptime(date, "%Y-%m-%d").strftime("%d %b %Y")
        # self.Month = str(created_date.date())

    def set_created_date1(self, created_date):
        self.created_date = str(created_date.date())

    def set_payroll_date(self, payroll_date):
        self.payroll_date = str(payroll_date)

    def set_take_home(self, take_home):
        self.take_home = data_roundup(take_home)

    def set_code(self, code):
        self.code = str(code)

    def set_ref_id(self, ref_id, arr):
        self.ref_id = None
        for i in arr:
            if i['id'] == ref_id:
                self.ref_id = i
                break

    def set_payroll_date1(self, payroll_date):
        payroll_date1 = datetime.strptime(str(payroll_date), "%Y-%m-%d")
        payroll_datem1 = str(payroll_date1.strftime("%Y-%m"))
        self.payroll_date = str(payroll_datem1)


    def set_month(self, month):
        self.month = month

    def set_year(self, year):
        self.year = year

    def set_leave_count(self, leave_count):
        self.leave_count = leave_count

    def set_present_count(self, present_count):
        self.present_count = present_count

    def set_ref_id1(self, ref_id):
        self.ref_id = ref_id

    def set_paid_date(self,paid_date):
        paid_date = str(paid_date.date())
        self.paid_date = datetime.strptime(paid_date, "%Y-%m-%d").strftime("%Y-%m-%d")

    def set_remarks(self,remarks):
        self.remarks = remarks