package cz.moneta.test.dsl.ufo.banka.pages.fop;

import cz.moneta.test.harness.support.web.*;

import static cz.moneta.test.dsl.ufo.banka.pages.fop.KUL078_S001_AdditionalBusinessData.*;
import static cz.moneta.test.dsl.ufo.operations.shared.SharedElements.LOAD_IMG_DIV_CLASS;


@Wait(value = KUL078_S001_PAGE_LABEL_XPATH, by = Lookup.XPATH, waitSecondsForElement = 60)
@Wait(CONTINUE_BUTTON)
public interface KUL078_S001_AdditionalBusinessData extends WebFlow<KUL078_S001_AdditionalBusinessData> {

    String KUL078_S001_PAGE_LABEL_XPATH = "//div[text()='KUL078_S001']";
    String RETURN_BUTTON = "KUL078_S001_B002";
    String EDIT_CIF_BUTTON = "KUL078_S001_B003";
    String CONTINUE_BUTTON = "KUL078_S001_B004";
    String BUSINESS_FOR_CERTAIN_TIME_RADIO_YES = "KUL078_S001_R002_1";
    String BUSINESS_FOR_CERTAIN_TIME_RADIO_NO = "KUL078_S001_R002_0";
    String ASSOCIATION_FOP_RADIO_YES = "KUL078_S001_R003_1";
    String ASSOCIATION_FOP_RADIO_NO = "KUL078_S001_R003_0";
    String ASSOCIATION_FOP_MEMBERS_COUNT_INPUT = "KUL078_S001_E001";
    String BUSINESS_INTERRUPTED_RADIO = "KUL078_S001_R001_1";
    String BUSINESS_NOT_INTERRUPTED_RADIO = "KUL078_S001_R001_0";
    String NUMBER_OF_EMPLOYEES_INPUT = "KUL078_S001_E002";
    String TRANSFORMATION_RADIO_YES = "KUL078_S001_R004_1";
    String TRANSFORMATION_RADIO_NO = "KUL078_S001_R004_0";
    String OWN_PROFIT_INPUT = "KUL078_S001_E004";
    String FAMILY_BUSINESS_RADIO_YES = "KUL078_S001_R005_1";
    String FAMILY_BUSINESS_RADIO_NO = "KUL078_S001_R005_0";
    String FIRST_ECONOMIC_ACTIVITY_RADIO = "KUL078_S001_G001-0";
    String REVENUE_SHARE_INPUT = "KUL078_S001_E006";
    String SAVE_CHANGE_REVENUE_SHARE_BUTTON = "KUL078_S001_B007";
    String ADDRESS_SAME_AS_RESIDENCY_CHECKBOX = "KUL078_S001_H001_1";
    String ADDRESS_SAME_AS_PERMANENT_RESIDENCE_CHECKBOX = "KUL078_S001_H001_2";
    String ADDRESS_STREET_INPUT = "KUL078_S001_E009";
    String ADDRESS_BUILDING_NUMBER_INPUT = "KUL078_S001_E007";
    String ADDRESS_APARTMENT_NUMBER_INPUT = "KUL078_S001_E016";
    String ADDRESS_SEARCH_BUTTON = "KUL078_S001_B011";
    String ADDRESS_POST_INPUT = "KUL078_S001_E010";
    String ADDRESS_STATE_SELECT = "KUL078_S001_C002";
    String ADDRESS_CZ_BUTTON = "KUL078_S001_B009";
    String ADDRESS_CITY_INPUT = "KUL078_S001_E014";
    String ADDRESS_ZIP_CODE_INPUT = "KUL078_S001_E015";
    String EMAIL_INPUT = "KUL078_S001_E011";
    String MOBIL_PHONE_NUMBER_INPUT = "KUL078_S001_E012";
    String TELEPHONE_NUMBER_INPUT = "KUL078_S001_E013";

