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(//, "") 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