package cz.moneta.test.dsl.ufo.banka.pages.cards.credit;

import cz.moneta.test.dsl.ufo.banka.pages.loans.NEP028_S001_SignaturePage;
import cz.moneta.test.harness.support.web.*;

import static cz.moneta.test.dsl.ufo.banka.pages.cards.credit.NEP002_CreditCardApplicantInformationPage.VALIDATION_STATUS_SELECT;

@Wait(VALIDATION_STATUS_SELECT)
public interface NEP002_CreditCardApplicantInformationPage extends WebFlow<NEP002_CreditCardApplicantInformationPage> {

    String VALIDATION_STATUS_SELECT = "NEP002_S001_C011";
    String NOTICE_PERIOD_SELECT = "NEP002_S001_C015";
    String PROBATION_SELECT = "NEP002_S001_C016";
    String OCCUPATION_SELECT = "NEP002_S001_C013";
    String INCOME_SOURCES_INPUT = "NEP002_S001_E401";
    String SUBMITTED_INCOME_TYPE_SELECT = "NEP002_S001_C005";
    String OTHER_EXPENSES_INPUT = "NEP002_S001_E035";
    String OTHER_LOAN_PAYMENTS_INPUT = "NEP002_S001_E451";
    String WAGE_DEDUCTIONS_INPUT = "NEP002_S001_E461";
    String CONTINUE_BUTTON = "NEP002_S001_B004";
    String HOME_INCOME_INPUT = "NEP002_S001_E441";
    String NET_INCOME_INPUT = "NEP002_S001_E411";

    @Select(VALIDATION_STATUS_SELECT)
    NEP002_CreditCardApplicantInformationPage selectValidationStatus(String status);

    @Select(NOTICE_PERIOD_SELECT)
    NEP002_CreditCardApplicantInformationPage selectNoticePeriod(String noticePeriod);

    @Select(PROBATION_SELECT)
    NEP002_CreditCardApplicantInformationPage selectProbation(String probation);

    @Select(OCCUPATION_SELECT)
    NEP002_CreditCardApplicantInformationPage selectOccupation(String occupation);

    @TypeInto(INCOME_SOURCES_INPUT)
    NEP002_CreditCardApplicantInformationPage fillIncomeSources(String incomeSources);

    @Select(SUBMITTED_INCOME_TYPE_SELECT)
    NEP002_ProofOfIncomeModal selectSubmittedIncomeType(String submittedIncomeType);

    @TypeInto(OTHER_EXPENSES_INPUT)
    NEP002_CreditCardApplicantInformationPage fillOtherExpenses(int otherExpenses);

    @TypeInto(OTHER_LOAN_PAYMENTS_INPUT)
    NEP002_CreditCardApplicantInformationPage fillOtherLoanPayments(int otherLoanPayments);

    @TypeInto(WAGE_DEDUCTIONS_INPUT)
    NEP002_CreditCardApplicantInformationPage fillWageDeductions(int wageDeductions);

    @TypeInto(HOME_INCOME_INPUT)
    NEP002_CreditCardApplicantInformationPage fillHomeIncome(int homeIncome);

    @TypeInto(NET_INCOME_INPUT)
    NEP002_CreditCardApplicantInformationPage fillNetIncome(int netIncome);

    @Click(CONTINUE_BUTTON)
    NEP028_S001_SignaturePage clickContinueButton();
}
