Class: Dscf::Credit::FacilitatorCreationService

Inherits:
Object
  • Object
show all
Defined in:
app/services/dscf/credit/facilitator_creation_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_user, facilitator_class = Dscf::Credit::Facilitator) ⇒ FacilitatorCreationService

Returns a new instance of FacilitatorCreationService.



5
6
7
8
# File 'app/services/dscf/credit/facilitator_creation_service.rb', line 5

def initialize(current_user, facilitator_class = Dscf::Credit::Facilitator)
  @current_user = current_user
  @facilitator_class = facilitator_class
end

Instance Attribute Details

#current_userObject (readonly)

Returns the value of attribute current_user.



3
4
5
# File 'app/services/dscf/credit/facilitator_creation_service.rb', line 3

def current_user
  @current_user
end

#facilitator_classObject (readonly)

Returns the value of attribute facilitator_class.



3
4
5
# File 'app/services/dscf/credit/facilitator_creation_service.rb', line 3

def facilitator_class
  @facilitator_class
end

Instance Method Details

#create_batch(facilitators_params) ⇒ Hash

Creates multiple facilitators in batch

Parameters:

  • facilitators_params (Array<Hash>)

    Array of facilitator parameters

Returns:

  • (Hash)

    Results containing successful and failed creations



33
34
35
36
37
38
39
40
41
42
43
# File 'app/services/dscf/credit/facilitator_creation_service.rb', line 33

def create_batch(facilitators_params)
  validate_batch_params(facilitators_params)

  results = initialize_batch_results(facilitators_params.length)

  facilitators_params.each_with_index do |facilitator_attrs, index|
    process_single_facilitator_in_batch(facilitator_attrs, index, results)
  end

  results
end

#create_single(facilitator_params) ⇒ Dscf::Credit::Facilitator

Creates a single facilitator

Parameters:

  • facilitator_params (Hash)

    The facilitator parameters

Returns:

Raises:

  • (StandardError)

    If creation fails



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/services/dscf/credit/facilitator_creation_service.rb', line 14

def create_single(facilitator_params)
  ActiveRecord::Base.transaction do
    facilitator_data = build_facilitator_data(facilitator_params)
    facilitator = facilitator_class.new(facilitator_data)
    facilitator.kyc_reviewed_by = current_user
    facilitator.kyc_review_date = Time.current

    if facilitator.save
      create_initial_performance(facilitator)
      facilitator
    else
      raise StandardError, facilitator.errors.full_messages.join(", ")
    end
  end
end