package cz.moneta.test.dsl.ufo.banka.pages.loans.flexikredit;

import cz.moneta.test.dsl.Harness;
import cz.moneta.test.harness.context.StoreAccessor;
import cz.moneta.test.harness.endpoints.ufo.UfoEndpoint;
import cz.moneta.test.harness.support.web.*;

import static cz.moneta.test.dsl.ufo.banka.pages.loans.flexikredit.ONC001_S001_NewFlexikreditPage.*;

@Wait(value = ONC001_S001_PAGE_LABEL_XPATH, waitSecondsForElement = 40, by = Lookup.XPATH)
@Wait(value = {AMOUNT_INPUT, SEND_BUTTON}, waitSecondsForElement = 40)
public interface ONC001_S001_NewFlexikreditPage extends WebFlow<ONC001_S001_NewFlexikreditPage>, ONC001_S001_NewFlexikreditPageTransitions, StoreAccessor {

    String ONC001_S001_PAGE_LABEL_XPATH = "//div[text()='ONC001_S001']";
    String SEND_BUTTON = "ONC001_S001_B001";
    String AMOUNT_INPUT = "ONC001_S001_E003";
    String NO_PROMO_CHECKBOX = "ONC001_S001_H004_1";
    String CHANGE_PARAMETERS_CHECKBOX = "ONC001_S001_H002_1";

    @TypeInto(value = AMOUNT_INPUT, clear = true)
    ONC001_S001_NewFlexikreditPage fillAmount(int amount);

    @TypeInto(value = AMOUNT_INPUT, clear = true)
    @Click(SEND_BUTTON)
    @AcceptAlert(waitSecondsForAlert = 2, expectedAlertText = "Výše rámce pro Flexikredit musí být v rozmezí 2 000 Kč až 100 000 Kč")
    ONC001_S001_NewFlexikreditPage checkAlertMessageAfterFillingAmountOutsideOfRange(int amount);

    @CustomAction
    default ONC001_S001_NewFlexikreditPage clickNoPromoIfVisible() {
        UfoEndpoint endpoint = getEndpoint(UfoEndpoint.class);
        if (endpoint.isElementVisible(1, NO_PROMO_CHECKBOX, Lookup.ID)) {
            endpoint.jsClick(() -> NO_PROMO_CHECKBOX, Lookup.ID);
        }
        return null;
    }

    @Click(value = CHANGE_PARAMETERS_CHECKBOX, jsClick = true)
    @AcceptAlert(waitSecondsForAlert = 2, expectedAlertText = "Žádost bude pořízena standardním způsobem, některé hodnoty budou předvyplněny")
    ONC001_S001_NewFlexikreditPage clickChangeParameters();

    @Click(SEND_BUTTON)
    ONC001_S001_NewFlexikreditPageTransitions clickSend();

}