    @Click(value = BUSINESS_INTERRUPTED_RADIO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickBusinessInterrupted();

    @Click(value = BUSINESS_NOT_INTERRUPTED_RADIO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickBusinessNotInterrupted();

    @Click(value = BUSINESS_FOR_CERTAIN_TIME_RADIO_YES, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickBusinessForCertainTime();

    @Click(value = BUSINESS_FOR_CERTAIN_TIME_RADIO_NO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickBusinessNotForCertainTime();

    @Click(value = ASSOCIATION_FOP_RADIO_YES, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickAssociationFopYes();

    @Click(value = ASSOCIATION_FOP_RADIO_NO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickAssociationFopNo();

    @TypeInto(ASSOCIATION_FOP_MEMBERS_COUNT_INPUT)
    KUL078_S001_AdditionalBusinessData fillAssociationFopMembersCount(String associationFopMembersCount);

    @Click(value = TRANSFORMATION_RADIO_YES, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickTransformation();

    @Click(value = TRANSFORMATION_RADIO_NO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickNotTransformation();

    @Click(value = FAMILY_BUSINESS_RADIO_YES, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickFamilyBusiness();

    @Click(value = FAMILY_BUSINESS_RADIO_NO, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickNotFamilyBusiness();

    @TypeInto(OWN_PROFIT_INPUT)
    @KeyPress(Key.TAB)
    KUL078_S001_AdditionalBusinessData fillOwnProfit(String profit);

    @TypeInto(NUMBER_OF_EMPLOYEES_INPUT)
    KUL078_S001_AdditionalBusinessData fillNumberOfEmployees(String numberOfEmployees);

    @Click(value = FIRST_ECONOMIC_ACTIVITY_RADIO, jsClick = true, andWait = @Wait(value = LOAD_IMG_DIV_CLASS, by = Lookup.CLASSNAME, until = Until.GONE))
    KUL078_S001_AdditionalBusinessData clickFirstEconomicActivity();

    @TypeInto(REVENUE_SHARE_INPUT)
    @Click(value = SAVE_CHANGE_REVENUE_SHARE_BUTTON, andWait = @Wait(value = LOAD_IMG_DIV_CLASS, by = Lookup.CLASSNAME, until = Until.GONE))
    KUL078_S001_AdditionalBusinessData fillRevenueShare(String revenueShare);

    @Click(value = ADDRESS_SAME_AS_RESIDENCY_CHECKBOX, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickAddressSameAsResidency();

    @Click(value = ADDRESS_SAME_AS_PERMANENT_RESIDENCE_CHECKBOX, jsClick = true)
    KUL078_S001_AdditionalBusinessData clickAddressSameAsPermanentResidence();

    @TypeInto(ADDRESS_STREET_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressStreet(String street);

    @TypeInto(ADDRESS_BUILDING_NUMBER_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressBuilding(String buildingNumber);

    @TypeInto(ADDRESS_APARTMENT_NUMBER_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressApartment(String apartmentNumber);

    @Click(ADDRESS_SEARCH_BUTTON)
    KUL078_S001_AdditionalBusinessData clickAddressSearch();

    @TypeInto(ADDRESS_POST_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressPost(String post);

    @Select(ADDRESS_STATE_SELECT)
    KUL078_S001_AdditionalBusinessData fillAddressState(String state);

    @Click(ADDRESS_CZ_BUTTON)
    KUL078_S001_AdditionalBusinessData fillAddressCZ();

    @TypeInto(ADDRESS_CITY_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressCity(String city);

    @TypeInto(ADDRESS_ZIP_CODE_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressZipCode(String zipcode);

    @TypeInto(EMAIL_INPUT)
    KUL078_S001_AdditionalBusinessData fillEmail(String email);

    @TypeInto(MOBIL_PHONE_NUMBER_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressPhoneNumber(String phoneNumber);

    @TypeInto(TELEPHONE_NUMBER_INPUT)
    KUL078_S001_AdditionalBusinessData fillAddressTelephoneNumber(String telephoneNumber);

    @Click(RETURN_BUTTON)
    KUL078_S001_AdditionalBusinessDataTransitions clickBackToHKO();

    @Click(EDIT_CIF_BUTTON)
    KUL078_S001_AdditionalBusinessDataTransitions clickEdit();

    @Click(CONTINUE_BUTTON)
    KUL078_S001_AdditionalBusinessDataTransitions clickContinue();

}
