# frozen_string_literal: true

module Admin
  class ReportsController < Admin::BaseController
    load_and_authorize_resource :conference, find_by: :short_title
    load_and_authorize_resource :program, through: :conference, singleton: true
    # For some reason this doesn't work, so a workaround is used
    # load_and_authorize_resource :event, through: :program

    def index
      @events = Event.accessible_by(current_ability).where(program: @program)
      @events_commercials = Commercial.where(commercialable_type: 'Event', commercialable_id: @events.pluck(:id))
      @events_missing_commercial = @events.where.not(id: @events_commercials.pluck(:commercialable_id))
      @events_with_requirements = @events.where.not(description: ['', nil])

      attended_registrants_ids = @conference.registrations.where(attended: true).pluck(:user_id)
      @missing_event_speakers = EventUser.joins(:event)
                                .where('event_role = ? and program_id = ?', 'speaker', @program.id)
                                .where.not(user_id: attended_registrants_ids)
                                .where(event_id: @events.pluck(:id))
                                .includes(:user, :event)
    end
  end
end
