package cz.moneta.test.dsl.ib.components;

import cz.moneta.test.dsl.ib.account.current.CurrentAccountPage;
import cz.moneta.test.dsl.ib.account.current.TransactionListPage;
import cz.moneta.test.dsl.ib.accountsandtransactions.ListOfStandingOrdersDirectDebitsAndSipoPaymentsPage;
import cz.moneta.test.dsl.ib.accountsandtransactions.paymentawaitingsignature.PaymentsAwaitingSignature;
import cz.moneta.test.dsl.ib.accountsandtransactions.paymentordershistory.PaymentOrdersHistoryPage;
import cz.moneta.test.dsl.ib.accountsandtransactions.pendingtransactions.PendingTransactionsPage;
import cz.moneta.test.dsl.ib.accountsandtransactions.templates.TemplateNewBetweenCreatePage;
import cz.moneta.test.dsl.ib.documents.MyDocumentsPage;
import cz.moneta.test.dsl.ib.payment.domestic.PaymentOrderCreatePage;
import cz.moneta.test.dsl.ib.payment.foreign.ForeignPaymentOderCreatePage;
import cz.moneta.test.harness.support.web.Builder;
import cz.moneta.test.harness.support.web.Click;
import cz.moneta.test.harness.support.web.Until;
import cz.moneta.test.harness.support.web.Wait;

public interface AccountsAndTransactionsSubmenu extends Builder {

    String CURRENT_ACCOUNTS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'balances_list')]";
    String PENDING_TRANSACTIONS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'balances_pendingList')]";
    String TRANSACTIONS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'movements_listExt')]";
    String PAYMENT_ORDERS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'dpoview_list2')]";
    String PAYMENTS_TO_BE_SIGNED_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'waitingRoom_listExt')]";
    String NEW_DOMESTIC_PAYMENT_ORDER_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'dpo_clearForm')]";
    String NEW_FOREIGN_PAYMENT_ORDER_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'fpo_clearForm')]";
    String TEMPLATES_SETTING_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'partner_list')]";
    String STANDING_ORDERS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'ist_listProduct')]";
    String BONUS_PROGRAM_BENE_PLUS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'cardService_benePlus')]";
    String MOBILE_OPERATORS_PAYMENT_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, ''rchar_list'')]";
    String FX_MONEY_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'fxMoney_clearForm')]";
    String NOTIFICATIONS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'forAdv_listRefresh')]";
    String STATEMENTS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'estatement_listRefresh')]";
    String MY_DOCUMENTS_BUTTON = "//div[@id='document']//ul[@id='navList']//a[contains(@href, 'cardService_myDocs')]";

    @Click(CURRENT_ACCOUNTS_BUTTON)
    CurrentAccountPage clickCurrentAccounts();

    @Click(PENDING_TRANSACTIONS_BUTTON)
    PendingTransactionsPage clickPendingTransactions();

    @Wait(value = TRANSACTIONS_BUTTON, until = Until.VISIBLE)
    @Click(TRANSACTIONS_BUTTON)
    TransactionListPage clickTransactions();

    @Click(PAYMENT_ORDERS_BUTTON)
    PaymentOrdersHistoryPage clickPaymentOrders();

    @Click(PAYMENTS_TO_BE_SIGNED_BUTTON)
    PaymentsAwaitingSignature clickPaymentsWaitingForSignature();

    @Click(NEW_DOMESTIC_PAYMENT_ORDER_BUTTON)
    PaymentOrderCreatePage clickNewDomesticPaymentOrder();

    @Click(NEW_FOREIGN_PAYMENT_ORDER_BUTTON)
    ForeignPaymentOderCreatePage clickNewForeignPaymentOrder();

    @Click(TEMPLATES_SETTING_BUTTON)
    TemplateNewBetweenCreatePage clickTemplatesSetting();

    @Click(STANDING_ORDERS_BUTTON)
    ListOfStandingOrdersDirectDebitsAndSipoPaymentsPage clickStandingOrders();

    @Click(BONUS_PROGRAM_BENE_PLUS_BUTTON)
    void clickBonusProgramBenePlus();

    @Click(MOBILE_OPERATORS_PAYMENT_BUTTON)
    void clickMobileOperatorsPayment();

    @Click(FX_MONEY_BUTTON)
    void clickFxMoney();

    @Click(NOTIFICATIONS_BUTTON)
    void clickNotifications();

    @Click(STATEMENTS_BUTTON)
    void clickStatements();

    @Click(MY_DOCUMENTS_BUTTON)
    MyDocumentsPage clickMyDocuments();

}
