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