33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'app/controllers/dscf/credit/facilitator_applications_controller.rb', line 33
def bulk_create
if params[:facilitator_applications].blank?
return render_error(
"facilitator_application.errors.bulk_create",
errors: [ "At least one facilitator application is required" ],
status: :unprocessable_entity
)
end
applications_params = params.require(:facilitator_applications)
unless applications_params.is_a?(Array)
return render_error(
"facilitator_application.errors.bulk_create",
errors: [ "Expected an array of facilitator applications" ],
status: :unprocessable_entity
)
end
results = {
successful: [],
failed: [],
total_count: applications_params.length,
success_count: 0,
failure_count: 0
}
applications_params.each_with_index do |app_params, index|
begin
facilitator_application = @clazz.new(app_params.permit(:user_id, :bank_id))
if app_params[:user_id].present?
facilitator_application.user = Dscf::Core::User.find(app_params[:user_id])
else
raise ActiveRecord::RecordInvalid.new(facilitator_application), "User ID is required"
end
facilitator_application.reviews.build(context: "default", status: "pending")
if facilitator_application.save
results[:successful] << {
index: index,
id: facilitator_application.id,
user_id: facilitator_application.user_id,
bank_id: facilitator_application.bank_id,
message: "Successfully created"
}
results[:success_count] += 1
else
results[:failed] << {
index: index,
user_id: app_params[:user_id],
errors: facilitator_application.errors.full_messages
}
results[:failure_count] += 1
end
rescue ActiveRecord::RecordNotFound => e
results[:failed] << {
index: index,
user_id: app_params[:user_id],
errors: [ "User not found: #{e.message}" ]
}
results[:failure_count] += 1
rescue StandardError => e
results[:failed] << {
index: index,
user_id: app_params[:user_id],
errors: [ e.message ]
}
results[:failure_count] += 1
end
end
render_success(
"facilitator_application.success.bulk_create",
data: results,
status: :created
)
end
|