Class: WorkItems::ClosingMergeRequests::CreateService
- Inherits:
-
Object
- Object
- WorkItems::ClosingMergeRequests::CreateService
- Defined in:
- app/services/work_items/closing_merge_requests/create_service.rb
Constant Summary collapse
- ResourceNotAvailable =
Class.new(StandardError)
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(current_user:, work_item:, merge_request_reference:, namespace_path: nil) ⇒ CreateService
constructor
A new instance of CreateService.
Constructor Details
#initialize(current_user:, work_item:, merge_request_reference:, namespace_path: nil) ⇒ CreateService
Returns a new instance of CreateService.
8 9 10 11 12 13 |
# File 'app/services/work_items/closing_merge_requests/create_service.rb', line 8 def initialize(current_user:, work_item:, merge_request_reference:, namespace_path: nil) @current_user = current_user @work_item = work_item @merge_request_reference = merge_request_reference @namespace_path = namespace_path end |
Instance Method Details
#execute ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/services/work_items/closing_merge_requests/create_service.rb', line 15 def execute raise ResourceNotAvailable, 'Cannot update work item' unless @current_user.can?(:update_work_item, @work_item) if @work_item.(:development).blank? return ServiceResponse.error(message: _('Development widget is not enabled for this work item type')) end merge_request = merge_request_from_reference raise ResourceNotAvailable, 'Merge request not available' if merge_request.blank? mr_closing_issue = MergeRequestsClosingIssues.new( merge_request: merge_request, issue_id: @work_item.id, from_mr_description: false ) if mr_closing_issue.save GraphqlTriggers.work_item_updated(@work_item) ServiceResponse.success(payload: { merge_request_closing_issue: mr_closing_issue }) else ServiceResponse.error(message: mr_closing_issue.errors.) end end |