44 lines
1,004 B
Ruby
44 lines
1,004 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# Delete Metrics::Dashboard::Annotation entry
|
||
|
module Metrics
|
||
|
module Dashboard
|
||
|
module Annotations
|
||
|
class DeleteService < ::BaseService
|
||
|
include Stepable
|
||
|
|
||
|
steps :authorize_action,
|
||
|
:delete
|
||
|
|
||
|
def initialize(user, annotation)
|
||
|
@user, @annotation = user, annotation
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
execute_steps
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
attr_reader :user, :annotation
|
||
|
|
||
|
def authorize_action(_options)
|
||
|
if Ability.allowed?(user, :delete_metrics_dashboard_annotation, annotation)
|
||
|
success
|
||
|
else
|
||
|
error(s_('Metrics::Dashboard::Annotation|You are not authorized to delete this annotation'))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def delete(_options)
|
||
|
if annotation.destroy
|
||
|
success
|
||
|
else
|
||
|
error(s_('Metrics::Dashboard::Annotation|Annotation has not been deleted'))
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|