import { isPlatformBrowser } from '@angular/common';
import { Component, Inject, OnInit, PLATFORM_ID } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { Meta, Title } from '@angular/platform-browser';
import { ActivatedRoute } from '@angular/router';
import firebase from 'firebase/compat/app';
import 'firebase/compat/auth'
import 'firebase/compat/firestore'
import { NgxSpinnerService } from 'ngx-spinner';
import { ToastrService } from 'ngx-toastr';
import { Cities } from '../../entities/cities';
import { EmploymentType } from '../../entities/employmenttype';
import { Leads } from '../../entities/leads';
import { CommonService } from '../../shared/services/common/common.service';
import { GlobalService } from '../../shared/services/common/global.service';
import { LinkService } from '../../shared/services/link.service';
import { LeadService } from '../../shared/services/loanService/lead.service';
import { environment } from '../../../../environments/environment';
import Swal from 'sweetalert2';
import { DocumentMasters } from '../../entities/documentMasters';
@Component({
  selector: 'app-home-loan',
  templateUrl: './home-loan.component.html',
  styleUrls: ['./home-loan.component.scss']
})
export class HomeLoanComponent implements OnInit {
  // public isVerifyOtp: boolean = true;
  // //public isShow: boolean = true;
  // public isDetailForm: boolean = false;
  // public isPersonalDetailForm: boolean = false;
  // public mobileNo: number = 0;
  // public isOtpInput: boolean = false;
  // public selectedType: string = '';
  // public interest_rate: number
  // public payment: string = "0.00";
  // public months: number = 0;
  // public interest: string = "0.00";
  // public amountPayable: string = "0.00";
  // public displayAmount: string = "0.00";
  // public amount: number = 0;
  // public contactForm: FormGroup;
  // public basicDetailForm: FormGroup;
  // public detailForms: FormGroup;
  // public reCaptchaVerifier: any;
  // public otp: any;
  // public verify: any;
  // public serviceId: number = 0;
  // public cities: Cities[] = new Array<Cities>();
  // public employmentTypes: EmploymentType[] = new Array<EmploymentType>();
  // public leads = new Leads();
  // public primaryBanks :any = [];
  // public isAgreed: boolean = false;
  // public agreedmsg: string = '';
  // public faqs = [
  //   {
  //     que: "My house loan repayments can be calculated using a calculator, but where can I get one?",
  //     ans: "On a different website, you may find our home loan EMI calculator. On the home loan webpage, click the 'EMI Calculator' link to use the tool. ",
  //     isCollapsed: false
  //   },
  //   {
  //     que: "Is it possible to use the home loan calculator to reduce my monthly payments? ",
  //     ans: "Yes. You may adjust the figures for different loan parameters until you find an appropriate monthly payment amount by using this tool for this purpose.",
  //     isCollapsed: true
  //   },
  //   {
  //     que: "Is it safe to use an EMI calculator to figure out how much a home loan would cost each month? ",
  //     ans: "Yes. We guarantee the accuracy of our home loan EMI calculator's findings.",
  //     isCollapsed: true
  //   },
  //   {
  //     que: "There aren't any charges involved with making use of the EMI estimator. Is the EMI calculator free to use?",
  //     ans: "No. By visiting our website, you can access this free resource whenever and however often you like. ",
  //     isCollapsed: true
  //   },
  //   {
  //     que: "In order to access the amortization schedule, what is the process for doing so?",
  //     ans: "Your payback plan may be seen by clicking on 'Check Repayment Schedule' once you've calculated your EMI. An interactive table containing all of the loan payment data is shown, and you may interact with it.",
  //     isCollapsed: true
  //   },
  //   //  {
  //   //   que: "How can I increase my chances of obtaining a business credit?",
  //   //   ans: "There are two kinds of business loans offered by lenders for you to select from term loans and capital loans.These loans can be utilized to expand your companies, for  purchasing equipment or launching new projects.They can be borrowed over a time period of one year to 10 years.The working capital loan, however other on the other hand, are short- term loans that need to be paid back within one year.They are employed to settle rent and salaries of employees and stock up inventory, and more.",
  //   //   isCollapsed: false
  //   // }
  // ]
  // // public cities: any = [
  // //   {
  // //     name: "Bardoli"
  // //   },
  // //   {
  // //     name: "Surat"
  // //   },
  // //   {
  // //     name: "Kamrej"
  // //   },
  // //   {
  // //     name: "Ahmedabad"
  // //   }

