From e1eb2da6f901ec288411d21de7f3fc967187d2ad Mon Sep 17 00:00:00 2001 From: Alex Turchyn Date: Wed, 26 Jul 2023 09:58:50 +0300 Subject: [PATCH] preserve template fields per submission --- .rubocop.yml | 3 ++ app/controllers/submit_form_controller.rb | 4 +++ app/models/submission.rb | 19 ++++++++---- app/views/submissions/show.html.erb | 12 +++---- app/views/submit_form/show.html.erb | 6 ++-- app/views/templates/show.html.erb | 2 +- ...62428_add_template_fields_to_submission.rb | 31 +++++++++++++++++++ db/schema.rb | 5 ++- lib/submissions.rb | 9 ++++++ .../generate_result_attachments.rb | 4 +-- lib/templates.rb | 4 +-- 11 files changed, 78 insertions(+), 21 deletions(-) create mode 100644 db/migrate/20230726062428_add_template_fields_to_submission.rb diff --git a/.rubocop.yml b/.rubocop.yml index 0b6c8596..2373888a 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -61,5 +61,8 @@ RSpec/ExampleLength: Rails/I18nLocaleTexts: Enabled: false +Rails/SkipsModelValidations: + Enabled: false + Rails/ApplicationController: Enabled: false diff --git a/app/controllers/submit_form_controller.rb b/app/controllers/submit_form_controller.rb index 8e50a483..57188d98 100644 --- a/app/controllers/submit_form_controller.rb +++ b/app/controllers/submit_form_controller.rb @@ -23,6 +23,10 @@ class SubmitFormController < ApplicationController submitter.save! + Submissions.update_template_fields!(submitter.submission) if submitter.submission.template_fields.blank? + + submitter.submission.save! + if submitter.completed_at? GenerateSubmitterResultAttachmentsJob.perform_later(submitter) diff --git a/app/models/submission.rb b/app/models/submission.rb index 04579f08..116ade07 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -4,12 +4,15 @@ # # Table name: submissions # -# id :bigint not null, primary key -# deleted_at :datetime -# created_at :datetime not null -# updated_at :datetime not null -# created_by_user_id :bigint -# template_id :bigint not null +# id :bigint not null, primary key +# deleted_at :datetime +# template_fields :text +# template_schema :text +# template_submitters :text +# created_at :datetime not null +# updated_at :datetime not null +# created_by_user_id :bigint +# template_id :bigint not null # # Indexes # @@ -27,5 +30,9 @@ class Submission < ApplicationRecord has_many :submitters, dependent: :destroy + serialize :template_fields, JSON + serialize :template_schema, JSON + serialize :template_submitters, JSON + scope :active, -> { where(deleted_at: nil) } end diff --git a/app/views/submissions/show.html.erb b/app/views/submissions/show.html.erb index 90c0872e..96b58c5a 100644 --- a/app/views/submissions/show.html.erb +++ b/app/views/submissions/show.html.erb @@ -23,7 +23,7 @@
- <% fields_index = Templates.build_field_areas_index(@submission.template) %> + <% fields_index = Templates.build_field_areas_index(@submission.template_fields || @submission.template.fields) %> <% values = @submission.submitters.reduce({}) { |acc, sub| acc.merge(sub.values) } %> <% attachments_index = ActiveStorage::Attachment.where(record: @submission.submitters, name: :attachments).preload(:blob).index_by(&:uuid) %> - <% @submission.template.schema.each do |item| %> + <% (@submission.template_schema || @submission.template.schema).each do |item| %> <% document = @submission.template.documents.find { |e| e.uuid == item['attachment_uuid'] } %> <% document.preview_images.sort_by { |a| a.filename.base.to_i }.each_with_index do |page, index| %>
" class="relative"> @@ -57,15 +57,15 @@