module OA
  class VideoDashboardPage < ::UniversalPage
    page_url ENVCONFIG["OA"] + "/videodashboard"
    select_list(:status_type, id: "statusType")
    div(:autocomplete_container, class: "ac_results")
    list_items(:autocomplete_match) { autocomplete_container_element.list_item_elements }
    text_field(:dashboard_search, id: "releaseName")
    button(:view_button, id: "go")
    element(:loader, :tr, id: "loader")
    table(:results_table, class: "data")
    link(:show_details, class: "itemShowLink")
    link(:view_metadata) { results_table_element.link_element(text: "View Metadata") }
    div(:metadata_modal) { div_element(id: "modal_overlay").div_element(class: "panelContent") }
    cells(:asset_id) { metadata_modal_element.cell_elements(text: "Asset Id:") }
    cell(:raw_asset_id) { asset_id_elements.first.cell_element(xpath: "./following-sibling::*") }
    cell(:mastered_asset_id) { asset_id_elements.last.cell_element(xpath: "./following-sibling::*") }

    def asset_id_for_mastered_file(file_name, upc)
      goto
      self.status_type = "All"
      self.dashboard_search = file_name
      autocomplete_container_element.element.wait_until_present
      wait_until { autocomplete_match_elements.any? { |x| x.element.present? } }
      matches = autocomplete_match_elements.size
      autocomplete_match_elements.first.element.when_present.click
      view_button
      loader_element.element.when_present.wait_while_present
      wait_until { results_table_element[2]["File Name"].text == file_name }
      @search_result = 1
      select_correct_release(file_name, upc, matches) if matches > 1
      return nil unless results_table_element[2]["UPC"].text == upc
      show_details
      view_metadata_element.when_present.click
      metadata_modal_element.element.wait_until_present
      mastered_asset_id
    end

    def select_correct_release(file_name, upc, matches)
      return if results_table_element[2]["UPC"].text == upc
      return unless @search_result < matches
      dashboard_search_element.element.send_keys :arrow_down
      autocomplete_match_elements[@search_result].element.when_present.click
      view_button
      loader_element.element.when_present.wait_while_present
      wait_until { results_table_element[2]["File Name"].text == file_name }
      @search_result += 1
      select_correct_release(file_name, upc, matches) if results_table_element[2]["UPC"].text != upc
    end
  end
end