  // // ];
  // public selectedCity: any :any = [] :any = [];
  // public city: string = "";
  // public _title: string = '';
  // public selectedTab: string = "Overview";


  public leads = new Leads();
  public basicDetailForm: FormGroup;
  public selectedCity: any;
  public cities: Cities[] = [];
  public serviceId: number = 0;
  public selectedEmployeeType: string = '';
  public employmentTypes: EmploymentType[] = new Array<EmploymentType>();
  public city: string = "";
  public _title: string = '';
  public payment: string = "0.00";
  public interest: string = "0.00";
  public amountPayable: string = "0.00";
  public displayAmount: string = "0.00";
  public test: any
  public emiCalculatorForm: FormGroup;
  public documentMasters: DocumentMasters[] = new Array<DocumentMasters>();
  public customFieldForm!: FormGroup;

  constructor(
    private formBuilder: FormBuilder,
    private commonService: CommonService,
    private globalService: GlobalService,
    private leadService: LeadService,
    private toastrService: ToastrService,
    private meta: Meta,
    private title: Title,
    private route: ActivatedRoute,
    @Inject(PLATFORM_ID) public platformId: object,
    private spinnerService: NgxSpinnerService,
    private linkService: LinkService
  ) {
    this.linkService.createLinkForCanonicalURL();
    let sub = this.route.params.subscribe(async (params) => {
      this.city = params['city'] ? params['city'] : '';
      if (this.city) {
        if (isPlatformBrowser(this.platformId))
          sessionStorage.setItem("selectedCity", this.city);
      }
    });
    let cityList;
    if (isPlatformBrowser(this.platformId))
      cityList = sessionStorage.getItem("cityList");
    let isCityAvailable = false;
    if (cityList) {
      let cityArray = JSON.parse(cityList) as string[];
      isCityAvailable = cityArray.findIndex(c => c == this.city.toLowerCase()) > -1;
    }

    //if (isCityAvailable) {
    this._title = `Apply & have instant home loan online experience with low interest in ` + this.city + `.`
    this.route.snapshot.data['title'] = this._title;
    this.title.setTitle(this.route.snapshot.data['title']);
    // this.meta.updateTag({
    //   name: 'title', content: `Apply & have instant home loan online experience with low interest in ` + this.city + `.`
    // });
    this.meta.updateTag({
      name: 'description', content: `Owning a new home in ` + this.city + ` is no more a dream. Fulfill your dream with easy customized instant home loan online options. No more worries about how to get low interest home loans.`
    });
    this.meta.updateTag({
      name: 'author', content: `Credit`
    });
    this.meta.updateTag({
      name: 'og:locale', property: "og:locale", content: `en_US`
    });
    this.meta.updateTag({
      name: 'og:title', property: "og:title", content: `Apply & have instant home loan online experience with low interest in ` + this.city + `.`
    });
    this.meta.updateTag({
      name: 'og:description', property: "og:description", content: `Owning a new home in ` + this.city + ` is no more a dream. Fulfill your dream with easy customized instant home loan online options. No more worries about how to get low interest home loans.`
    });
    this.meta.updateTag({
      name: 'og:url', property: "og:url", content: `https://credit.nsserver.in`
    });
    this.meta.updateTag({
      name: 'og:site_name', property: "og:site_name", content: `Credit`
    });
    this.meta.updateTag({
      name: 'og:type', property: "og:type", content: `Website`
    });
    this.meta.updateTag({
      name: 'og:image', property: "og:image", content: `https://credit.nsserver.in/assets/img/logo/logo.webp`
    });
    this.meta.updateTag({
      'http-equiv': "X-UA-Compatible", content: "IE=edge"
    });
    this.meta.updateTag({
      name: 'copyright', content: `Copyright 2022, Credit`
    });
    this.meta.updateTag({
      name: 'robots', content: `index, follow`
    });
    this.meta.updateTag({
      name: 'Googlebot', content: `Index, Follow`
    });
    this.meta.updateTag({
      name: 'rating', content: `Safe For Kids`
    });
    this.meta.updateTag({
      name: 'tweeter:card', content: `compare & apply for business loan`
    });
    this.meta.updateTag({
      name: 'tweeter:title', content: `compare & apply for business loan`
    });
    this.meta.updateTag({
      name: 'tweeter:description', content: `Owning a new home in ` + this.city + ` is no more a dream. Fulfill your dream with easy customized instant home loan online options. No more worries about how to get low interest home loans.`
    });
    this.meta.updateTag({
      name: 'tweeter:site', content: `Credit`
    });
    this.meta.updateTag({
      name: 'tweeter:image', content: `https://credit.nsserver.in/assets/img/logo/logo.webp`
    });
    //}
    // else {
    //   this.meta.addTags([
    //     {
    //       name: 'description', content: `Credit offers a one stop solution to a home buyer. You can browse through our range of home loan products, check your eligibility and apply online!`
    //     },
    //     {
    //       name: 'author', content: `Credit`
    //     },
    //     {
    //       name: 'keywords', content: `Personal Loan,Business Loan,Compare Loan,Gold Loan,Mortagage Loan,Loan agains property,Home Loan,Car Loan,Professional Loan,Education Loan,Instant Loan,MSME Loan,StartUp Loan,Credit Card,DSA Signup,Connectors,Employee,Sub DSA,Become a partner,EMI Calculator`
    //     },
    //     {
    //       name: 'og:title', property: "og:title", content: `compare & apply for Home Loan`
    //     },
    //     {
    //       name: 'og:description', property: "og:description", content: `compare & apply for Home Loan - credit.nsserver.in`
    //     },
    //     {
    //       name: 'og:site_name', property: "og:site_name", content: `Credit`
    //     },
    //     {
    //       name: 'og:type', property: "og:type", content: `Website`
    //     },
    //     {
    //       name: 'og:image', property: "og:image", content: `../../../assets/img/logo/logo.webp`
    //     },
    //     {
    //       name: 'tweeter:card', content: `compare & apply for Home Loan`
    //     },
    //     {
    //       name: 'tweeter:title', content: `compare & apply for Home Loan`
    //     },
    //     {
    //       name: 'tweeter:description', content: `compare & apply for Home Loan with low cost EMI - credit.nsserver.in`
    //     },
    //     {
    //       name: 'tweeter:site', content: `Credit`
    //     },
    //     {
    //       name: 'tweeter:image', content: `../../../assets/img/logo/logo.webp`
    //     }
    //   ]);
    // }
    this.basicDetailForm = formBuilder.group({
      'contactNo': [null, [Validators.required, Validators.minLength(10)]],
      'loanAmount': [null, [Validators.required]],
      'customerFullName': [null, [Validators.required]],
      'pincode': [null, [Validators.required, Validators.minLength(6)]],
      'cityName': [null, [Validators.required]],
      'employmentTypeId': [null, [Validators.required]],
      'income': [null, [Validators.required]],
      // 'panCardNo': [null, [Validators.required, Validators.pattern('[A-Z]{5}[0-9]{4}[A-Z]{1}')]],
      //'email': [null, [Validators.required, Validators.pattern("[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$")]],
    })
    this.emiCalculatorForm = formBuilder.group({
      'amount': [null, [Validators.required]],
      'interest_rate': [null, [Validators.required]],
      'months': [null, [Validators.required]],
    })
    // this.contactForm = formBuilder.group({
    //   'contactNo': [null, [Validators.required, Validators.minLength(10)]],
    // });
    // this.detailForms = formBuilder.group({
    //   'employmentTypeId': [null, [Validators.required]],
    //   'primaryBankId': [null, [Validators.required]],
    //   'aadhaarCardNo': [null, [Validators.required, Validators.pattern('^[2-9]{1}[0-9]{3}[0-9]{4}[0-9]{4}$')]],
    //   'panCardNo': [null, [Validators.required, Validators.pattern('[A-Z]{5}[0-9]{4}[A-Z]{1}')]],
    // })
  }

