51 lines
1.3 KiB
Ruby
51 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class StudyGroupsController < ApplicationController
|
|
include CommonBehavior
|
|
|
|
before_action :set_group, only: MEMBER_ACTIONS
|
|
|
|
def index
|
|
@search = policy_scope(StudyGroup).ransack(params[:q])
|
|
@study_groups = @search.result.includes(:consumer).order(:name).paginate(page: params[:page])
|
|
authorize!
|
|
end
|
|
|
|
def show
|
|
@search = @study_group.external_users.ransack(params[:q])
|
|
end
|
|
|
|
def edit
|
|
@search = @study_group.external_users.ransack(params[:q])
|
|
@members = StudyGroupMembership.where(user: @search.result, study_group: @study_group)
|
|
end
|
|
|
|
def update
|
|
myparams = study_group_params
|
|
myparams[:external_users] =
|
|
StudyGroupMembership.find(myparams[:study_group_membership_ids].reject(&:empty?)).map(&:user)
|
|
myparams.delete(:study_group_membership_ids)
|
|
update_and_respond(object: @study_group, params: myparams)
|
|
end
|
|
|
|
def destroy
|
|
destroy_and_respond(object: @study_group)
|
|
end
|
|
|
|
def study_group_params
|
|
params[:study_group].permit(:id, :name, study_group_membership_ids: []) if params[:study_group].present?
|
|
end
|
|
private :study_group_params
|
|
|
|
def set_group
|
|
@study_group = StudyGroup.find(params[:id])
|
|
authorize!
|
|
end
|
|
private :set_group
|
|
|
|
def authorize!
|
|
authorize(@study_groups || @study_group)
|
|
end
|
|
private :authorize!
|
|
end
|