module Project
  class CreateProductPage < BasePage
    page_url "/project/<?=params[:project_id]?>/product/create"

    div(:error, class: "frc-alert-inner")

    react_button_row(:product_type) do
      div_element(class: "ProductTypeSelect-product")
        .parent.div_element(class: "ButtonsRow")
    end

    # digital product form
    spans(:validation_message, class: "FormField-errorMessage")
    text_field(:product_name, id: "product-name")
    text_field(:product_code, id: "product-code")
    text_field(:product_version, id: "product-version")
    text_field(:version_notes, id: "version")
    button(:full_length_format, text: "Full Length")
    button(:ep_format, text: "EP")
    button(:single_format, text: "Single")
    radio_button(
      :orchard_generated_upc,
      name: "upc-assignment", value: "ORCHARD"
    )
    radio_button(
      :use_own_upc,
      name: "upc-assignment", value: "OWN"
    )
    text_field(:upc, name: "upc")

    # submit buttons
    button(:create_video, text: "CREATE VIDEO PRODUCT")
    button(:create_physical_audio, text: "CREATE PHYSICAL PRODUCT")
    button(:create_digital_audio, text: "CREATE DIGITAL PRODUCT")

    def populate_digital_fields(data)
      self.product_name = data[:product_name]
      self.format = data[:format]
      product_code_data = data[:product_code]
      self.product_code = product_code_data if product_code_data
      product_version_data = data[:product_version]
      self.product_version = product_version_data if product_version_data
      version_notes_data = data[:version_notes]
      self.version_notes = version_notes_data if version_notes_data
    end

    def create_product_button(type)
      case type
      when "video"
        create_video_element
      when "digital audio"
        create_digital_audio_element
      when "physical audio"
        create_physical_audio_element
      else
        fail "unknown product type: '#{button_name}'!"
      end
    end

    private

    def format=(format_data)
      case format_data
      when "Full Length"
        full_length_format
      when "EP"
        ep_format
      when "Music Video"
        music_video_format
      else
        fail "unknown format: #{format}!"
      end
    end
  end
end
