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