class VideoAnalysisPresenter
  def initialize(video, video_analysis, matches_presenter)
    @video = video
    @video_analysis = video_analysis
    @matches_presenter = matches_presenter
  end

  def stale?
    return if video.analysis_started_at.nil?

    latest_release_created_at = [
      video.appearance_releases.maximum(:created_at),
      video.talent_releases.maximum(:created_at),
      video.acquired_media_releases.maximum(:created_at)
    ].compact.max
    latest_release_created_at > video.analysis_started_at
  end

  def bookmarks
    video.bookmarks
  end

  def unreleased_appearances
    video.unreleased_appearances
  end

  def video_url
    return original_video_url if !video.analysis_success?

    video_analysis.overlay_video_url || original_video_url
  end

  def chronological_appearances
    @chronological_appearances ||= matches_presenter.build_chronological_matches
  end

  def chronological_graphics_matches
    @chronological_graphics_matches ||= matches_presenter.build_graphics_matches
  end

  def chronological_audio_matches
    @chronological_audio_matches ||= matches_presenter.build_chronological_audio_matches
  end

  def all_tracks_edl_events
    @all_tracks_edl_events ||= matches_presenter.all_tracks_edl_events
  end

  private

  attr_reader :video_analysis, :video, :matches_presenter

  def original_video_url
    ApplicationController._routes.url_helpers.rails_blob_url(video.file, host: AppHost.new.domain_with_port)
  end
end
