diff --git a/app/controllers/api/documents_controller.rb b/app/controllers/api/documents_controller.rb index 64dc988..6baa090 100644 --- a/app/controllers/api/documents_controller.rb +++ b/app/controllers/api/documents_controller.rb @@ -33,6 +33,8 @@ module Api with(:citation_finders_names).any_of(search_params[:citation_finder]) if search_params[:citation_finder].present? + with(:is_only_in_premium_libraries, false) + order_by :doc_date, :desc order_by :year, :desc diff --git a/app/controllers/concerns/jurisprudence_search.rb b/app/controllers/concerns/jurisprudence_search.rb index f90681c..bf12ce9 100644 --- a/app/controllers/concerns/jurisprudence_search.rb +++ b/app/controllers/concerns/jurisprudence_search.rb @@ -17,6 +17,8 @@ module JurisprudenceSearch without(:id).any_of(search_params[:exclude_ids]) if search_params[:exclude_ids].present? + with(:is_only_in_premium_libraries, false) + order_by :doc_date, :desc order_by :year, :desc diff --git a/app/models/cdao/document.rb b/app/models/cdao/document.rb index 1df1ffa..3d9deb6 100644 --- a/app/models/cdao/document.rb +++ b/app/models/cdao/document.rb @@ -11,6 +11,14 @@ class Cdao::Document < Cdao::Base def clean_reference_number (reference_number.presence || "").gsub(//, "") end + + def libraries + Cdao::DocumentLibrary.where(library_product_type: doc_type, library_product_id: doc_id).map(&:library) + end + + def is_only_in_premium_libraries? + libraries.all?(&:premium?) + end def to_builder(ability = nil) Jbuilder.new do |doc| @@ -65,6 +73,10 @@ class Cdao::Document < Cdao::Base year.present? && year > 0 ? year : (doc_date.try :year) end + boolean :is_only_in_premium_libraries do + is_only_in_premium_libraries? + end + string :citation_finders_names, multiple: true end end diff --git a/app/models/cdao/document_library.rb b/app/models/cdao/document_library.rb new file mode 100644 index 0000000..f6d19c5 --- /dev/null +++ b/app/models/cdao/document_library.rb @@ -0,0 +1,5 @@ +class Cdao::DocumentLibrary < Cdao::Base + self.table_name = "document_product_titles" + + belongs_to :library, class_name: "Cdao::Library", foreign_key: :producttitle_id, optional: false +end diff --git a/app/models/cdao/jurisprudence.rb b/app/models/cdao/jurisprudence.rb index 5b8a032..c899c3d 100644 --- a/app/models/cdao/jurisprudence.rb +++ b/app/models/cdao/jurisprudence.rb @@ -12,6 +12,14 @@ class Cdao::Jurisprudence < Cdao::Base alias_attribute :doc_date, :docdate + def libraries + Cdao::DocumentLibrary.where(library_product_type: self.class.name.gsub("Cdao::", ""), library_product_id: id).map(&:library) + end + + def is_only_in_premium_libraries? + libraries.all?(&:premium?) + end + def cited_documents Cdao::Citation.where(citing_doc_id: self.id, citing_doc_type: self.class.name.gsub("Cdao::", "")) end @@ -147,6 +155,10 @@ class Cdao::Jurisprudence < Cdao::Base boolean :edited + boolean :is_only_in_premium_libraries do + is_only_in_premium_libraries? + end + join(:phil_rep, :target => Annotation, :type => :string, :join => { :from => :document_id, :to => :id }) end end diff --git a/app/models/cdao/library.rb b/app/models/cdao/library.rb index d1a4b2e..2fce45a 100644 --- a/app/models/cdao/library.rb +++ b/app/models/cdao/library.rb @@ -2,4 +2,8 @@ class Cdao::Library < Cdao::Base default_scope { where(id: Cdao::Library.find_by(key: "JurisprudenceEncyclopedia").try(:id)) } self.table_name = "producttitles" + + def premium? + name.match?(/Encyclopedia/) + end end