verification

This commit is contained in:
Pete Matsyburka
2024-12-01 00:10:07 +02:00
parent 05b7cc9fa6
commit 5724159b7b
22 changed files with 623 additions and 31 deletions
@@ -5,8 +5,12 @@ module Submissions
module_function
# rubocop:disable Metrics
def call(submission, values_hash: nil)
values_hash ||= build_values_hash(submission)
def call(submission, values_hash: nil, submitter: nil)
values_hash ||= if submitter
build_submitter_values_hash(submitter)
else
build_values_hash(submission)
end
configs = submission.account.account_configs.where(key: [AccountConfig::FLATTEN_RESULT_PDF_KEY,
AccountConfig::WITH_SIGNATURE_ID])
@@ -16,8 +20,14 @@ module Submissions
pdfs_index = GenerateResultAttachments.build_pdfs_index(submission, flatten: is_flatten)
submission.submitters.where(completed_at: nil).preload(attachments_attachments: :blob).each do |submitter|
GenerateResultAttachments.fill_submitter_fields(submitter, submission.account, pdfs_index,
submitters = if submitter
submission.submitters.where(id: submitter.id)
else
submission.submitters.where(completed_at: nil)
end
submitters.preload(attachments_attachments: :blob).each do |s|
GenerateResultAttachments.fill_submitter_fields(s, submission.account, pdfs_index,
with_signature_id:, is_flatten:)
end
@@ -36,7 +46,7 @@ module Submissions
image_pdfs << pdf
end
build_pdf_attachment(pdf:, submission:,
build_pdf_attachment(pdf:, submission:, submitter:,
uuid: item['attachment_uuid'],
values_hash:,
name: item['name'])
@@ -55,6 +65,7 @@ module Submissions
build_pdf_attachment(
pdf: images_pdf,
submission:,
submitter:,
uuid: GenerateResultAttachments.images_pdf_uuid(original_documents.select(&:image?)),
values_hash:,
name: template.name
@@ -69,7 +80,14 @@ module Submissions
submission.submitters.reduce({}) { |acc, s| acc.merge(s.values) }.hash
end
def build_pdf_attachment(pdf:, submission:, uuid:, name:, values_hash:)
def build_submitter_values_hash(submitter)
submission = submitter.submission
submission.submitters.where.not(completed_at: nil).or(submission.submitters.where(id: submitter.id))
.reduce({}) { |acc, s| acc.merge(s.values) }.hash
end
def build_pdf_attachment(pdf:, submission:, submitter:, uuid:, name:, values_hash:)
io = StringIO.new
begin
@@ -82,12 +100,13 @@ module Submissions
ActiveStorage::Attachment.new(
blob: ActiveStorage::Blob.create_and_upload!(io: io.tap(&:rewind), filename: "#{name}.pdf"),
io_data: io.string,
metadata: { original_uuid: uuid,
values_hash:,
analyzed: true,
sha256: Base64.urlsafe_encode64(Digest::SHA256.digest(io.string)) },
name: 'preview_documents',
record: submission
record: submitter || submission
)
end
# rubocop:enable Metrics