Skip to content

Commit

Permalink
adjust api completion
Browse files Browse the repository at this point in the history
  • Loading branch information
omohokcoj committed Feb 10, 2024
1 parent 843f6c4 commit ff74574
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 11 deletions.
2 changes: 1 addition & 1 deletion .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Metrics/ParameterLists:
Max: 10

Metrics/MethodLength:
Max: 25
Max: 30
Exclude:
- 'db/migrate/**'

Expand Down
27 changes: 22 additions & 5 deletions app/controllers/api/submissions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,18 @@ def index
def show
submitters = @submission.submitters.preload(documents_attachments: :blob, attachments_attachments: :blob)

serialized_submitters = submitters.map do |submitter|
Submissions::EnsureResultGenerated.call(submitter) if submitter.completed_at?
submitters.each do |submitter|
if submitter.completed_at? && submitter.documents_attachments.blank?
submitter.documents_attachments = Submissions::EnsureResultGenerated.call(submitter)
end
end

Submitters::SerializeForApi.call(submitter)
if @submission.audit_trail_attachment.blank? && submitters.all?(&:completed_at?)
@submission.audit_trail_attachment = Submissions::GenerateAuditTrail.call(@submission)
end

serialized_submitters = submitters.map { |submitter| Submitters::SerializeForApi.call(submitter) }

json = @submission.as_json(
serialize_params.deep_merge(
include: { submission_events: { only: %i[id submitter_id event_type event_timestamp] } }
Expand Down Expand Up @@ -80,6 +86,12 @@ def create

Submissions.send_signature_requests(submissions)

submissions.each do |submission|
if submission.submitters.all?(&:completed_at?) && submission.submitters.last
ProcessSubmitterCompletionJob.perform_later(submission.submitters.last)
end
end

render json: submissions.flat_map(&:submitters)
rescue Submitters::NormalizeValues::UnknownFieldName, Submitters::NormalizeValues::UnknownSubmitterName => e
render json: { error: e.message }, status: :unprocessable_entity
Expand Down Expand Up @@ -118,8 +130,13 @@ def create_submissions(template, params)
params:
)

Submissions::NormalizeParamUtils.save_default_value_attachments!(attachments,
submissions.flat_map(&:submitters))
submitters = submissions.flat_map(&:submitters)

Submissions::NormalizeParamUtils.save_default_value_attachments!(attachments, submitters)

submitters.each do |submitter|
SubmissionEvents.create_with_tracking_data(submitter, 'api_complete_form', request) if submitter.completed_at?
end

submissions
end
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/api/submitters_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ def update
@submitter.save!

@submitter.submission.save!

SubmissionEvents.create_with_tracking_data(@submitter, 'api_complete_form', request) if @submitter.completed_at?
end

if @submitter.completed_at?
Expand Down
3 changes: 2 additions & 1 deletion app/models/submission_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ class SubmissionEvent < ApplicationRecord
phone_verified: 'phone_verified',
start_form: 'start_form',
view_form: 'view_form',
complete_form: 'complete_form'
complete_form: 'complete_form',
api_complete_form: 'api_complete_form'
}, scope: false

private
Expand Down
3 changes: 2 additions & 1 deletion lib/submission_events.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ module SubmissionEvents
phone_verified: 'Phone verified',
start_form: 'Submission started',
view_form: 'Form viewed',
complete_form: 'Submission completed'
complete_form: 'Submission completed',
api_complete_form: 'Submission completed via API'
}.freeze

module_function
Expand Down
2 changes: 1 addition & 1 deletion lib/submissions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ def send_signature_requests(submissions)
first_submitter =
submission.template_submitters.filter_map { |s| submitters.find { |e| e.uuid == s['uuid'] } }.first

Submitters.send_signature_requests([first_submitter])
Submitters.send_signature_requests([first_submitter]) if first_submitter
else
Submitters.send_signature_requests(submitters)
end
Expand Down
6 changes: 4 additions & 2 deletions lib/submissions/ensure_result_generated.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,11 @@ def call(submitter)
else
submitter.document_generation_events.create!(event_name: events.present? ? :retry : :start)

GenerateResultAttachments.call(submitter)
documents = GenerateResultAttachments.call(submitter)

submitter.document_generation_events.create!(event_name: :complete)

documents
end
rescue ActiveRecord::RecordNotUnique
sleep WAIT_FOR_RETRY
Expand All @@ -49,7 +51,7 @@ def wait_for_complete_or_fail(submitter)
DocumentGenerationEvent.where(submitter:).order(:created_at).last
end

break last_event if last_event.event_name.in?(%w[complete fail])
break submitter.documents if last_event.event_name.in?(%w[complete fail])

raise WaitForCompleteTimeout if total_wait_time > CHECK_COMPLETE_TIMEOUT
end
Expand Down
1 change: 1 addition & 0 deletions lib/submissions/generate_audit_trail.rb
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ def call(submission)
sign_params = {
reason: SIGN_REASON,
certificate: pkcs.certificate,
doc_mdp_permissions: :no_changes,
key: pkcs.key,
certificate_chain: pkcs.ca_certs || []
}
Expand Down

0 comments on commit ff74574

Please sign in to comment.