# frozen_string_literal: true # Actualiza la relaciĆ³n entre un sitio y una instancia class InstanceModerationsController < ApplicationController before_action :authorize_policy, except: %i[action_on_several] around_action :redirect_to_moderation_queue! def pause instance_moderation.pause! if instance_moderation.may_pause? end def allow instance_moderation.allow! if instance_moderation.may_allow? end def block instance_moderation.block! if instance_moderation.may_block? end def action_on_several instance_moderations = site.instance_moderations.where(id: params[:instance_moderation]) authorize instance_moderations action = params[:instance_moderation_action].to_sym method = :"#{action}!" may = :"may_#{action}?" events = instance_moderation.aasm.events.map(&:name) return unless events.include? action InstanceModeration.transaction do instance_moderations.find_each do |instance_moderation| instance_moderation.public_send(method) if instance_moderation.public_send(may) end end end private def redirect_to_moderation_queue!(&action) redirect_back fallback_location: site_moderation_queue_path, state: session[:moderation_queue_filtered_by_state] yield end # @return [InstanceModeration] def instance_moderation @instance_moderation ||= site.instance_moderations.find(params[:instance_moderation_id]) end def authorize_policy authorize instance_moderation end end