package cz.moneta.test.dsl.newib.savings;

import cz.moneta.test.dsl.newib.NewIbPageFlow;
import cz.moneta.test.harness.support.web.*;

import static cz.moneta.test.dsl.newib.savings.AmlQuestionnairePage.TITLE_AML_QUESTIONNAIRE_XPATH;

@Wait(value = {TITLE_AML_QUESTIONNAIRE_XPATH}, waitSecondsForElement = 30)
public interface AmlQuestionnairePage extends NewIbPageFlow<AmlQuestionnairePage> {

    String TITLE_AML_QUESTIONNAIRE_XPATH = "//h2[@class='t-title t-title--h4'][text()='Údaje vyžadované zákonem']";
    String TITLE_BUILDING_SAVINGS_XPATH = "//h1[@class='t-title t-title--h3 u-mb--xLarge'][text()='Stavební spoření']";
    String AML_BUILDING_SAVINGS_TEXT_XPATH = "//div[@class='c-card__header__text'][contains(., 'Zeptat se na tyto informace musíme') and contains(., 'Jaký je hlavní zdroj prostředků') and contains(., 'Příjem ze zaměstnání') and contains(., 'Příjem z podnikání') and contains(., 'Důchod / Renta') and contains(., 'Sociální dávky') and contains(., 'Příjem od rodinných příslušníků') and contains(., 'Jakým způsobem budete spořit') and contains(., 'Budu vkládat hotovost') and contains(., 'Bezhotovostními převody ze svého bankovního účtu') and contains(., 'Budu vkládat hotovost') and contains(., 'Hotovost bude vkládat třetí osoba') and contains(., 'Bezhotovostní platby bude zasílat třetí osoba') and contains(., 'Jaká je přibližná výše Vašeho pravidelného měsíčního příjmu') and contains(., 'Do 50 000 Kč') and contains(., '50 000 - 100 000 Kč') and contains(., 'Nad 100 000 Kč') and contains(., 'Odvádíte daně pouze v ČR') and contains(., 'Ano') and contains(., 'Ne')]";
    String AML_DEPOSIT_ORIGIN_XPATH = "//li[@id='depositOrigin_value-1']//span[text()='Příjem ze zaměstnání']";
    String AML_WAY_OF_SAVING_XPATH = "//li[@id='wayOfSaving_value-2']//span[text()='Bezhotovostními převody ze svého bankovního účtu']";
    String AML_RANGE_OF_INCOME_VALUE_XPATH = "//li[@id='rangeOfIncome_value-AML2.2.DO_100']//span[text()='50 000 - 100 000 Kč']";
    String AML_CZ_ONLY_TAX_RESIDENCE_LABEL_XPATH = "//li[@id='czOnlyTaxResidence_value-1']//span[text()='Ano']";
    String BACK_BUTTON_XPATH = "//button[@data-testid='Button'][text()='Zpět']";
    String CONFIRM_BUTTON_XPATH = "//button[@data-testid='Button'][text()='Pokračovat']";
    String PRE_CONTRACTUAL_INFORMATION_TITLE_XPATH = "//h2[@class='t-title t-title--h4'][text()='Přečtěte si Předsmluvní informace']";
    String DPS_SOURCE_OF_INCOME_XPATH = "//button[@id='sourceOfIncome_button']";
    String SELECT_DPS_SOURCE_OF_INCOME_XPATH = "//div[@class='c-dropdown__itemContent' and text()='Příjem ze zaměstnání']";
    String DPS_INCOME_XPATH = "//button[@id='income_button']";
    String SELECT_DPS_INCOME_XPATH = "//div[@class='c-dropdown__itemContent' and contains(., '50') and contains(., '000')]";
    String PAY_TAXES_XPATH = "//span[@data-testid='TextComponent' and text()='Platím daně pouze v ČR']";
    String NOT_PEP_PERSON_XPATH = "//span[@data-testid='TextComponent' and text()='Nejsem politicky exponovaná osoba']";
    String NOT_GREEN_CARD_HOLDER_XPATH = "//span[@data-testid='TextComponent' and text()='Nejsem držitelem Zelené karty, mým investičním poradcem nebo zástupcem není americká osoba']";
    String CONTINUE_BUTTON_XPATH = "//button[@data-testid='dps-shared-datarequiredbylaw-btn-next' and text()='Pokračovat']";

    @CheckElementPresent(TITLE_AML_QUESTIONNAIRE_XPATH)
    AmlQuestionnairePage checkAmlQuestionnaire();

    @CheckElementPresent(TITLE_BUILDING_SAVINGS_XPATH)
    AmlQuestionnairePage checkTitleBuildingSavings();

    @Click(AML_DEPOSIT_ORIGIN_XPATH)
    AmlQuestionnairePage clickOnAmlDepositOrigin();

    @Click(AML_WAY_OF_SAVING_XPATH)
    AmlQuestionnairePage clickOnAmlWayOfSavings();

    @Click(AML_RANGE_OF_INCOME_VALUE_XPATH)
    AmlQuestionnairePage clickOnAmlRangeOfIncomeValue();

    @Click(AML_CZ_ONLY_TAX_RESIDENCE_LABEL_XPATH)
    AmlQuestionnairePage clickOnAmlCzOnlyTaxResidenceLabel();

    @CheckElementPresent(BACK_BUTTON_XPATH)
    AmlQuestionnairePage checkBackButton();

    @Click(value = CONFIRM_BUTTON_XPATH, andWait = @Wait(value = PRE_CONTRACTUAL_INFORMATION_TITLE_XPATH, waitSecondsForElement = 100))
    PrecontractPage clickOnConfirmButton();

    @CheckElementPresent(AML_BUILDING_SAVINGS_TEXT_XPATH)
    AmlQuestionnairePage checkAmlBuildingSavingsText();

    @Click(DPS_SOURCE_OF_INCOME_XPATH)
    AmlQuestionnairePage clickOnDpsSourceOfIncome();

    @Click(SELECT_DPS_SOURCE_OF_INCOME_XPATH)
    AmlQuestionnairePage selectDpsSourceOfIncome();

    @Click(DPS_INCOME_XPATH)
    AmlQuestionnairePage clickOnDpsIncome();

    @Click(SELECT_DPS_INCOME_XPATH)
    AmlQuestionnairePage selectDpsIncome();

    @CheckElementPresent(PAY_TAXES_XPATH)
    AmlQuestionnairePage checkPayTaxes();

    @CheckElementPresent(NOT_PEP_PERSON_XPATH)
    AmlQuestionnairePage checkNotPepPerson();

    @CheckElementPresent(NOT_GREEN_CARD_HOLDER_XPATH)
    AmlQuestionnairePage checkNotGreenCardHolder();

    @Click(CONTINUE_BUTTON_XPATH)
    DpsStaticDocumentsAndContractPage clickOnContinueButton();
}