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.
		
		
		
		
		
			
		
			
				
					
					
						
							62 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							62 lines
						
					
					
						
							1.6 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| class TemplatesDebugController < ApplicationController
 | |
|   load_and_authorize_resource :template
 | |
| 
 | |
|   DEBUG_FILE = ''
 | |
| 
 | |
|   def show
 | |
|     attachment = @template.documents.first
 | |
| 
 | |
|     data = attachment.download
 | |
|     pdf = HexaPDF::Document.new(io: StringIO.new(data))
 | |
| 
 | |
|     fields = Templates::FindAcroFields.call(pdf, attachment, data)
 | |
| 
 | |
|     attachment.metadata['pdf'] ||= {}
 | |
|     attachment.metadata['pdf']['fields'] = fields
 | |
| 
 | |
|     @template.update!(fields: Templates::ProcessDocument.normalize_attachment_fields(@template, [attachment]))
 | |
| 
 | |
|     debug_file if DEBUG_FILE.present?
 | |
| 
 | |
|     ActiveRecord::Associations::Preloader.new(
 | |
|       records: [@template],
 | |
|       associations: [schema_documents: { preview_images_attachments: :blob }]
 | |
|     ).call
 | |
| 
 | |
|     @template_data =
 | |
|       @template.as_json.merge(
 | |
|         documents: @template.schema_documents.as_json(
 | |
|           methods: %i[metadata signed_uuid],
 | |
|           include: { preview_images: { methods: %i[url metadata filename] } }
 | |
|         )
 | |
|       ).to_json
 | |
| 
 | |
|     render 'templates/edit', layout: 'plain'
 | |
|   end
 | |
| 
 | |
|   def debug_file
 | |
|     tempfile = Tempfile.new
 | |
|     tempfile.binmode
 | |
|     tempfile.write(File.read(DEBUG_FILE))
 | |
|     tempfile.rewind
 | |
| 
 | |
|     filename = File.basename(DEBUG_FILE)
 | |
| 
 | |
|     file = ActionDispatch::Http::UploadedFile.new(
 | |
|       tempfile:,
 | |
|       filename:,
 | |
|       type: Marcel::MimeType.for(tempfile)
 | |
|     )
 | |
| 
 | |
|     params = { files: [file] }
 | |
| 
 | |
|     documents = Templates::CreateAttachments.call(@template, params)
 | |
| 
 | |
|     schema = documents.map { |doc| { attachment_uuid: doc.uuid, name: doc.filename.base } }
 | |
| 
 | |
|     @template.update!(schema:)
 | |
|   end
 | |
| end
 |