module Video
  class BulkIngestVideoPage < VideoPage
    page_url "/bulkingest"

    table(:bulk_ingest_form, class: "data-grid")
    button(:submit_bulk_form, class: "DataGrid-submit-button")
    div(:ingest_successes, class: "BulkIngestForm-ingest-successes")
    button(:start_process, class: ["BulkIngestIntro-get-started-button", "btn", "btn-primary"])
    svg(:success_tick, class: "Icons-complete-checkmark")
    table(:results_table, class: "BulkIngestForm-results-table")

    def populate_bulk_ingest_form(row, data)
      @indexed_headers = {}
      bulk_ingest_form_element.first.cells.each_with_index do |cell, index|
        @indexed_headers[cell.text] = index
      end
      populate_video_type(row, data)
      populate_video_basics(row, data)
      populate_video_content(row, data)
      populate_video_rights(row, data)
      set_cell(row, @indexed_headers["RELEASE DATE*"], data[:release_date].to_s)
      # set_cell(row, @indexed_headers["Channel Name"], data[:youtube_channel]) # not working just yet
    end

    def populate_video_type(row, data)
      set_cell(row, @indexed_headers["PROJECT ID*"], "3323569")
      set_cell(row, @indexed_headers["FILENAME*"], "#{data[:product_code]}.mov")
      set_cell(row, @indexed_headers["TYPE OF VIDEO*"], data[:type_of_video])
    end

    def populate_video_basics(row, data)
      set_cell(row, @indexed_headers["VIDEO TITLE*"], "Watir Ingest Video #{data[:product_code]}")
      set_cell(row, @indexed_headers["LANGUAGE OF VIDEO TITLE*"], data[:language_of_video_title])
      set_cell(row, @indexed_headers["PRIMARY ARTIST*"], "Aashka")
      # set_cell(row, @indexed_headers["IMPRINT*"], data[:imprint])
      set_cell(row, @indexed_headers["PRODUCT CODE*"], data[:product_code])
    end

    def populate_video_content(row, data)
      set_cell(row, @indexed_headers["LANGUAGE OF VIDEO CONTENT*"], data[:language_of_video_content])
      set_cell(row, @indexed_headers["GENRE*"], data[:genre])
      set_cell(row, @indexed_headers["SUBGENRE*"], data[:subgenre])
      set_cell(row, @indexed_headers["PARENTAL ADVISORY*"], data[:parental_advisory])
    end

    def populate_video_rights(row, data)
      set_cell(row, @indexed_headers["(C) LINE YEAR*"], data[:c_line_year].to_s)
      set_cell(row, @indexed_headers["(C) LINE OWNER*"], data[:c_line_info])
      set_cell(row, @indexed_headers["(P) LINE YEAR*"], data[:p_line_year].to_s)
      set_cell(row, @indexed_headers["(P) LINE OWNER*"], data[:p_line_info])
    end

    def set_cell(row, col, cell_text)
      bulk_ingest_form_element[row][col].double_click
      bulk_ingest_form_element[row][col].text_field_element.when_present.set "#{cell_text}\n"
    end

    def verify_cell_text(row, col, cell_text)
      wait_until { bulk_ingest_form_element[row][col].span_element.exist? }
      expect(bulk_ingest_form_element[row][col].span_element.text).to eq cell_text
    end
  end
end