  async ngOnInit() {
    // firebase.initializeApp(environment.firebase)
    //setTimeout(() => {
    //  this.isShow = false;
    //}, 1000);

    // this.cities = await this.commonService.getCitites();
    // this.selectedCity = [...this.cities];
    this.serviceId = this.commonService.getServiceId("Home Loan");
    await this.getEmploymentType();
    await this.getDocumentMaster();
    if (this.documentMasters && this.documentMasters.length > 0) {
      this.customFieldForm = this.formBuilder.group({})
      for (let index = 0; index < this.documentMasters.length; index++) {
        if (this.documentMasters[index].allowDocumentField) {
          this.customFieldForm.addControl(this.documentMasters[index].documentFieldName, this.formBuilder.control(''));
        }
      }
    }
    // await this.getBanks();
    // this.setStep(0, 'initial')
  }

  public async getDocumentMaster() {
    try {
      let res = await this.globalService.getDocumentMaster();
      if (res && res.status == 200) {
        this.documentMasters = res.recordList;
      }
    } catch (error: any) {
      this.toastrService.error(error)
    }
  }

  public async getEmploymentType() {
    try {
      let res = await this.globalService.getEmploymentType();
      if (res && res.status == 200) {
        this.employmentTypes = res.recordList;
      }
    } catch (error: any) {

      let err = error;
      if (error && error.error && error.error.message) {
        err = error.error.message
      }
      this.toastrService.error(err, "Error");
    }
  }

