Skip to content
Snippets Groups Projects
extranet.rb 1.51 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
# == Schema Information
#
# Table name: communication_extranets
#
pabois's avatar
pabois committed
#  id                   :uuid             not null, primary key
#  about_type           :string           indexed => [about_id]
#  domain               :string
#  name                 :string
#  registration_contact :string
#  created_at           :datetime         not null
#  updated_at           :datetime         not null
#  about_id             :uuid             indexed => [about_type]
#  university_id        :uuid             not null, indexed
Arnaud Levy's avatar
Arnaud Levy committed
#
# Indexes
#
pabois's avatar
pabois committed
#  index_communication_extranets_on_about          (about_type,about_id)
Arnaud Levy's avatar
Arnaud Levy committed
#  index_communication_extranets_on_university_id  (university_id)
#
# Foreign Keys
#
#  fk_rails_c2268c7ebd  (university_id => universities.id)
#
class Communication::Extranet < ApplicationRecord
pabois's avatar
pabois committed
  include WithAbouts
Arnaud Levy's avatar
Arnaud Levy committed
  include WithUniversity
Arnaud Levy's avatar
Arnaud Levy committed

  validates_presence_of :name, :domain

Arnaud Levy's avatar
Arnaud Levy committed
  has_one_attached_deletable :logo

pabois's avatar
pabois committed
  scope :ordered, -> { order(:name) }
  scope :for_search_term, -> (term) {
    where("
      unaccent(communication_extranets.domain) ILIKE unaccent(:term) OR
      unaccent(communication_extranets.name) ILIKE unaccent(:term)
    ", term: "%#{sanitize_sql_like(term)}%")
  }

Arnaud Levy's avatar
Arnaud Levy committed
  def self.with_host(host)
    find_by domain: host
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def should_show_years?
Arnaud Levy's avatar
Arnaud Levy committed
    # For a single program, year is like cohort
    return false if about.is_a? Education::Program
    # if a school has a single program, same thing
Arnaud Levy's avatar
Arnaud Levy committed
    about.programs.many?
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def url
    "https://#{domain}"
  end

  def to_s
    "#{name}"
  end
end