add dynamic documents
This commit is contained in:
@@ -71,6 +71,7 @@ module Submissions
|
||||
preferences: preferences.merge(submission_preferences))
|
||||
end
|
||||
|
||||
maybe_set_dynamic_documents(submission)
|
||||
maybe_set_template_fields(submission, attrs[:submitters], with_template:, new_fields:)
|
||||
|
||||
if submission.submitters.size > template.submitters.size
|
||||
@@ -97,6 +98,44 @@ module Submissions
|
||||
submissions
|
||||
end
|
||||
|
||||
def maybe_set_dynamic_documents(submission)
|
||||
return submission unless submission.template_id?
|
||||
|
||||
template = submission.template
|
||||
|
||||
return submission if template.variables_schema.present? ||
|
||||
submission.variables_schema.present?
|
||||
|
||||
areas_index = {}
|
||||
submission.template_schema = []
|
||||
|
||||
template.schema.each do |item|
|
||||
if item['dynamic']
|
||||
dynamic_document = template.schema_dynamic_documents.find { |e| e.uuid == item['attachment_uuid'] }
|
||||
|
||||
dynamic_document_version = DynamicDocuments::EnsureVersionGenerated.call(dynamic_document)
|
||||
|
||||
dynamic_document_version.areas.each { |area| areas_index[area['uuid']] = area }
|
||||
|
||||
submission.template_schema << item.deep_dup.merge('dynamic_document_sha1' => dynamic_document.sha1)
|
||||
else
|
||||
submission.template_schema << item.deep_dup
|
||||
end
|
||||
end
|
||||
|
||||
submission.template_fields = template.fields.deep_dup
|
||||
|
||||
submission.template_fields.each do |field|
|
||||
field['areas'].to_a.each do |area|
|
||||
dynamic_area = areas_index[area['uuid']]
|
||||
|
||||
area.merge!(dynamic_area) if dynamic_area
|
||||
end
|
||||
end
|
||||
|
||||
submission
|
||||
end
|
||||
|
||||
def maybe_enqueue_expire_at(submissions)
|
||||
submissions.each do |submission|
|
||||
next unless submission.expire_at?
|
||||
@@ -159,7 +198,8 @@ module Submissions
|
||||
end
|
||||
|
||||
if template_fields != (submission.template_fields || submission.template.fields) || new_fields.present? ||
|
||||
submitters_attrs.any? { |e| e[:completed].present? } || !with_template || submission.variables.present?
|
||||
submitters_attrs.any? { |e| e[:completed].present? } || !with_template || submission.variables.present? ||
|
||||
submission.template&.variables_schema.present?
|
||||
submission.template_fields = new_fields ? new_fields + template_fields : template_fields
|
||||
submission.template_schema = submission.template.schema if submission.template_schema.blank?
|
||||
submission.variables_schema = submission.template.variables_schema if submission.template &&
|
||||
|
||||
Reference in New Issue
Block a user