  // public async getBanks() {
  //   try {
  //     let res = await this.globalService.getPrimaryBank();
  //     if (res && res.status == 200) {
  //       this.primaryBanks = res.recordList;
  //     }
  //   } catch (error: any) {
  //     this.toastrService.error(error)
  //   }
  // }

  // public verifyOtp() {

  //   this.isOtpInput = true;
  //   this.basicDetailForm.controls['contactNo'].setValue(this.contactForm.value.contactNo);
  // }

  // public async detailForm(isNext: boolean) {
  //   if (isNext == true) {
  //     this.isDetailForm = true;
  //     this.isPersonalDetailForm = false;
  //     try {
  //       //this.isShow = true;
  //       if (this.leads.id) {
  //         let id = this.leads.id
  //         this.leads = this.basicDetailForm.value;
  //         this.leads.serviceId = this.serviceId;
  //         this.leads.cityId = this.basicDetailForm.value.cityName.id;
  //         this.leads.id = id;
  //         this.leads.countryCode = "+91";
  //         let res = await this.leadService.updateLeads(this.leads);
  //         if (res && res.status == 200) {
  //         }
  //       }
  //       else {
  //         this.leads = this.basicDetailForm.value;
  //         this.leads.serviceId = this.serviceId;
  //         this.leads.cityId = this.basicDetailForm.value.cityName.id;
  //         this.leads.countryCode = "+91";
  //         let res = await this.leadService.insertLeads(this.leads);
  //         if (res && res.status == 200) {
  //           if (res.recordList && res.recordList.length > 0) {
  //             this.leads.id = res.recordList[0].id
  //           }
  //         }
  //       }
  //       //this.isShow = false;
  //       this.isDetailForm = true;
  //       this.isPersonalDetailForm = false;
  //     } catch (error: any) {
  //       //this.isShow = false;
  //       let err = error;
  //       if (error && error.error && error.error.message) {
  //         err = error.error.message
  //       }
  //       this.toastrService.error(err, "Error");
  //     }

  //   }
  //   else if (isNext == false) {
  //     this.isDetailForm = false;
  //     this.isPersonalDetailForm = true;
  //   }
  //   else {
  //     if (this.isAgreed) {
  //       if (this.leads.id) {
  //         try {
  //           //this.isShow = true;
  //           let id = this.leads.id
  //           this.leads = this.basicDetailForm.value;
  //           this.leads.aadhaarCardNo = this.detailForms.value.aadhaarCardNo
  //           this.leads.panCardNo = this.detailForms.value.panCardNo
  //           this.leads.experience = this.detailForms.value.experience
  //           this.leads.primaryBankId = this.detailForms.value.primaryBankId
  //           this.leads.employmentTypeId = this.detailForms.value.employmentTypeId.id;
  //           this.leads.serviceId = this.serviceId;
  //           this.leads.cityId = this.basicDetailForm.value.cityName.id;
  //           this.leads.id = id;
  //           // let res = await this.leadService.updateLeads(this.leads);
  //           // if (res && res.status == 200) {
  //           //   this.sucessReponse();
  //           // }
  //           //this.isShow = false;
  //         } catch (error: any) {
  //           //this.isShow = false;
  //           let err = error;
  //           if (error && error.error && error.error.message) {
  //             err = error.error.message
  //           }
  //           this.toastrService.error(err, "Error");
  //         }
  //       }
  //     }
  //     else {
  //       this.agreedmsg = "Please agree to our terms & Condition";
  //     }
  //   }
  // }

  // public calculateLoan() {
  //   if (this.amount && this.interest_rate && this.months) {
  //     let rate = this.interest_rate / (12 * 100);
  //     let rate1 = (Math.pow(1 + rate, this.months))
  //     let payment = this.amount * rate * (rate1 / (rate1 - 1));
  //     this.payment = payment.toFixed(2);
  //     this.amountPayable = (parseFloat(this.payment) * this.months).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  //     this.interest = (parseFloat(this.payment) * this.months - this.amount).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  //     this.displayAmount = this.amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
  //   }
  // }

