2023-12-06 11:29:55 +02:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
module Api
|
|
|
|
|
class TemplatesCloneController < ApiBaseController
|
|
|
|
|
load_and_authorize_resource :template
|
|
|
|
|
|
|
|
|
|
def create
|
2025-05-11 16:11:02 +03:00
|
|
|
authorize!(:create, @template)
|
2023-12-06 11:29:55 +02:00
|
|
|
|
2024-07-16 01:40:38 +03:00
|
|
|
ActiveRecord::Associations::Preloader.new(
|
|
|
|
|
records: [@template],
|
|
|
|
|
associations: [schema_documents: :preview_images_attachments]
|
|
|
|
|
).call
|
|
|
|
|
|
2024-02-01 00:34:35 +02:00
|
|
|
cloned_template = Templates::Clone.call(
|
|
|
|
|
@template,
|
|
|
|
|
author: current_user,
|
|
|
|
|
name: params[:name],
|
|
|
|
|
external_id: params[:external_id].presence || params[:application_key],
|
|
|
|
|
folder_name: params[:folder_name]
|
|
|
|
|
)
|
2023-12-06 11:29:55 +02:00
|
|
|
|
2023-12-18 13:38:01 +02:00
|
|
|
cloned_template.source = :api
|
2023-12-06 11:29:55 +02:00
|
|
|
|
2024-12-10 17:41:27 +02:00
|
|
|
schema_documents = Templates::CloneAttachments.call(template: cloned_template,
|
|
|
|
|
original_template: @template,
|
|
|
|
|
documents: params[:documents])
|
2023-12-06 11:29:55 +02:00
|
|
|
|
2025-08-26 12:29:51 +03:00
|
|
|
Templates.maybe_assign_access(cloned_template)
|
|
|
|
|
|
2025-05-31 15:15:25 +03:00
|
|
|
cloned_template.save!
|
|
|
|
|
|
2025-07-04 21:11:08 +03:00
|
|
|
WebhookUrls.enqueue_events(cloned_template, 'template.created')
|
2024-05-12 11:37:33 +03:00
|
|
|
|
2025-06-05 13:16:55 +03:00
|
|
|
SearchEntries.enqueue_reindex(cloned_template)
|
|
|
|
|
|
2024-07-16 01:40:38 +03:00
|
|
|
render json: Templates::SerializeForApi.call(cloned_template, schema_documents)
|
2023-12-06 11:29:55 +02:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|