Browse Source

Fix `searchable` for `doctrines`

pull/114/head
alexdbondoc17 4 years ago
parent
commit
7893a6dda6
  1. 1
      app/models/doctrine.rb
  2. 30
      app/models/doctrine_jurisprudence.rb
  3. 2
      app/views/doctrines/search.html.erb

1
app/models/doctrine.rb

@ -186,6 +186,7 @@ class Doctrine < ApplicationRecord
join(:search_doc_date, :target => DoctrineJurisprudence, :type => :date, :join => { :from => :doctrine_id, :to => :id })
join(:search_year, :target => DoctrineJurisprudence, :type => :integer, :join => { :from => :doctrine_id, :to => :id })
join(:reference_number, :target => DoctrineJurisprudence, :type => :string, :join => { :from => :doctrine_id, :to => :id })
join(:jurisprudence_id, :target => DoctrineJurisprudence, :type => :integer, :join => { :from => :doctrine_id, :to => :id })
date :created_at
end

30
app/models/doctrine_jurisprudence.rb

@ -4,13 +4,37 @@ class DoctrineJurisprudence < ApplicationRecord
belongs_to :doctrine, optional: false
belongs_to :jurisprudence, class_name: "Cdao::Jurisprudence", optional: false
def search_year
jurisprudence.year.present? && jurisprudence.year > 0 ? jurisprudence.year : (jurisprudence.doc_date.try :year)
end
def search_doc_date
jurisprudence.doc_date.presence || Date.new(jurisprudence.year.presence || 0)
end
searchable do
integer :doctrine_id
integer :jurisprudence_id
integer :search_year
date :search_doc_date
string :reference_number do
jurisprudence.clean_reference_number
end
integer :search_year do
jurisprudence.year.present? && jurisprudence.year > 0 ? jurisprudence.year : (jurisprudence.doc_date.try :year)
end
date :search_doc_date do
jurisprudence.doc_date.presence || Date.new(jurisprudence.year.presence || 0)
end
string :reference_number do
jurisprudence.clean_reference_number
end
join(:search_doc_date, :target => Cdao::Jurisprudence, :type => :date, :join => { :from => :id, :to => :jurisprudence_id })
join(:search_year, :target => Cdao::Jurisprudence, :type => :integer, :join => { :from => :id, :to => :jurisprudence_id })
join(:reference_number, :target => Cdao::Jurisprudence, :type => :string, :join => { :from => :id, :to => :jurisprudence_id })
join(:subject_ids, :target => Doctrine, :type => :integer, :multiple => true, :join => { :from => :id, :to => :doctrine_id })
end
end

2
app/views/doctrines/search.html.erb

@ -6,6 +6,6 @@
<%= render(DoctrineIndexTableComponent.new(current_user: current_user, search_results: @doctrines, opts: { is_index_table: true, subject_ids: params[:subject_ids].map(&:to_i) })) %>
</div>
<% else %>
<%= render(DoctrineIndexComponent.with_collection(@doctrines.sort_by { |doctrine| [-doctrine.jurisprudences.first.year, -doctrine.jurisprudences.first.docdate.strftime("%Y-%m-%d")] }, current_user: current_user, opts: { is_index_table: false, subject_ids: params[:subject_ids].map(&:to_i) })) %>
<%= render(DoctrineIndexComponent.with_collection(@doctrines, current_user: current_user, opts: { is_index_table: false, subject_ids: params[:subject_ids].map(&:to_i) })) %>
<% end %>
</div>

Loading…
Cancel
Save