123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class MentionsController < ApplicationController
- prepend_before_action :authenticate_and_authorize!
- # GET /api/v1/mentions
- def index
- list = mentionable_object.mentions
- if response_full?
- item_ids = list.map(&:id)
- assets = ApplicationModel::CanAssets.reduce list
- render json: {
- record_ids: item_ids,
- assets: assets,
- }
- return
- end
- # return result
- render json: {
- mentions: list,
- }
- end
- # POST /api/v1/mentions
- def create
- Mention.subscribe! mentionable_object, current_user
- render json: true, status: :created
- end
- # DELETE /api/v1/mentions
- def destroy
- Mention.where(user: current_user, id: params[:id]).destroy_all
- render json: true, status: :ok
- end
- def mentionable_object
- @mentionable_object ||= begin
- case params[:mentionable_type]
- when 'Ticket'
- Ticket.find_by id: params[:mentionable_id]
- else
- raise Exceptions::UnprocessableEntity, __("The parameter 'mentionable_type' is invalid.")
- end
- end
- end
- end
|