mirror of https://github.com/docusealco/docuseal
				
				
				
			
							parent
							
								
									d130835902
								
							
						
					
					
						commit
						66d1ae2f64
					
				| @ -0,0 +1,29 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | class SubmissionsPreviewController < ApplicationController | ||||||
|  |   skip_before_action :authenticate_user! | ||||||
|  |   skip_authorization_check | ||||||
|  | 
 | ||||||
|  |   PRELOAD_ALL_PAGES_AMOUNT = 200 | ||||||
|  | 
 | ||||||
|  |   def show | ||||||
|  |     @submission = Submission.find_by!(slug: params[:slug]) | ||||||
|  | 
 | ||||||
|  |     ActiveRecord::Associations::Preloader.new( | ||||||
|  |       records: [@submission], | ||||||
|  |       associations: [:template, { template_schema_documents: :blob }] | ||||||
|  |     ).call | ||||||
|  | 
 | ||||||
|  |     total_pages = | ||||||
|  |       @submission.template_schema_documents.sum { |e| e.metadata.dig('pdf', 'number_of_pages').to_i } | ||||||
|  | 
 | ||||||
|  |     if total_pages < PRELOAD_ALL_PAGES_AMOUNT | ||||||
|  |       ActiveRecord::Associations::Preloader.new( | ||||||
|  |         records: @submission.template_schema_documents, | ||||||
|  |         associations: [:blob, { preview_images_attachments: :blob }] | ||||||
|  |       ).call | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     render 'submissions/show', layout: 'plain' | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,23 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | class AddSlugToSubmissions < ActiveRecord::Migration[7.0] | ||||||
|  |   class MigrationSubmission < ApplicationRecord | ||||||
|  |     self.table_name = 'submissions' | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def up | ||||||
|  |     add_column :submissions, :slug, :string | ||||||
|  | 
 | ||||||
|  |     MigrationSubmission.where(slug: nil).find_each do |submission| | ||||||
|  |       submission.update_columns(slug: SecureRandom.base58(14)) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     change_column_null :submissions, :slug, false | ||||||
|  | 
 | ||||||
|  |     add_index :submissions, :slug, unique: true | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|  |   def down | ||||||
|  |     remove_column :submissions, :slug | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | module TimeUtils | ||||||
|  |   module_function | ||||||
|  | 
 | ||||||
|  |   def timezone_abbr(timezone, time = Time.current) | ||||||
|  |     tz_info = TZInfo::Timezone.get( | ||||||
|  |       ActiveSupport::TimeZone::MAPPING[timezone] || timezone || 'UTC' | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     tz_info.abbreviation(time) | ||||||
|  |   end | ||||||
|  | end | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | require 'rails_helper' | ||||||
|  | 
 | ||||||
|  | RSpec.describe 'Submission Preview' do | ||||||
|  |   let(:account) { create(:account) } | ||||||
|  |   let(:user) { create(:user, account:) } | ||||||
|  |   let(:template) { create(:template, account:, author: user) } | ||||||
|  | 
 | ||||||
|  |   context 'when not submitted' do | ||||||
|  |     let(:submission) { create(:submission, template:, created_by_user: user) } | ||||||
|  |     let(:submitters) { template.submitters.map { |s| create(:submitter, submission:, uuid: s['uuid']) } } | ||||||
|  | 
 | ||||||
|  |     before do | ||||||
|  |       visit submissions_preview_path(slug: submission.slug) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     it 'completes the form' do | ||||||
|  |       expect(page).to have_content('Not completed') | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
					Loading…
					
					
				
		Reference in new issue