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.
84 lines
2.1 KiB
84 lines
2.1 KiB
class Cdao::Document < Cdao::Base |
|
self.table_name = "documents" |
|
|
|
alias_attribute :docdate, :doc_date |
|
alias_attribute :short_title, :title |
|
|
|
def year |
|
doc_date.present? ? doc_date.year : 0 |
|
end |
|
|
|
def clean_reference_number |
|
(reference_number.presence || "").gsub(/<!--\d+-->/, "") |
|
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| |
|
doc.(self, *%i[id title short_title]) |
|
doc.doc_date doc_date.presence || "0000-00-00" |
|
doc.year year.presence || 0 |
|
doc.reference_number clean_reference_number |
|
doc.display_reference_number clean_reference_number.presence || short_title.presence || title |
|
doc.url Rails.application.routes.url_helpers.document_path(self) |
|
end |
|
end |
|
|
|
def citation_finders_names |
|
return [] unless doc_type.match?("Jurisprudence") |
|
|
|
Cdao::Jurisprudence.find(doc_id).citation_finders_names |
|
end |
|
|
|
def phil_rep |
|
return "" unless doc_type.match?("Jurisprudence") |
|
|
|
Cdao::Jurisprudence.find(doc_id).phil_rep |
|
end |
|
|
|
def scra |
|
return "" unless doc_type.match?("Jurisprudence") |
|
|
|
Cdao::Jurisprudence.find(doc_id).scra |
|
end |
|
|
|
searchable do |
|
text :reference_number, stored: true |
|
text :title, stored: true |
|
text :short_title, stored: true |
|
|
|
string :reference_number |
|
string :title do |
|
(title.present? ? title.first(32760).strip : short_title || "").titleize |
|
end |
|
string :short_title do |
|
(short_title.presence || title || "").first(32760).strip.titleize |
|
end |
|
|
|
date :doc_date |
|
date :search_doc_date do |
|
doc_date.presence || Date.new(year.presence || 0) |
|
end |
|
|
|
integer :id |
|
integer :year |
|
integer :search_year do |
|
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 do |
|
citation_finders_names |
|
end |
|
end |
|
end
|
|
|