mirror of
https://github.com/lingble/chatwoot.git
synced 2025-10-30 18:47:51 +00:00
63 lines
1.7 KiB
Ruby
63 lines
1.7 KiB
Ruby
class Api::V1::Accounts::Captain::DocumentsController < Api::V1::Accounts::BaseController
|
|
before_action :current_account
|
|
before_action -> { check_authorization(Captain::Assistant) }
|
|
|
|
before_action :set_current_page, only: [:index]
|
|
before_action :set_documents, except: [:create]
|
|
before_action :set_document, only: [:show, :destroy]
|
|
before_action :set_assistant, only: [:create]
|
|
RESULTS_PER_PAGE = 25
|
|
|
|
def index
|
|
base_query = @documents
|
|
base_query = base_query.where(assistant_id: permitted_params[:assistant_id]) if permitted_params[:assistant_id].present?
|
|
|
|
@documents_count = base_query.count
|
|
@documents = base_query.page(@current_page).per(RESULTS_PER_PAGE)
|
|
end
|
|
|
|
def show; end
|
|
|
|
def create
|
|
return render_could_not_create_error('Missing Assistant') if @assistant.nil?
|
|
|
|
@document = @assistant.documents.build(document_params)
|
|
@document.save!
|
|
rescue Captain::Document::LimitExceededError => e
|
|
render_could_not_create_error(e.message)
|
|
rescue ActiveRecord::RecordInvalid => e
|
|
render_could_not_create_error(e.record.errors.full_messages.join(', '))
|
|
end
|
|
|
|
def destroy
|
|
@document.destroy
|
|
head :no_content
|
|
end
|
|
|
|
private
|
|
|
|
def set_documents
|
|
@documents = Current.account.captain_documents.includes(:assistant).ordered
|
|
end
|
|
|
|
def set_document
|
|
@document = @documents.find(permitted_params[:id])
|
|
end
|
|
|
|
def set_assistant
|
|
@assistant = Current.account.captain_assistants.find_by(id: document_params[:assistant_id])
|
|
end
|
|
|
|
def set_current_page
|
|
@current_page = permitted_params[:page] || 1
|
|
end
|
|
|
|
def permitted_params
|
|
params.permit(:assistant_id, :page, :id, :account_id)
|
|
end
|
|
|
|
def document_params
|
|
params.require(:document).permit(:name, :external_link, :assistant_id, :pdf_file)
|
|
end
|
|
end
|