|
|
|
|
@ -286,7 +286,10 @@ module Submitters
|
|
|
|
|
|
|
|
|
|
attachments_index =
|
|
|
|
|
if has_document_conditions
|
|
|
|
|
Submissions.filtered_conditions_schema(submission).index_by { |i| i['attachment_uuid'] }
|
|
|
|
|
submitters_values = merge_submitters_values(submitter)
|
|
|
|
|
|
|
|
|
|
Submissions.filtered_conditions_schema(submission, values: submitters_values)
|
|
|
|
|
.index_by { |i| i['attachment_uuid'] }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
submission.template_fields.each do |field|
|
|
|
|
|
@ -295,8 +298,7 @@ module Submitters
|
|
|
|
|
required_field_uuids_acc.add(field['uuid']) if required_field_uuids_acc && required_editable_field?(field)
|
|
|
|
|
|
|
|
|
|
if has_document_conditions && !check_field_areas_attachments(field, attachments_index)
|
|
|
|
|
submitter.values.delete(field['uuid'])
|
|
|
|
|
required_field_uuids_acc&.delete(field['uuid'])
|
|
|
|
|
delete_field_value!(field, submitter, submitters_values, required_field_uuids_acc)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if has_other_submitters && !submitters_values &&
|
|
|
|
|
@ -305,14 +307,19 @@ module Submitters
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
unless check_field_conditions(submitters_values || submitter.values, field, submission.fields_uuid_index)
|
|
|
|
|
submitter.values.delete(field['uuid'])
|
|
|
|
|
required_field_uuids_acc&.delete(field['uuid'])
|
|
|
|
|
delete_field_value!(field, submitter, submitters_values, required_field_uuids_acc)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
submitter.values
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def delete_field_value!(field, submitter, submitters_values = nil, required_field_uuids_acc = nil)
|
|
|
|
|
submitter.values.delete(field['uuid'])
|
|
|
|
|
submitters_values&.delete(field['uuid'])
|
|
|
|
|
required_field_uuids_acc&.delete(field['uuid'])
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def submission_has_document_conditions?(submission)
|
|
|
|
|
(submission.template_schema || submission.template.schema).any? { |e| e['conditions'].present? }
|
|
|
|
|
end
|
|
|
|
|
@ -331,6 +338,7 @@ module Submitters
|
|
|
|
|
|
|
|
|
|
def merge_submitters_values(submitter)
|
|
|
|
|
submitter.submission.submitters
|
|
|
|
|
.reject { |sub| sub.uuid == submitter.uuid }
|
|
|
|
|
.reduce({}) { |acc, sub| acc.merge(sub.values) }
|
|
|
|
|
.merge(submitter.values)
|
|
|
|
|
end
|
|
|
|
|
|