From 2bd5b9676b252e0dd3cd9cf520d043a396d7da5d Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 19 Aug 2025 12:25:23 +0300 Subject: [PATCH 01/22] add with verification --- lib/submissions/create_from_submitters.rb | 4 ++-- lib/submitters/submit_values.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/submissions/create_from_submitters.rb b/lib/submissions/create_from_submitters.rb index f90720bb..52a66632 100644 --- a/lib/submissions/create_from_submitters.rb +++ b/lib/submissions/create_from_submitters.rb @@ -331,8 +331,8 @@ module Submissions end end - def assign_completed_attributes(submitter) - submitter.values = Submitters::SubmitValues.merge_default_values(submitter) + def assign_completed_attributes(submitter, with_verification: true) + submitter.values = Submitters::SubmitValues.merge_default_values(submitter, with_verification:) submitter.values = Submitters::SubmitValues.maybe_remove_condition_values(submitter) formula_values = Submitters::SubmitValues.build_formula_values(submitter) diff --git a/lib/submitters/submit_values.rb b/lib/submitters/submit_values.rb index 3262633d..3663de16 100644 --- a/lib/submitters/submit_values.rb +++ b/lib/submitters/submit_values.rb @@ -143,7 +143,7 @@ module Submitters end end - def merge_default_values(submitter) + def merge_default_values(submitter, with_verification: true) default_values = submitter.submission.template_fields.each_with_object({}) do |field, acc| next if field['submitter_uuid'] != submitter.uuid @@ -157,7 +157,7 @@ module Submitters next end - if field['type'] == 'verification' + if field['type'] == 'verification' && with_verification acc[field['uuid']] = if submitter.submission_events.exists?(event_type: :complete_verification) I18n.t(:verified, locale: :en) From 3bd515951a26b689ded8cc70d56f8dbe61001cfa Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 19 Aug 2025 12:40:45 +0300 Subject: [PATCH 02/22] stamp without completed --- lib/submitters/create_stamp_attachment.rb | 43 ++++++++++++++--------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/submitters/create_stamp_attachment.rb b/lib/submitters/create_stamp_attachment.rb index 5b5f1d64..b08e2363 100644 --- a/lib/submitters/create_stamp_attachment.rb +++ b/lib/submitters/create_stamp_attachment.rb @@ -67,25 +67,16 @@ module Submitters end def build_text_image(submitter) - time = I18n.l(submitter.completed_at.in_time_zone(submitter.submission.account.timezone), - format: :long, - locale: submitter.submission.account.locale) + if submitter.completed_at + time = I18n.l(submitter.completed_at.in_time_zone(submitter.submission.account.timezone), + format: :long, + locale: submitter.submission.account.locale) - timezone = TimeUtils.timezone_abbr(submitter.submission.account.timezone, submitter.completed_at) + timezone = TimeUtils.timezone_abbr(submitter.submission.account.timezone, submitter.completed_at) + end - name = if submitter.name.present? && submitter.email.present? - "#{submitter.name} #{submitter.email}" - else - submitter.name || submitter.email || submitter.phone - end - - role = if submitter.submission.template_submitters.size > 1 - item = submitter.submission.template_submitters.find { |e| e['uuid'] == submitter.uuid } - - "#{I18n.t(:role, locale: submitter.account.locale)}: #{item['name']}\n" - else - '' - end + name = build_name(submitter) + role = build_role(submitter) digitally_signed_by = I18n.t(:digitally_signed_by, locale: submitter.submission.account.locale) @@ -97,6 +88,24 @@ module Submitters Vips::Image.text(text, width: WIDTH, height: HEIGHT, wrap: :'word-char') end + def build_name(submitter) + if submitter.name.present? && submitter.email.present? + "#{submitter.name} #{submitter.email}" + else + submitter.name || submitter.email || submitter.phone + end + end + + def build_role(submitter) + if submitter.submission.template_submitters.size > 1 + item = submitter.submission.template_submitters.find { |e| e['uuid'] == submitter.uuid } + + "#{I18n.t(:role, locale: submitter.account.locale)}: #{item['name']}\n" + else + '' + end + end + def load_logo(_submitter) PdfIcons.stamp_logo_io end From 8db1192d0e122e389463b7cadd64cbab720a6137 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 19 Aug 2025 16:34:59 +0300 Subject: [PATCH 03/22] update hexapdf --- Gemfile.lock | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 493b46bb..265b351f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -271,10 +271,11 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) hashdiff (1.1.2) - hexapdf (1.0.3) + hexapdf (1.4.0) cmdparse (~> 3.0, >= 3.0.3) geom2d (~> 0.4, >= 0.4.1) openssl (>= 2.2.1) + strscan (>= 3.1.2) htmlentities (4.3.4) httpclient (2.8.3) i18n (1.14.7) @@ -548,6 +549,7 @@ GEM stringio (3.1.7) strip_attributes (1.14.1) activemodel (>= 3.0, < 9.0) + strscan (3.1.5) thor (1.4.0) timeout (0.4.3) trailblazer-option (0.1.2) From 7f979e939635c1916363372372bfb6810961f3c8 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 20 Aug 2025 18:19:23 +0300 Subject: [PATCH 04/22] add number validation --- app/controllers/api/submissions_controller.rb | 2 +- app/controllers/api/templates_controller.rb | 2 +- app/controllers/templates_controller.rb | 2 +- app/javascript/submission_form/date_step.vue | 41 ++++++++ .../submission_form/number_step.vue | 4 +- .../template_builder/field_settings.vue | 98 ++++++++++++++----- lib/submissions/create_from_submitters.rb | 1 + 7 files changed, 119 insertions(+), 31 deletions(-) diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 95ab2bda..82839f05 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -189,7 +189,7 @@ module Api { metadata: {}, values: {}, roles: [], readonly_fields: [], message: %i[subject body], fields: [:name, :uuid, :default_value, :value, :title, :description, :readonly, :required, :validation_pattern, :invalid_message, - { default_value: [], value: [], preferences: {} }] }]] + { default_value: [], value: [], preferences: {}, validation: {} }] }]] } ] diff --git a/app/controllers/api/templates_controller.rb b/app/controllers/api/templates_controller.rb index 7847e599..cc4f16c9 100644 --- a/app/controllers/api/templates_controller.rb +++ b/app/controllers/api/templates_controller.rb @@ -113,7 +113,7 @@ module Api { preferences: {}, conditions: [%i[field_uuid value action operation]], options: [%i[value uuid]], - validation: %i[message pattern], + validation: %i[message pattern min max step], areas: [%i[x y w h cell_w attachment_uuid option_uuid page]] }]] } ] diff --git a/app/controllers/templates_controller.rb b/app/controllers/templates_controller.rb index 3af0a0f2..62573e5d 100644 --- a/app/controllers/templates_controller.rb +++ b/app/controllers/templates_controller.rb @@ -124,7 +124,7 @@ class TemplatesController < ApplicationController { preferences: {}, conditions: [%i[field_uuid value action operation]], options: [%i[value uuid]], - validation: %i[message pattern], + validation: %i[message pattern min max step], areas: [%i[x y w h cell_w attachment_uuid option_uuid page]] }]] } ) end diff --git a/app/javascript/submission_form/date_step.vue b/app/javascript/submission_form/date_step.vue index 8f73dbd5..08319dd8 100644 --- a/app/javascript/submission_form/date_step.vue +++ b/app/javascript/submission_form/date_step.vue @@ -26,6 +26,7 @@