From 7893a6dda6f7ae57a3a273c9aaa09320792a4379 Mon Sep 17 00:00:00 2001 From: alexdbondoc17 Date: Tue, 8 Mar 2022 03:27:54 +0000 Subject: [PATCH] Fix `searchable` for `doctrines` --- app/models/doctrine.rb | 1 + app/models/doctrine_jurisprudence.rb | 30 +++++++++++++++++++++++++--- app/views/doctrines/search.html.erb | 2 +- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/app/models/doctrine.rb b/app/models/doctrine.rb index a2470a7..8350c8f 100644 --- a/app/models/doctrine.rb +++ b/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 diff --git a/app/models/doctrine_jurisprudence.rb b/app/models/doctrine_jurisprudence.rb index cbc9d73..db18fa7 100644 --- a/app/models/doctrine_jurisprudence.rb +++ b/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 diff --git a/app/views/doctrines/search.html.erb b/app/views/doctrines/search.html.erb index 1123ba8..d3ae91b 100644 --- a/app/views/doctrines/search.html.erb +++ b/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) })) %> <% 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 %>