mirror of
https://github.com/openSUSE/osem.git
synced 2026-01-01 18:48:11 -05:00
A user should be able to see the missing speakers of only those events that are accessible to him. Fixes #1942
25 lines
1.2 KiB
Ruby
25 lines
1.2 KiB
Ruby
# 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
|