module Workstation
  module ReleaseBasicsInfo
    include PageObject

    span(:release_basics_title, id: "release_name_display")
    span(:orchard_artist, id: "artist_name_display")

    span(:primary_artist, id: "primary_artist_display")
    span(:featuring_artist, id: "featuring_artist_display")
    span(:remixer_artist, id: "remixer_artist_display")
    span(:release_meta_language, id: "meta_language_display")
    span(:release_date, id: "release_date_display")
    span(:itunes_pricing, id: "itunes_pricing_display")
    span(:amazon_pricing, id: "amazon_pricing_display")
    span(:release_format, id: "release_format_display")
    span(:imprint, id: "imprint_display")
    span(:genre, id: "genre_display")
    span(:subgenre, id: "subgenre_display")
    span(:c_line, id: "c_line_display")
    span(:label_catalog_number, id: "label_catalog_display")
    span(:product_code, id: "product_code_display")
    span(:release_version, id: "release_version")
    span(:manufacturer_upc, id: "manufacturer_upc_display")
    span(:assigned_upc, id: "upc_display")

    span(:release_basics_composer, id: "classical_composers_display")

    def release_basics_values(only_for:)
      values = {
        product_name: release_basics_title,
        meta_language: release_meta_language,
        release_date: release_date,
        format: release_format,
        imprint: imprint,
        genre: genre,
        subgenre: subgenre,
        c_line: c_line,
        product_code: product_code,
        version: release_version
      }.merge(artist_values).merge(pricing_values)
      values.select! { |k, _v| only_for.include? k }
      values
    end

    private

    def pricing_values
      {
        itunes_pricing: itunes_pricing,
        amazon_pricing: amazon_pricing
      }
    end

    def artist_values
      {
        primary_artists: primary_artist.split(", "),
        featuring_artists: featuring_artist.split(", "),
        remixer_artists: remixer_artist.split(", ")
      }
    end
  end
end
