43 lines
715 B
Ruby
43 lines
715 B
Ruby
# frozen_string_literal: true
|
|
|
|
class AdminNotices::Dismiss
|
|
include Service::Base
|
|
|
|
policy :invalid_access
|
|
|
|
params do
|
|
attribute :id, :integer
|
|
|
|
validates :id, presence: true
|
|
end
|
|
|
|
model :admin_notice, optional: true
|
|
|
|
transaction do
|
|
step :destroy
|
|
step :reset_problem_check
|
|
end
|
|
|
|
private
|
|
|
|
def invalid_access(guardian:)
|
|
guardian.is_admin?
|
|
end
|
|
|
|
def fetch_admin_notice(params:)
|
|
AdminNotice.find_by(id: params.id)
|
|
end
|
|
|
|
def destroy(admin_notice:)
|
|
return if admin_notice.blank?
|
|
|
|
admin_notice.destroy!
|
|
end
|
|
|
|
def reset_problem_check(admin_notice:)
|
|
return if admin_notice.blank?
|
|
|
|
ProblemCheckTracker.find_by(identifier: admin_notice.identifier)&.reset
|
|
end
|
|
end
|