adjust api completion

pull/217/head
Pete Matsyburka 2 years ago
parent 843f6c405f
commit ff74574e84

@ -30,7 +30,7 @@ Metrics/ParameterLists:
Max: 10 Max: 10
Metrics/MethodLength: Metrics/MethodLength:
Max: 25 Max: 30
Exclude: Exclude:
- 'db/migrate/**' - 'db/migrate/**'

@ -33,12 +33,18 @@ module Api
def show def show
submitters = @submission.submitters.preload(documents_attachments: :blob, attachments_attachments: :blob) submitters = @submission.submitters.preload(documents_attachments: :blob, attachments_attachments: :blob)
serialized_submitters = submitters.map do |submitter| submitters.each do |submitter|
Submissions::EnsureResultGenerated.call(submitter) if submitter.completed_at? 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 end
serialized_submitters = submitters.map { |submitter| Submitters::SerializeForApi.call(submitter) }
json = @submission.as_json( json = @submission.as_json(
serialize_params.deep_merge( serialize_params.deep_merge(
include: { submission_events: { only: %i[id submitter_id event_type event_timestamp] } } include: { submission_events: { only: %i[id submitter_id event_type event_timestamp] } }
@ -80,6 +86,12 @@ module Api
Submissions.send_signature_requests(submissions) 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) render json: submissions.flat_map(&:submitters)
rescue Submitters::NormalizeValues::UnknownFieldName, Submitters::NormalizeValues::UnknownSubmitterName => e rescue Submitters::NormalizeValues::UnknownFieldName, Submitters::NormalizeValues::UnknownSubmitterName => e
render json: { error: e.message }, status: :unprocessable_entity render json: { error: e.message }, status: :unprocessable_entity
@ -118,8 +130,13 @@ module Api
params: params:
) )
Submissions::NormalizeParamUtils.save_default_value_attachments!(attachments, submitters = submissions.flat_map(&: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 submissions
end end

@ -55,6 +55,8 @@ module Api
@submitter.save! @submitter.save!
@submitter.submission.save! @submitter.submission.save!
SubmissionEvents.create_with_tracking_data(@submitter, 'api_complete_form', request) if @submitter.completed_at?
end end
if @submitter.completed_at? if @submitter.completed_at?

@ -46,7 +46,8 @@ class SubmissionEvent < ApplicationRecord
phone_verified: 'phone_verified', phone_verified: 'phone_verified',
start_form: 'start_form', start_form: 'start_form',
view_form: 'view_form', view_form: 'view_form',
complete_form: 'complete_form' complete_form: 'complete_form',
api_complete_form: 'api_complete_form'
}, scope: false }, scope: false
private private

@ -14,7 +14,8 @@ module SubmissionEvents
phone_verified: 'Phone verified', phone_verified: 'Phone verified',
start_form: 'Submission started', start_form: 'Submission started',
view_form: 'Form viewed', view_form: 'Form viewed',
complete_form: 'Submission completed' complete_form: 'Submission completed',
api_complete_form: 'Submission completed via API'
}.freeze }.freeze
module_function module_function

@ -66,7 +66,7 @@ module Submissions
first_submitter = first_submitter =
submission.template_submitters.filter_map { |s| submitters.find { |e| e.uuid == s['uuid'] } }.first 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 else
Submitters.send_signature_requests(submitters) Submitters.send_signature_requests(submitters)
end end

@ -23,9 +23,11 @@ module Submissions
else else
submitter.document_generation_events.create!(event_name: events.present? ? :retry : :start) 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) submitter.document_generation_events.create!(event_name: :complete)
documents
end end
rescue ActiveRecord::RecordNotUnique rescue ActiveRecord::RecordNotUnique
sleep WAIT_FOR_RETRY sleep WAIT_FOR_RETRY
@ -49,7 +51,7 @@ module Submissions
DocumentGenerationEvent.where(submitter:).order(:created_at).last DocumentGenerationEvent.where(submitter:).order(:created_at).last
end 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 raise WaitForCompleteTimeout if total_wait_time > CHECK_COMPLETE_TIMEOUT
end end

@ -279,6 +279,7 @@ module Submissions
sign_params = { sign_params = {
reason: SIGN_REASON, reason: SIGN_REASON,
certificate: pkcs.certificate, certificate: pkcs.certificate,
doc_mdp_permissions: :no_changes,
key: pkcs.key, key: pkcs.key,
certificate_chain: pkcs.ca_certs || [] certificate_chain: pkcs.ca_certs || []
} }

Loading…
Cancel
Save