mirror of https://github.com/docusealco/docuseal
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							46 lines
						
					
					
						
							1.4 KiB
						
					
					
				
			
		
		
	
	
							46 lines
						
					
					
						
							1.4 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| module Api
 | |
|   class SubmissionDocumentsController < ApiBaseController
 | |
|     load_and_authorize_resource :submission
 | |
| 
 | |
|     def index
 | |
|       documents =
 | |
|         if @submission.submitters.all?(&:completed_at?)
 | |
|           last_submitter = @submission.submitters.max_by(&:completed_at)
 | |
| 
 | |
|           if last_submitter.documents_attachments.blank?
 | |
|             last_submitter.documents_attachments = Submissions::EnsureResultGenerated.call(submitter)
 | |
|           end
 | |
| 
 | |
|           last_submitter.documents_attachments
 | |
|         else
 | |
|           values_hash = Submissions::GeneratePreviewAttachments.build_values_hash(@submission)
 | |
| 
 | |
|           if @submission.preview_documents.present? &&
 | |
|              @submission.preview_documents.all? { |s| s.metadata['values_hash'] == values_hash }
 | |
|             @submission.preview_documents
 | |
|           else
 | |
|             ApplicationRecord.no_touching do
 | |
|               @submission.preview_documents.each(&:destroy)
 | |
|             end
 | |
| 
 | |
|             Submissions::GeneratePreviewAttachments.call(@submission, values_hash:)
 | |
|           end
 | |
|         end
 | |
| 
 | |
|       ActiveRecord::Associations::Preloader.new(
 | |
|         records: documents,
 | |
|         associations: [:blob]
 | |
|       ).call
 | |
| 
 | |
|       render json: {
 | |
|         id: @submission.id,
 | |
|         documents: documents.map do |attachment|
 | |
|           { name: attachment.filename.base, url: ActiveStorage::Blob.proxy_url(attachment.blob) }
 | |
|         end
 | |
|       }
 | |
|     end
 | |
|   end
 | |
| end
 |