# frozen_string_literal: true module Admin class GroupsController < BaseController before_action :set_group, except: [:index] before_action :set_filter_params def index authorize :group, :index? @groups = filtered_groups.page(params[:page]) end def destroy authorize @group, :destroy? @group.destroy! log_action :destroy, @group flash[:notice] = I18n.t('admin.groups.destroyed_msg') redirect_to admin_groups_path(page: params[:page], **@filter_params) end def enable_featured authorize @group, :update? @group.is_featured = true @group.save! log_action :update, @group flash[:notice] = I18n.t('admin.groups.updated_msg') redirect_to admin_groups_path(page: params[:page], **@filter_params) end def disable_featured authorize @group, :update? @group.is_featured = false @group.save! log_action :update, @group flash[:notice] = I18n.t('admin.groups.updated_msg') redirect_to admin_groups_path(page: params[:page], **@filter_params) end private def set_group @group = Group.find(params[:id]) end def set_filter_params @filter_params = filter_params.to_hash.symbolize_keys end def resource_params params.require(:group).permit(:is_featured, :is_nsfw) end def filtered_groups query = Group.order('is_featured DESC, member_count DESC') if params[:title] query = query.where("LOWER(title) LIKE LOWER(?)", "%#{params[:title]}%") end return query end def filter_params params.permit(:sort,) end end end