Skip to content
Snippets Groups Projects
laboratory.rb 2.01 KiB
Newer Older
Sébastien Gaya's avatar
Sébastien Gaya committed
# == Schema Information
#
# Table name: research_laboratories
#
#  id            :uuid             not null, primary key
#  address       :string
#  city          :string
#  country       :string
#  name          :string
#  zipcode       :string
#  created_at    :datetime         not null
#  updated_at    :datetime         not null
pabois's avatar
pabois committed
#  university_id :uuid             not null, indexed
Sébastien Gaya's avatar
Sébastien Gaya committed
#
# Indexes
#
#  index_research_laboratories_on_university_id  (university_id)
#
# Foreign Keys
#
pabois's avatar
pabois committed
#  fk_rails_f61d27545f  (university_id => universities.id)
Sébastien Gaya's avatar
Sébastien Gaya committed
#
class Research::Laboratory < ApplicationRecord
Sébastien Gaya's avatar
Sébastien Gaya committed
  include WithGit
Sébastien Gaya's avatar
Sébastien Gaya committed
  include Aboutable
Sébastien Gaya's avatar
Sébastien Gaya committed

Sébastien Gaya's avatar
Sébastien Gaya committed
  belongs_to  :university
Arnaud Levy's avatar
Arnaud Levy committed
  has_many    :websites,
              class_name: 'Communication::Website',
              as: :about,
              dependent: :nullify
Sébastien Gaya's avatar
Sébastien Gaya committed
  has_many    :axes,
Arnaud Levy's avatar
Arnaud Levy committed
              class_name: 'Research::Laboratory::Axis',
Sébastien Gaya's avatar
Sébastien Gaya committed
              foreign_key: :research_laboratory_id,
              dependent: :destroy
Sébastien Gaya's avatar
Sébastien Gaya committed

pabois's avatar
pabois committed
  validates :name, :address, :city, :zipcode, :country, presence: true

Sébastien Gaya's avatar
Sébastien Gaya committed
  scope :ordered, -> { order(:name) }
pabois's avatar
pabois committed
  scope :for_search_term, -> (term) {
    where("
      unaccent(research_laboratories.address) ILIKE unaccent(:term) OR
      unaccent(research_laboratories.city) ILIKE unaccent(:term) OR
      unaccent(research_laboratories.country) ILIKE unaccent(:term) OR
      unaccent(research_laboratories.name) ILIKE unaccent(:term) OR
pabois's avatar
pabois committed
      unaccent(research_laboratories.zipcode) ILIKE unaccent(:term)
pabois's avatar
pabois committed
    ", term: "%#{sanitize_sql_like(term)}%")
  }
Sébastien Gaya's avatar
Sébastien Gaya committed

  def to_s
    "#{name}"
  end

  def full_address
    [address, zipcode, city].compact.join ' '
  end

  def git_path(website)
    "data/laboratory.yml"
  end
Sébastien Gaya's avatar
Sébastien Gaya committed

  def has_administrators?
    false
  end

  def has_researchers?
    # TODO: Ajouter les researchers quand ils existeront
    false
  end

  def has_teachers?
    false
  end

  def has_education_programs?
    false
  end

pabois's avatar
pabois committed
  def has_education_diplomas?
    false
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def has_research_papers?
Sébastien Gaya's avatar
Sébastien Gaya committed
    false
  end

  def has_research_volumes?
    false
  end
Sébastien Gaya's avatar
Sébastien Gaya committed
end