module Workstation
  module FilmCastAndCrew
    include PageObject

    indexed_property(
      :talent,
      [
        [:text_field, :talent_first_name, { id: "top_talent_firstName_%s" }],
        [:text_field, :talent_last_name, { id: "top_talent_lastName_%s" }],
        [:text_field, :talent_character, { id: "top_talent_character_%s" }],
        [:button, :talent_character_trash, { id: "top_talent_character_trash_cans_%s" }]
      ]
    )

    indexed_property(
      :production_crew,
      [
        [:text_field, :production_crew_first_name, { id: "production_crew_firstName_%s" }],
        [:text_field, :production_crew_last_name, { id: "production_crew_lastName_%s" }],
        [:select, :production_crew_role, { id: "productionCrewInput_role_%s" }],
        [:button, :production_crew_trash, { id: "production_crew_trash_cans_%s" }]
      ]
    )

    def add_talent(talent_data)
      talent_data.each_with_index do |member_data, i|
        member = talent[i + 1] # IDs start at 1
        member.talent_first_name = member_data["first_name"]
        member.talent_last_name = member_data["last_name"]
        member.talent_character = member_data["character"]
      end
    end

    def add_production_crew(production_crew_data)
      production_crew_data.each_with_index do |member_data, i|
        member = production_crew[i + 1] # IDs start at 1
        member.production_crew_first_name = member_data["first_name"]
        member.production_crew_last_name = member_data["last_name"]
        member.production_crew_role = member_data["role"]
      end
    end
  end
end
