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.
 
 
 
 
 

105 lines
2.6 KiB

class Cdao::Document < Cdao::Base
self.table_name = "documents"
belongs_to :library, class_name: "Cdao::Library", optional: false
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 doc_date_display
doc_date.present? ? doc_date.strftime("%B %d, %Y") : year
end
def display_text
title_display = short_title || title
[title_display, clean_reference_number, doc_date_display].join(", ")
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 content
table_name = self.doc_type.tableize
sql = "select * from #{table_name} where id='#{self.doc_id}' LIMIT 1"
query = Cdao::Base.connection.execute(sql)
query.first.present? ? query.first["content"] : ""
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 :library_rank do
library.rank
end
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
end
end