Skip to content
Snippets Groups Projects
extranet.rb 2.25 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]
Sébastien Gaya's avatar
Sébastien Gaya committed
#  color                      :string
#  cookies_policy             :text
pabois's avatar
pabois committed
#  has_sso                    :boolean          default(FALSE)
#  host                       :string
#  name                       :string
Sébastien Gaya's avatar
Sébastien Gaya committed
#  privacy_policy             :text
pabois's avatar
pabois committed
#  registration_contact       :string
#  sso_cert                   :text
#  sso_mapping                :jsonb
#  sso_name_identifier_format :string
#  sso_provider               :integer          default("saml")
#  sso_target_url             :string
Sébastien Gaya's avatar
Sébastien Gaya committed
#  terms                      :text
pabois's avatar
pabois committed
#  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
Sébastien Gaya's avatar
Sébastien Gaya committed
  include WithLegal
pabois's avatar
pabois committed
  include WithSso
Arnaud Levy's avatar
Arnaud Levy committed
  include WithUniversity
Arnaud Levy's avatar
Arnaud Levy committed

  validates_presence_of :name, :host
Arnaud Levy's avatar
Arnaud Levy committed

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.host) ILIKE unaccent(:term) OR
pabois's avatar
pabois committed
      unaccent(communication_extranets.name) ILIKE unaccent(:term)
    ", term: "%#{sanitize_sql_like(term)}%")
  }

Arnaud Levy's avatar
Arnaud Levy committed
  def self.with_host(host)
Arnaud Levy's avatar
Arnaud Levy committed
  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 alumni
    about&.university_person_alumni
  end

  def cohorts
    about&.cohorts
  end

  def years
    about&.academic_years
  end

  def organizations
    about&.alumni_organizations
  end

Arnaud Levy's avatar
Arnaud Levy committed
  def url
    @url ||= Rails.env.development? ? "http://#{host}:3000" : "https://#{host}"
Arnaud Levy's avatar
Arnaud Levy committed
  end

  def to_s
    "#{name}"
  end
end