from datetime import datetime, date
from datetime import date

def before_x_years_date(years):
  today = date.today()
  start_date = date(today.year - years, today.month, today.day)
  return start_date

def string_to_date(string, format):
  return datetime.strptime(string, format).date()

def dpd_check_experian(dpd_years_above_0, dpd_count_above_0, experian_data):
    if dpd_years_above_0 is None or dpd_count_above_0 is None:
        return 0
    start_date = before_x_years_date(dpd_years_above_0)
    count_per_tradeline = 0
    if experian_data:
        try:
            if isinstance(experian_data, list):
                for data in experian_data:
                    count = 0
                    if string_to_date(data["Open_Date"], "%Y%m%d") > start_date:
                        if isinstance(data['CAIS_Account_History'], list):
                            count = sum([1 for MonthWise in data['CAIS_Account_History'] if MonthWise['Days_Past_Due'] not in ("0", 0, None)])
                        elif isinstance(data['CAIS_Account_History'], dict):
                            if data['CAIS_Account_History']['Days_Past_Due'] not in (0, '0', None):
                                count = 1
                            else:
                                count = 0
                    count_per_tradeline += count
                    if count_per_tradeline >= dpd_count_above_0:
                        return 0
                if count_per_tradeline < dpd_count_above_0:
                    return 1
            if isinstance(experian_data, dict):
                data = experian_data
                count = 0
                if string_to_date(data["Open_Date"], "%Y%m%d") > start_date:
                    if isinstance(data['CAIS_Account_History'], list):
                        count = sum([1 for MonthWise in data['CAIS_Account_History'] if "0" != MonthWise['Days_Past_Due']])
                    elif isinstance(data['CAIS_Account_History'], dict):
                        if "0" != data['CAIS_Account_History']['Days_Past_Due']:
                            count = 1
                        else:
                            count = 0
                count_per_tradeline += count
                print(count_per_tradeline)
                if count_per_tradeline > dpd_count_above_0:
                    return 0
            if count_per_tradeline <= dpd_count_above_0:
                return 1
        except:
            return "No Experian Bureau"
    else:
        return 1

account_details = {
              "Identification_Number": "PUBXXXXXXXX",
              "Subscriber_Name": "XXXXXXXXXX",
              "Account_Number": "XXXXXXXXXX1320",
              "Portfolio_Type": "F",
              "Account_Type": "43",
              "Open_Date": "20210308",
              "Credit_Limit_Amount": None,
              "Highest_Credit_or_Original_Loan_Amount": "500000",
              "Terms_Duration": None,
              "Terms_Frequency": None,
              "Scheduled_Monthly_Payment_Amount": None,
              "Account_Status": "11",
              "Payment_Rating": "0",
              "Payment_History_Profile": "00000???????????????????????????????",
              "Special_Comment": None,
              "Current_Balance": "67146",
              "Amount_Past_Due": "0",
              "Original_Charge_Off_Amount": None,
              "Date_Reported": "20251130",
              "Date_of_First_Delinquency": None,
              "Date_Closed": None,
              "Date_of_Last_Payment": "20251129",
              "SuitFiledWillfulDefaultWrittenOffStatus": None,
              "SuitFiled_WillfulDefault": None,
              "Written_off_Settled_Status": None,
              "Value_of_Credits_Last_Month": None,
              "Occupation_Code": None,
              "Settlement_Amount": None,
              "Value_of_Collateral": None,
              "Type_of_Collateral": "00",
              "Written_Off_Amt_Total": None,
              "Written_Off_Amt_Principal": None,
              "Rate_of_Interest": "9.650",
              "Repayment_Tenure": "0",
              "Promotional_Rate_Flag": None,
              "Income": None,
              "Income_Indicator": None,
              "Income_Frequency_Indicator": None,
              "DefaultStatusDate": None,
              "LitigationStatusDate": None,
              "WriteOffStatusDate": None,
              "DateOfAddition": "20250630",
              "CurrencyCode": "INR",
              "Subscriber_comments": None,
              "Consumer_comments": None,
              "AccountHoldertypeCode": "2",
              "CAIS_Account_History": [
                {
                  "Year": "2025",
                  "Month": "11",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                },
                {
                  "Year": "2025",
                  "Month": "10",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                },
                {
                  "Year": "2025",
                  "Month": "09",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                },
                {
                  "Year": "2025",
                  "Month": "08",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                },
                {
                  "Year": "2025",
                  "Month": "07",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                },
                {
                  "Year": "2025",
                  "Month": "06",
                  "Days_Past_Due": "0",
                  "Asset_Classification": "?"
                }
              ],
              "CAIS_Holder_Details": {
                "Surname_Non_Normalized": "ANITA NANDANWAR",
                "First_Name_Non_Normalized": None,
                "Middle_Name_1_Non_Normalized": None,
                "Middle_Name_2_Non_Normalized": None,
                "Middle_Name_3_Non_Normalized": None,
                "Alias": None,
                "Gender_Code": "2",
                "Income_TAX_PAN": None,
                "Passport_Number": None,
                "Voter_ID_Number": None,
                "Date_of_birth": "19680827"
              },
              "CAIS_Holder_Address_Details": {
                "First_Line_Of_Address_non_normalized": "NAVIN VASTI POLICE STATION MAGE KHAPA",
                "Second_Line_Of_Address_non_normalized": "SAONER NAGPUR NAGPUR",
                "Third_Line_Of_Address_non_normalized": None,
                "City_non_normalized": None,
                "Fifth_Line_Of_Address_non_normalized": None,
                "State_non_normalized": "27",
                "ZIP_Postal_Code_non_normalized": "441101",
                "CountryCode_non_normalized": "IB",
                "Address_indicator_non_normalized": "02",
                "Residence_code_non_normalized": "02"
              },
              "CAIS_Holder_Phone_Details": [
                {
                  "Telephone_Number": None,
                  "Telephone_Type": "01",
                  "Telephone_Extension": None,
                  "Mobile_Telephone_Number": "9371519105",
                  "FaxNumber": None,
                  "EMailId": None
                },
                {
                  "Telephone_Number": "9371519105",
                  "Telephone_Type": "00",
                  "Telephone_Extension": None,
                  "Mobile_Telephone_Number": None,
                  "FaxNumber": None,
                  "EMailId": None
                }
              ],
              "CAIS_Holder_ID_Details": [
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                },
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                },
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                },
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                },
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                },
                {
                  "Income_TAX_PAN": None,
                  "PAN_Issue_Date": None,
                  "PAN_Expiration_Date": None,
                  "Passport_Number": None,
                  "Passport_Issue_Date": None,
                  "Passport_Expiration_Date": None,
                  "Voter_ID_Number": None,
                  "Voter_ID_Issue_Date": None,
                  "Voter_ID_Expiration_Date": None,
                  "Driver_License_Number": None,
                  "Driver_License_Issue_Date": None,
                  "Driver_License_Expiration_Date": None,
                  "Ration_Card_Number": None,
                  "Ration_Card_Issue_Date": None,
                  "Ration_Card_Expiration_Date": None,
                  "Universal_ID_Number": None,
                  "Universal_ID_Issue_Date": None,
                  "Universal_ID_Expiration_Date": None,
                  "EMailId": None
                }
              ]
            }

print(dpd_check_experian(1, 0, account_details))