mirror of https://github.com/docusealco/docuseal
				
				
				
			
							parent
							
								
									c545924fe9
								
							
						
					
					
						commit
						7856f7a134
					
				| @ -0,0 +1,38 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | module Api | ||||||
|  |   class TemplatesCloneController < ApiBaseController | ||||||
|  |     load_and_authorize_resource :template | ||||||
|  | 
 | ||||||
|  |     def create | ||||||
|  |       authorize!(:manage, @template) | ||||||
|  | 
 | ||||||
|  |       template = current_account.templates.new(source: :api) | ||||||
|  | 
 | ||||||
|  |       template.application_key = params[:application_key] | ||||||
|  |       template.name = params[:name] || "#{@template.name} (Clone)" | ||||||
|  |       template.account = @template.account | ||||||
|  |       template.author = current_user | ||||||
|  |       template.assign_attributes(@template.slice(:folder_id, :fields, :schema, :submitters)) | ||||||
|  | 
 | ||||||
|  |       if params[:folder_name].present? | ||||||
|  |         template.folder = TemplateFolders.find_or_create_by_name(current_user, params[:folder_name]) | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       template.save! | ||||||
|  | 
 | ||||||
|  |       Templates::CloneAttachments.call(template:, original_template: @template) | ||||||
|  | 
 | ||||||
|  |       render json: template.as_json(serialize_params) | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     private | ||||||
|  | 
 | ||||||
|  |     def serialize_params | ||||||
|  |       { | ||||||
|  |         include: { author: { only: %i[id email first_name last_name] }, | ||||||
|  |                    documents: { only: %i[id uuid], methods: %i[url filename] } } | ||||||
|  |       } | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
					Loading…
					
					
				
		Reference in new issue