diff options
Diffstat (limited to 'app/services/incident_management/issuable_escalation_statuses/after_update_service.rb')
-rw-r--r-- | app/services/incident_management/issuable_escalation_statuses/after_update_service.rb | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/app/services/incident_management/issuable_escalation_statuses/after_update_service.rb b/app/services/incident_management/issuable_escalation_statuses/after_update_service.rb index a7a99f88b32..b7f8b268f18 100644 --- a/app/services/incident_management/issuable_escalation_statuses/after_update_service.rb +++ b/app/services/incident_management/issuable_escalation_statuses/after_update_service.rb @@ -3,12 +3,12 @@ module IncidentManagement module IssuableEscalationStatuses class AfterUpdateService < ::BaseProjectService - def initialize(issuable, current_user) + def initialize(issuable, current_user, **params) @issuable = issuable @escalation_status = issuable.escalation_status @alert = issuable.alert_management_alert - super(project: issuable.project, current_user: current_user) + super(project: issuable.project, current_user: current_user, params: params) end def execute @@ -22,19 +22,27 @@ module IncidentManagement attr_reader :issuable, :escalation_status, :alert def after_update - sync_to_alert + sync_status_to_alert + add_status_system_note end - def sync_to_alert + def sync_status_to_alert return unless alert return if alert.status == escalation_status.status ::AlertManagement::Alerts::UpdateService.new( alert, current_user, - status: escalation_status.status_name + status: escalation_status.status_name, + status_change_reason: " by changing the incident status of #{issuable.to_reference(project)}" ).execute end + + def add_status_system_note + return unless escalation_status.status_previously_changed? + + SystemNoteService.change_incident_status(issuable, current_user, params[:status_change_reason]) + end end end end |