  // //#region getOtp from firebase
  // public getOtp() {
  //   // this.basicDetailForm.controls['contactNo'].setValue(this.contactForm.value.contactNo);
  //   // this.isVerifyOtp = false;
  //   // this.isPersonalDetailForm = true;
  //   // this.isOtpInput = true;
  //   this.spinnerService.show();
  //   this.reCaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', { size: 'invisible' })
  //   firebase.auth().signInWithPhoneNumber('+91' + this.contactForm.value.contactNo, this.reCaptchaVerifier).then((confirmationResult) => {
  //     if (confirmationResult && confirmationResult.verificationId) {
  //       this.verify = JSON.parse(JSON.stringify(confirmationResult.verificationId));
  //       this.isOtpInput = true;
  //       this.spinnerService.hide();
  //     }
  //   }).catch((error) => {
  //     this.spinnerService.hide();
  //     //alert(error.message);
  //     this.toastrService.error(error.message, "Firebase");
  //     setTimeout(() => {
  //       window.location.reload();
  //     }, 5000);
  //   });
  // }

  // public onOtpChange(otpCode: any) {
  //   this.otp = otpCode;
  // }

  // public handleClick() {
  //   // this.isVerifyOtp = false;
  //   // this.isPersonalDetailForm = true;
  //   // this.basicDetailForm.controls['contactNo'].setValue(this.contactForm.value.contactNo);
  //   // this.getLeadsByContactNo();
  //   this.spinnerService.show();
  //   var credential = firebase.auth.PhoneAuthProvider.credential(this.verify, this.otp);
  //   firebase.auth().signInWithCredential(credential)
  //     .then((response) => {
  //       this.isVerifyOtp = false;
  //       this.spinnerService.hide();
  //       this.basicDetailForm.controls['contactNo'].setValue(this.contactForm.value.contactNo);
  //       //this.isShow = true;
  //       this.getLeadsByContactNo();
  //       //this.isShow = false;
  //       this.isPersonalDetailForm = true;

  //     }).catch((error) => {
  //       this.spinnerService.hide();
  //       //alert(error.message);
  //       this.toastrService.error(error.message, "Firebase");
  //       this.commonService.showWarning();
  //     });
  // }

  // //#region getOtp from firebase

  // public onKey(value) {
  //   this.selectedCity = this.search(value);
  // }

  // public search(value: string) {
  //   let filter = this.cities.filter(item =>
  //     item.name.toLowerCase().includes(value.toLowerCase())
  //   );
  //   return [...filter];
  // }

  // public async getLeadsByContactNo() {
  //   try {
  //     let res = await this.globalService.getLeadsByContactNo(this.contactForm.value.contactNo, this.serviceId);
  //     if (res && res.status == 200) {
  //       if (res.recordList && res.recordList.length > 0) {
  //         this.leads = res.recordList[0];
  //         if (res.recordList[0].pincode) {
  //           let data = await this.getCityByPincode(res.recordList[0].pincode);
  //         }
  //         this.basicDetailForm.setValue(
  //           {
  //             "contactNo": this.leads.contactNo,
  //             "loanAmount": this.leads.loanAmount,
  //             "customerFullName": this.leads.customerFullName,
  //             "pincode": this.leads.pincode ? this.leads.pincode : null,
  //             "cityName": this.cities.find((c:any) => c.id == this.leads.cityId),
  //             "email": this.leads.email
  //           }
  //         )
  //         // let id = this.employmentTypes.find((c:any) => c.name == "Self Employee")?.id
  //         this.detailForms.setValue(
  //           {
  //             "aadhaarCardNo": this.leads.aadhaarCardNo,
  //             "panCardNo": this.leads.panCardNo,
  //             "employmentTypeId": this.leads.employmentTypeId ? this.employmentTypes.find((c:any) => c.id == this.leads.employmentTypeId) : null,
  //             "primaryBankId": this.leads.primaryBankId
  //           }
  //         )
  //       }
  //     }
  //   } catch (error: any) {
  //     this.toastrService.error(error.message)
  //   }
  // }

  // public setStep(n: any, initial?: string) {
  //   if (initial) {
  //     this.faqs[0].isCollapsed = false;
  //   }
  //   else {
  //     if (this.faqs[n].isCollapsed == false) {
  //       this.faqs[n].isCollapsed = true;
  //     }
  //     else {
  //       for (let index = 0; index < this.faqs.length; index++) {
  //         if (this.faqs[index].isCollapsed == false) {
  //           this.faqs[index].isCollapsed = true;
  //         }
  //       }
  //       this.faqs[n].isCollapsed = false;
  //     }
  //   }
  // }

