# frozen_string_literal: true module Admin class GroupsController < BaseController before_action :set_group, except: [:index] before_action :set_accounts, only: [:show] def index authorize :group, :index? @groups = filtered_groups.page(params[:page]) end def show authorize :group, :index? end def update if @group.update(resource_params) redirect_to admin_group_path(@group.id), notice: I18n.t('generic.changes_saved_msg') else render action: :edit end end def destroy authorize @group, :destroy? @group.destroy! log_action :destroy, @group flash[:notice] = 'Group destroyed' redirect_to admin_groups_path end def make_me_admin GroupAccount.create(group: @group, account: current_account, role: 'admin') redirect_to admin_group_path(@group.id), notice: 'You are now an admin of this group' end private def set_group @group = Group.find(params[:id]) end def set_accounts @admins = GroupAccount.where(group: @group, role: 'admin') @mods = GroupAccount.where(group: @group, role: 'moderator') end def resource_params params.require(:group).permit( :title, :description, # :slug, :tags, :is_private, :is_archived, :is_visible, :is_featured, :is_nsfw ) end def filtered_groups GroupFilter.new(filter_params).results end def filter_params params.permit( :title, :description, :id, :member_count_gte, :created_at_gte ) end end end