Class: SpreeCmCommissioner::AgencyUsers::Create
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::AgencyUsers::Create
- Includes:
- Spree::ServiceModule::Base
- Defined in:
- app/services/spree_cm_commissioner/agency_users/create.rb
Instance Method Summary collapse
-
#call(email:, first_name:, last_name:, password:, role_ids:, agency:, vendor:, service_type:) ⇒ Object
rubocop:disable Metrics/ParameterLists.
Instance Method Details
#call(email:, first_name:, last_name:, password:, role_ids:, agency:, vendor:, service_type:) ⇒ Object
rubocop:disable Metrics/ParameterLists
7 8 9 10 11 12 13 14 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 48 49 50 |
# File 'app/services/spree_cm_commissioner/agency_users/create.rb', line 7 def call(email:, first_name:, last_name:, password:, role_ids:, agency:, vendor:, service_type:) return failure(nil, I18n.t('agency_users.agency_required')) if agency.blank? result = nil ApplicationRecord.transaction do # Step 1: build the user result = build_user( email: email, first_name: first_name, last_name: last_name, password: password, service_type: service_type, role_ids: role_ids, agency: agency, vendor: vendor ) raise ::ActiveRecord::Rollback if result.failure? step_data = result.value # Step 2: assign user to agency result = assign_user_agency( user: step_data[:user], role_ids: step_data[:role_ids], agency: step_data[:agency], vendor: step_data[:vendor] ) raise ::ActiveRecord::Rollback if result.failure? step_data = result.value # Step 3: assign roles result = assign_roles( user: step_data[:user], role_ids: step_data[:role_ids], vendor: step_data[:vendor] ) raise ::ActiveRecord::Rollback if result.failure? end result rescue StandardError => e failure(nil, e.) end |