diff --git a/app/controllers/api/submitter_form_views_controller.rb b/app/controllers/api/submitter_form_views_controller.rb index 93c668f1..f837f60b 100644 --- a/app/controllers/api/submitter_form_views_controller.rb +++ b/app/controllers/api/submitter_form_views_controller.rb @@ -8,6 +8,9 @@ module Api def create submitter = Submitter.find_by!(slug: params[:submitter_slug]) + submitter.opened_at = Time.current + submitter.save + SubmissionEvents.create_with_tracking_data(submitter, 'view_form', request) SendFormViewedWebhookRequestJob.perform_later(submitter) diff --git a/lib/submitters/serialize_for_api.rb b/lib/submitters/serialize_for_api.rb index aedeab2b..08a0bef7 100644 --- a/lib/submitters/serialize_for_api.rb +++ b/lib/submitters/serialize_for_api.rb @@ -19,7 +19,7 @@ module Submitters serialize_params = { include: {}, only: %i[id slug uuid name email phone completed_at external_id - metadata opened_at sent_at created_at updated_at], + submission_id metadata opened_at sent_at created_at updated_at], methods: %i[status application_key] } diff --git a/lib/submitters/serialize_for_webhook.rb b/lib/submitters/serialize_for_webhook.rb index 4a8eafd8..5699651a 100644 --- a/lib/submitters/serialize_for_webhook.rb +++ b/lib/submitters/serialize_for_webhook.rb @@ -16,15 +16,24 @@ module Submitters submitter_name = (submitter.submission.template_submitters || submitter.submission.template.submitters).find { |e| e['uuid'] == submitter.uuid }['name'] - submitter.as_json(methods: %i[application_key], - include: [template: { only: %i[id name external_id created_at updated_at] }]) + submitter.as_json(methods: %i[status application_key], + only: %i[id submission_id email phone name ua ip sent_at opened_at + completed_at created_at updated_at external_id metadata]) .except('uuid', 'values', 'slug') - .merge('values' => values, + .merge('role' => submitter_name, + 'preferences' => submitter.preferences.except('default_values'), + 'values' => values, 'documents' => documents, 'audit_log_url' => submitter.submission.audit_log_url, 'submission_url' => r.submissions_preview_url(submitter.submission.slug, **Docuseal.default_url_options), - 'role' => submitter_name) + 'template' => submitter.template.as_json(only: %i[id name external_id created_at + updated_at]), + 'submission' => { + **submitter.submission.slice(:id, :audit_log_url, :created_at), + status: submitter.submission.submitters.all?(&:completed_at?) ? 'completed' : 'pending', + url: r.submissions_preview_url(submitter.submission.slug, **Docuseal.default_url_options) + }) end def build_values_array(submitter)