47 lines
1.4 KiB
Ruby
Executable File
47 lines
1.4 KiB
Ruby
Executable File
class Api::V1::Accounts::Inboxes::AssignmentPoliciesController < Api::V1::Accounts::BaseController
|
|
before_action :fetch_inbox
|
|
before_action :fetch_assignment_policy, only: [:create]
|
|
before_action -> { check_authorization(AssignmentPolicy) }
|
|
before_action :validate_assignment_policy, only: [:show, :destroy]
|
|
|
|
def show
|
|
@assignment_policy = @inbox.assignment_policy
|
|
end
|
|
|
|
def create
|
|
# There should be only one assignment policy for an inbox.
|
|
# If there is a new request to add an assignment policy, we will
|
|
# delete the old one and attach the new policy
|
|
remove_inbox_assignment_policy
|
|
@inbox_assignment_policy = @inbox.create_inbox_assignment_policy!(assignment_policy: @assignment_policy)
|
|
@assignment_policy = @inbox.assignment_policy
|
|
end
|
|
|
|
def destroy
|
|
remove_inbox_assignment_policy
|
|
head :ok
|
|
end
|
|
|
|
private
|
|
|
|
def remove_inbox_assignment_policy
|
|
@inbox.inbox_assignment_policy&.destroy
|
|
end
|
|
|
|
def fetch_inbox
|
|
@inbox = Current.account.inboxes.find(permitted_params[:inbox_id])
|
|
end
|
|
|
|
def fetch_assignment_policy
|
|
@assignment_policy = Current.account.assignment_policies.find(permitted_params[:assignment_policy_id])
|
|
end
|
|
|
|
def permitted_params
|
|
params.permit(:assignment_policy_id, :inbox_id)
|
|
end
|
|
|
|
def validate_assignment_policy
|
|
return render_not_found_error(I18n.t('errors.assignment_policy.not_found')) unless @inbox.assignment_policy
|
|
end
|
|
end
|