refactor and fixes

This commit is contained in:
Alex Turchyn
2023-08-12 12:34:02 +03:00
parent 3b745a650d
commit 47c57158f4
17 changed files with 168 additions and 84 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ module Submissions
end
def create_from_emails(template:, user:, emails:, source:, send_email: false)
emails = emails.to_s.scan(User::EMAIL_REGEXP)
emails = emails.to_s.scan(User::EMAIL_REGEXP) unless emails.is_a?(Array)
emails.map do |email|
submission = template.submissions.new(created_by_user: user, source:)
@@ -35,6 +35,9 @@ module Submissions
page = pdf.pages[area['page']]
page[:Annots] ||= []
page[:Annots] = page[:Annots].reject { |e| e[:A] && e[:A][:URI].to_s.starts_with?('file:///docuseal_field') }
width = page.box.width
height = page.box.height
font_size = ((page.box.width / A4_SIZE[0].to_f) * FONT_SIZE).to_i
@@ -66,8 +69,6 @@ module Submissions
height: image.height * scale
)
when 'file'
page[:Annots] ||= []
items = Array.wrap(value).each_with_object([]) do |uuid, acc|
attachment = submitter.attachments.find { |a| a.uuid == uuid }
+17
View File
@@ -11,4 +11,21 @@ module Submitters
is_more_than_two_images && original_documents.find { |a| a.uuid == attachment.uuid }&.image?
end
end
def create_attachment!(submitter, params)
blob =
if (file = params[:file])
ActiveStorage::Blob.create_and_upload!(io: file.open,
filename: file.original_filename,
content_type: file.content_type)
else
ActiveStorage::Blob.find_signed(params[:blob_signed_id])
end
ActiveStorage::Attachment.create!(
blob:,
name: params[:name],
record: submitter
)
end
end
+49
View File
@@ -0,0 +1,49 @@
# frozen_string_literal: true
module Submitters
module SubmitValues
module_function
def call(submitter, params)
update_submitter!(submitter, params)
Submissions.update_template_fields!(submitter.submission) if submitter.submission.template_fields.blank?
submitter.submission.save!
return unless submitter.completed_at?
GenerateSubmitterResultAttachmentsJob.perform_later(submitter)
if submitter.account.encrypted_configs.exists?(key: EncryptedConfig::WEBHOOK_URL_KEY)
SendWebhookRequestJob.perform_later(submitter)
end
submitter.submission.template.account.users.active.each do |user|
SubmitterMailer.completed_email(submitter, user).deliver_later!
end
submitter
end
def update_submitter!(submitter, params)
submitter.values.merge!(normalized_values(params))
submitter.completed_at = Time.current if params[:completed] == 'true'
submitter.opened_at ||= Time.current
submitter.save!
submitter
end
def normalized_values(params)
params.fetch(:values, {}).to_unsafe_h.transform_values do |v|
if params[:cast_boolean] == 'true'
v == 'true'
else
v.is_a?(Array) ? v.compact_blank : v
end
end
end
end
end