  public async detailForm() {
    if (this.basicDetailForm.valid) {
      try {
        this.spinnerService.show();
        this.leads = this.basicDetailForm.value;
        this.leads.serviceId = this.serviceId;
        this.leads.cityId = this.basicDetailForm.value.cityName.id;
        this.leads.countryCode = "+91";

        this.leads.employmentTypeId = this.basicDetailForm.value.employmentTypeId.id;
        if (this.basicDetailForm.value.employmentTypeId == "Self Employee") {
          this.leads.employmentTypeId = 2;
          this.leads.annualIncome = this.basicDetailForm.value.income
        }
        else if (this.basicDetailForm.value.employmentTypeId == "Salaried") {
          this.leads.monthlyIncome = this.basicDetailForm.value.income
          this.leads.employmentTypeId = 1;
        }
        debugger;
        if (this.documentMasters && this.documentMasters.length > 0) {
          for (let index = 0; index < this.documentMasters.length; index++) {
            if (this.documentMasters[index].allowDocumentField)
              this.documentMasters[index].documentData = this.customFieldForm.get(this.documentMasters[index].documentFieldName)?.value
          }
          this.leads.customfields = this.documentMasters
        }
        let res = await this.leadService.insertLeads(this.leads);
        if (res && res.status == 200) {
          this.sucessReponse();
        }

        this.spinnerService.hide();
      } catch (error: any) {
        this.spinnerService.hide();
        let err = error;
        if (error && error.error && error.error.message) {
          err = error.error.message
        }
        this.toastrService.error(err, "Error");
      }
    }
    else {
      Object.keys(this.basicDetailForm.controls).forEach(key => {
        this.basicDetailForm.controls[key].markAsTouched();
      });
    }
  }

  public selectEmployeeType() {
    this.selectedEmployeeType = this.basicDetailForm.value.employmentTypeId.name
  }

  public sucessReponse() {
    //this.commonService.showSuccess();
    Swal.fire({
      icon: 'success',
      text: 'Your Home loan inquiry is submitted successfully.',
      confirmButtonColor: '#0162e8'
    })
    //this.isDetailForm = false;
    //this.isVerifyOtp = true;
    //this.isOtpInput = false;
    this.leads = new Leads();
    this.basicDetailForm.reset();
    this.customFieldForm.reset();
  }

  public applyNow() {
    window.scroll({
      top: 0,
      left: 0,
      behavior: 'smooth'
    })
  }

  public async getCityByPincode(event: KeyboardEvent) {
    this.cities  = [];
    const value = (event.target as HTMLInputElement)!.value;;
    if (value && value.length == 6) {
      try {
        let res = await this.globalService.getCityByPincode(value);
        if (res && res.recordList.length > 0) {
          this.cities = res.recordList;
          this.selectedCity = [...this.cities]
          if (this.selectedCity && this.selectedCity.length > 0)
            this.basicDetailForm.get('cityName')?.setValue(this.selectedCity[0])
        }
      } catch (error: any) {
        let err = '';
        if (error && error.error.message) {
          err = error.error.message
        }
        else if (error && error.message) {
          err = error.message
        }
        this.toastrService.error(error);
      }

    }
  }
  public calculateLoan() {

    if (this.emiCalculatorForm.value.amount && this.emiCalculatorForm.value.interest_rate && this.emiCalculatorForm.value.months) {
      let rate = this.emiCalculatorForm.value.interest_rate / (12 * 100);
      let rate1 = (Math.pow(1 + rate, this.emiCalculatorForm.value.months))
      let payment = this.emiCalculatorForm.value.amount * rate * (rate1 / (rate1 - 1));
      this.payment = payment.toFixed(2);
      this.amountPayable = (parseFloat(this.payment) * this.emiCalculatorForm.value.months).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
      this.interest = (parseFloat(this.payment) * this.emiCalculatorForm.value.months - this.emiCalculatorForm.value.amount).toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
      this.displayAmount = this.emiCalculatorForm.value.amount.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

    }
  }

  public keyPressAlphanumeric(event: KeyboardEvent) {
    var inp = String.fromCharCode(event.keyCode);
    if (/[a-zA-Z0-9 ]/.test(inp)) {
      // only alphabet a-z A-Z
      return true;
    } else {
      event.preventDefault();
      return false;
    }
  }
}