module Royalties
  class PaymentDetailsPage < RoyaltiesPage
    page_url "/payee/<%=params[:payee_id]%>/payment-detail/edit"

    button(:check_button, id: "check")
    button(:western_union_button, id: "western_union")
    button(:wire_transfer_button, id: "wire_transfer")

    text_field(:check_payable_to, name: "payableTo")

    div(:wu_status, id: "input-status")

    def select_wu_status_dropdown(status)
      wu_status_element.click
      wu_status_element.text_field_element.send_keys status
      div(css: "div[class*='is-focused']", text: status).click
    end

    text_field(:acccount_name, name: "accountName")
    text_field(:bank_name, name: "bankName")
    button(:account_routing_btn, name: "Domestic")
    text_field(:account_number, name: "bankAccountNumber")
    text_field(:routing_number, name: "bankRoutingNumber")
    button(:swift_iban_btn, name: "International")
    text_field(:swift_code, name: "swiftCode")
    text_field(:iban_number, name: "iban")

    button(:bank_address) { div(class: "PaymentForm-bank-address").button }

    text_area(:bank_address_field, "data-testid": "input-bank-address")
    text_field(:bank_town_city_field, "data-testid": "input-bank-city")
    text_field(:bank_state_province_field, "data-testid": "input-bank-state")
    text_field(:bank_postal_code, "data-testid": "input-postal-code")

    div(:bank_country, css: "div[class*='select-country']")

    def select_bank_country(country)
      bank_country_element.click
      bank_country_element.text_field_element.send_keys country
      div(css: "div[class*='is-focused']", text: country).click
    end

    button(:save_button, text: "Save")
    button(:cancel_button, text: "Cancel")

    def add_check_details(payable_to)
      check_payable_to_element.send_keys payable_to
    end

    def add_western_union_details(option)
      western_union_button_element.when_present.click
      select_wu_status_dropdown(option)
    end

    # rubocop:disable Metrics/AbcSize
    def add_wire_transfer_details(wire_transfer_details)
      wire_transfer_button_element.when_present.click
      acccount_name_element.set wire_transfer_details[:account_name]
      bank_name_element.set wire_transfer_details[:bank_name]

      case wire_transfer_details[:bank_origin]
      when "US"
        account_routing_btn
        account_number_element.set wire_transfer_details[:account_number]
        routing_number_element.set wire_transfer_details[:routing_number]
      when "EU"
        swift_iban_btn
        swift_code_element.set wire_transfer_details[:swift_code]
        iban_number_element.set wire_transfer_details[:iban_number]
      end
    end
    # rubocop:enable Metrics/AbcSize

    def fill_wt_bank_address
      bank_address
      bank_address_field_element.send_keys "test_address_here"
      bank_town_city_field_element.set "Lublin"
      bank_state_province_field_element.set "Lublin"
      bank_postal_code_element.set "20-635"
      select_bank_country "Poland"
      save_button
    end
  end
end
