module Workstation
  class ReleaseBasicsPage2 < Workstation::BasePage
    page_url("/rb")

    div(:saving_overlay_invisible, class: ["loading-overlay", "text-center", "hidden"])
    div(:saving_overlay_present, class: ["loading-overlay", "text-center"])
    select_list(:release_meta_language, name: "metaLanguage")
    text_field(:artist_name, name: "artistName")
    div(:artist_dataset, class: "tt-dataset-artists")
    select_list(:country_of_origin, id: "country_of_origin")
    text_field(:release_name, name: "releaseName")
    text_field(:release_date, id: "releaseDate")
    text_field(:sales_date, id: "saleStartDate")
    div(:datepicker, id: "ui-datepicker-div")
    select(:imprint, name: "label")
    select(:distribution, name: "distribution")
    select(:genre, id: "genre")
    select(:subgenre, name: "subgenre")
    select(:country_of_origin, id: "country_of_origin")
    select(:film_type, id: "productSubtype")
    select(:studio, id: "imprintName")
    select(:audio_language, id: "audio_language")
    text_field(:copyright, name: "cLine")
    text_area(:short_synopsis, id: "shortSynopsis")
    text_area(:long_synopsis, id: "description")
    radio_button(:closed_caption, id: "createreleasemodal_closedcaption-YES")
    radio_button(:VOD_rights, id: "vodStartDateBtn-Y")
    radio_button(:download_rights, id: "saleStartDateBtn-N")
    radio_button(:theatrical_release, id: "theatricalReleaseDateBtn-N")
    radio_button(:physical_release, id: "physicalReleaseDateBtn-N")
    span(:validation_errors, id: "validation_errors")
    text_field(:c_line, name: "cLine")
    button(:submit, id: "submit")
    link(:cancel, id: "cancel")

    select(:format, name: "format")
    text_field(:label_catalog_number, name: "vendorCatalogNumber")
    text_field(:release_version, name: "version")
    text_field(:manufacturer_upc, name: "manufacturerUpc")
    text_field(:description, name: "description")
    select(:pre_order_date, name: "preorderDate")
    select(:itunes_pricing, name: "itunes_pricing")
    select(:amazon_pricing, name: "amazon_pricing")
    text_field(:vendor_release_id, name: "vendorReleaseIdentifier")

    text_field(:primary_artist, xpath: '//select[@name="performer"]/..//input')

    # create artist
    link(:new_artist, id: "toggle-artist")
    form(:add_artist_form, id: "add-artist-form")
    text_field(:new_artist_name) { add_artist_form_element.text_field_element(name: "name") }
    select_list(:new_artist_country) { add_artist_form_element.select_list_element(name: "orchardCountry") }
    button(:submit_new_artist, id: "submit-artist")

    # create imprint
    link(:new_imprint, id: "toggle-imprint")
    div(:add_imprint_modal, id: "add-imprint")
    text_field(:new_imprint_name) { add_imprint_modal_element.text_field_element(name: "label") }
    button(:submit_new_imprint, id: "submit-imprint")

    def populate_audio_basics(data)
      release_meta_language_element.when_present(10)
      self.release_meta_language = data["meta_language"]
      self.release_name = data["release_name"]
      self.format = data["format"]
      populate_genres(data["genre"], data["subgenre"])
      self.c_line = data["c_line"]
      self.release_date = data["release_date"]
      self.sales_date = data["sales_date"]
      self.primary_artist = data["primary_artist"]
      # can't click with datepicker present
      datepicker_element.when_present # check that id didnt change
      release_name_element.click
      datepicker_element.when_not_present
    end

    def create_new_artist(name)
      new_artist
      self.new_artist_name = name
      self.new_artist_country = "USA"
      submit_new_artist
      wait_until(60) { artist_name == name }
    end

    def create_new_imprint(name)
      new_imprint
      self.new_imprint_name = name
      submit_new_imprint
      wait_until { imprint == name }
    end

    private

    def populate_genres(genre, subgenre)
      self.genre = genre unless genre == ""
      return if subgenre == ""
      subgenre_element.element.option(text: subgenre).wait_until(&:present?)
      self.subgenre = subgenre
    end
  end
end
