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