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

import cz.moneta.test.dsl.newib.NewIbPageFlow;
import cz.moneta.test.harness.support.web.CheckElementPresent;
import cz.moneta.test.harness.support.web.Click;
import cz.moneta.test.harness.support.web.Wait;

import static cz.moneta.test.dsl.newib.savings.DpsPage.PENSION_TITLE_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsPage.QUICK_OVERVIEW_TITLE_XPATH;
import static cz.moneta.test.dsl.newib.savings.DpsPage.ALLOCATION_INTO_FUNDS_TITLE_XPATH;

@Wait({PENSION_TITLE_XPATH, QUICK_OVERVIEW_TITLE_XPATH, ALLOCATION_INTO_FUNDS_TITLE_XPATH})
public interface DpsPage extends NewIbPageFlow<DpsPage> {
    String PENSION_TITLE_XPATH = "//h2[@class='t-title t-title--h5 u-mb--0' and text()='Penze']";
    String QUICK_OVERVIEW_TITLE_XPATH = "//h3[@class='t-title t-title--h5 u-mb--medium' and text()='Rychlý přehled']";
    String ALLOCATION_INTO_FUNDS_TITLE_XPATH = "//h3[@class='t-title t-title--h5 u-mb--medium' and text()='Rozložení do fondů']";
    String CONTRIBUTIONS_AND_DEPOSITS_BUTTON_XPATH = "//button[@data-testid='dps-change-contribution' and text()='Příspěvky a vklady']";
    String CHANGE_STRATEGY_BUTTON_XPATH = "//button[@data-testid='dps-change-strategy' and text()='Změnit strategii']";
    String OVERVIEW_TEXT_XPATH = "//div[@class='c-chartLegend__row__label' and (contains(normalize-space(), 'Vaše příspěvky') or contains(normalize-space(), 'Od zaměstnavatele') or contains(normalize-space(), 'Zhodnocení') or contains(normalize-space(), 'Od státu'))]";
    String QUICK_OVERVIEW_TEXT_XPATH = "//table[contains(., 'Celkem naspořeno') and contains(., 'Doba spoření') and contains(., 'Číslo účtu') and contains(., 'Doba spoření') and contains(., 'Číslo smlouvy / v.s.') and contains(., 'Měsíční příspěvek') and contains(., 'Příspěvek zaměstnavatele')]";
    String ALLOCATION_INTO_FUNDS_TEXT_XPATH = "//table[contains(., 'Povinný konzervativní fond NN Penzijní společnosti, a.s.') and contains(., 'Vyvážený účastnický fond NN Penzijní společnosti, a.s.')]";
    String TAB_DOCUMENTS_XPATH = "//span[@data-testid='dps-tab-documents' and text()='Dokumenty']";
    String YOUR_DOCUMENTS_XPATH = "//p[@class='u-textLarge u-fontWeightSemiBold u-mb--small' and text()='Vaše dokumenty']";
    String FUND_INFORMATION_XPATH = "//p[@class='u-textLarge u-fontWeightSemiBold u-mb--small' and text()='Informace o fondech']";
    String TAB_FAQ_XPATH = "//span[@data-testid='dps-tab-FAQ' and text()='Často kladené otázky']";
    String FAQ_QUESTION_XPATH = "//span[@class='c-collapse__toggle__text' and text()='Kde najdu smlouvu o Doplňkovém penzijním spoření pro zaměstnavatele?']";
    String FAQ_ANSWER_XPATH = "//p[@data-testid='TextComponent']/small[contains(normalize-space(), 'Smlouvu o DPS najdete v sekci Dokumenty')]";
    String TAB_CONTACTS_XPATH = "//span[@data-testid='dps-tab-contacts' and text()='Kontakty']";
    String CONTACTS_TEXT_XPATH = "//div[@class='c-tabs__contentItem is-active' and .//p[@data-testid='TextComponent' and contains(., 'Máte k doplňkovému penzijnímu spoření nějaké otázky?')] and .//p[@data-testid='TextComponent' and contains(., 'Pokud chcete upravit výši příspěvků, strategii, či cokoliv jiného, kontaktujte prosím NN Penzijní společnost, nebo si sjednejte schůzku s jejich poradcem.')]]";
    String PHONE_NUMBER_XPATH = "//span[@class='u-colorBrand u-textLarge u-fontWeightSemiBold' and text()='244 090 800']";
    String EMAIL_XPATH = "//span[@class='u-colorBrand u-textLarge u-fontWeightSemiBold' and text()='dotazy@nn.cz']";
    String MEETING_XPATH = "//span[@class='u-colorBrand u-textLarge u-fontWeightSemiBold' and text()='Sjednat schůzku']";
    String CONTRIBUTIONS_AND_DEPOSITS_ALERT_XPATH = "//div[@class='c-alert__text' and contains(., 'Zpracováváme změnu nastavení příspěvků. Změna bude platná od')]";

    @CheckElementPresent(CONTRIBUTIONS_AND_DEPOSITS_BUTTON_XPATH)
    DpsPage checkChangeContributionButton();

    @CheckElementPresent(CHANGE_STRATEGY_BUTTON_XPATH)
    DpsPage checkChangeStrategyButton();

    @CheckElementPresent(OVERVIEW_TEXT_XPATH)
    DpsPage checkOverviewText();

    @CheckElementPresent(QUICK_OVERVIEW_TEXT_XPATH)
    DpsPage checkQuickOverviewText();

    @CheckElementPresent(ALLOCATION_INTO_FUNDS_TEXT_XPATH)
    DpsPage checkAllocationIntoFundsText();

    @Click(TAB_DOCUMENTS_XPATH)
    DpsPage clickOnTabDocuments();

    @CheckElementPresent(YOUR_DOCUMENTS_XPATH)
    DpsPage checkYourDocuments();

    @CheckElementPresent(FUND_INFORMATION_XPATH)
    DpsPage checkFundInformation();

    @Click(TAB_FAQ_XPATH)
    DpsPage clickOnTabFaq();

    @Click(FAQ_QUESTION_XPATH)
    DpsPage clickOnFaqQuestion();

    @CheckElementPresent(FAQ_ANSWER_XPATH)
    DpsPage checkFaqAnswer();

    @Click(TAB_CONTACTS_XPATH)
    DpsPage clickOnContacts();

    @CheckElementPresent(CONTACTS_TEXT_XPATH)
    DpsPage checkContactsText();

    @CheckElementPresent(PHONE_NUMBER_XPATH)
    DpsPage checkPhoneNumber();

    @CheckElementPresent(EMAIL_XPATH)
    DpsPage checkEmail();

    @CheckElementPresent(MEETING_XPATH)
    DpsPage checkMeeting();

    @Click(CONTRIBUTIONS_AND_DEPOSITS_BUTTON_XPATH)
    DpsContributionsAndDepositsPage clickOnContributionsAndDepositsButton();

    @CheckElementPresent(CONTRIBUTIONS_AND_DEPOSITS_ALERT_XPATH)
    DpsPage checkContributionsAndDepositsAlert();
}