You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.8 KiB
73 lines
1.8 KiB
|
|
module Api |
|
class DoctrinesController < BaseController |
|
include DoctrineSearch |
|
|
|
load_and_authorize_resource :doctrine, class: "Doctrine" |
|
|
|
def index |
|
search = doctrine_search(search_params) |
|
|
|
@doctrines = search.results |
|
|
|
respond_with @doctrines |
|
end |
|
|
|
def show |
|
respond_with @doctrine |
|
end |
|
|
|
def create |
|
attrs = resource_params.to_unsafe_h.deep_symbolize_keys |
|
subject_ids = attrs.delete(:subject_ids) |
|
jurisprudence_ids = attrs.delete(:jurisprudence_ids) |
|
|
|
@doctrine = ::Doctrine.new(attrs) |
|
|
|
if @doctrine.save |
|
@doctrine.subject_ids = subject_ids if subject_ids.present? |
|
|
|
jurisprudence_ids.each do |jurisprudence_id| |
|
doctrine_jurisprudence = @doctrine.doctrine_jurisprudences.create(jurisprudence_id: jurisprudence_id) |
|
doctrine_jurisprudence.jurisprudence.index! if doctrine_jurisprudence.persisted? |
|
end |
|
|
|
respond_with @doctrine |
|
@doctrine.index! |
|
else |
|
render errors: @doctrine.errors, status: 422 |
|
end |
|
end |
|
|
|
def update |
|
attrs = resource_params.to_unsafe_h.deep_symbolize_keys |
|
subject_ids = attrs.delete(:subject_ids) |
|
|
|
if @doctrine.update(attrs) |
|
@doctrine.subject_ids = subject_ids if subject_ids.present? |
|
|
|
respond_with @doctrine |
|
@doctrine.index! |
|
else |
|
render errors: @doctrine.errors, status: 422 |
|
end |
|
end |
|
|
|
def destroy |
|
@doctrine.destroy |
|
|
|
respond_with @doctrine |
|
end |
|
|
|
private |
|
|
|
def resource_params |
|
params.permit(:content, :headnote, jurisprudence_ids: [], subject_ids: []) |
|
end |
|
|
|
def search_params |
|
params.permit(:created_at, :q, :page, :per_page, |
|
exclude_ids: [], subject_ids: [], user_ids: []) |
|
end |
|
end |
|
end
|
|
|