Class: Import::SourceUsers::ReassignService
- Inherits:
-
BaseService
- Object
- BaseService
- Import::SourceUsers::ReassignService
- Includes:
- Gitlab::Utils::StrongMemoize
- Defined in:
- app/services/import/source_users/reassign_service.rb
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(import_source_user, assignee_user, current_user:) ⇒ ReassignService
constructor
A new instance of ReassignService.
Methods included from Gitlab::InternalEventsTracking
Constructor Details
#initialize(import_source_user, assignee_user, current_user:) ⇒ ReassignService
Returns a new instance of ReassignService.
8 9 10 11 12 13 |
# File 'app/services/import/source_users/reassign_service.rb', line 8 def initialize(import_source_user, assignee_user, current_user:) @import_source_user = import_source_user @current_user = current_user @assignee_user = assignee_user @root_namespace = import_source_user.namespace.root_ancestor 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 39 40 41 42 43 44 45 46 47 |
# File 'app/services/import/source_users/reassign_service.rb', line 15 def execute validation_error = run_validations return validation_error if validation_error.is_a?(ServiceResponse) && validation_error.error? invalid_status = false reassign_successful = false import_source_user.with_lock do if import_source_user.reassignable_status? reassign_successful = reassign_user else invalid_status = true end end return error_invalid_status if invalid_status unless reassign_successful track_reassignment_event('fail_placeholder_user_reassignment') return ServiceResponse.error(payload: import_source_user, message: import_source_user.errors.) end if skip_reassignment_confirmation? Import::ReassignPlaceholderUserRecordsWorker.perform_async(import_source_user.id, 'confirmation_skipped' => true) track_reassignment_event('reassign_placeholder_user_without_confirmation') else send_user_reassign_email track_reassignment_event('propose_placeholder_user_reassignment') end ServiceResponse.success(payload: import_source_user) end |