trabajo-afectivo/app/controllers/links_controller.rb

65 lines
1.7 KiB
Ruby
Raw Normal View History

2016-10-19 03:11:36 +00:00
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
2012-08-21 10:28:41 +00:00
class LinksController < ApplicationController
prepend_before_action :authentication_check
2012-08-21 10:28:41 +00:00
# GET /api/v1/links
2012-08-21 10:28:41 +00:00
def index
links = Link.list(
link_object: params[:link_object],
link_object_value: params[:link_object_value],
2012-08-21 10:28:41 +00:00
)
2019-06-04 03:40:48 +00:00
linked_objects = links
.map { |elem| elem['link_object']&.safe_constantize&.lookup(id: elem['link_object_value']) }
.compact
2012-08-21 10:28:41 +00:00
# return result
render json: {
2019-06-04 03:40:48 +00:00
links: links,
assets: ApplicationModel::CanAssets.reduce(linked_objects),
2012-08-21 10:28:41 +00:00
}
end
# POST /api/v1/links/add
2012-08-21 10:28:41 +00:00
def add
2019-06-04 03:40:48 +00:00
object = case params[:link_object_source]
when 'Ticket'
Ticket.find_by(number: params[:link_object_source_number])
when 'KnowledgeBase::Answer::Translation'
KnowledgeBase::Answer::Translation.find_by(id: params[:link_object_source_number])
end
2012-08-24 18:54:57 +00:00
if !object
render json: { error: 'No such object!' }, status: :unprocessable_entity
return
end
2012-08-21 10:28:41 +00:00
link = Link.add(
link_type: params[:link_type],
link_object_target: params[:link_object_target],
link_object_target_value: params[:link_object_target_value],
link_object_source: params[:link_object_source],
link_object_source_value: object.id,
2012-08-21 10:28:41 +00:00
)
if link
render json: link, status: :created
2012-08-21 10:28:41 +00:00
else
render json: link.errors, status: :unprocessable_entity
2012-08-21 10:28:41 +00:00
end
end
# DELETE /api/v1/links/remove
def remove
link = Link.remove(params)
2012-08-21 10:28:41 +00:00
if link
render json: link, status: :created
2012-08-21 10:28:41 +00:00
else
render json: link.errors, status: :unprocessable_entity
2012-08-21 10:28:41 +00:00
end
end
end