Skip to content
Snippets Groups Projects
extranet.rb 2.09 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]
#  has_sso                    :boolean          default(FALSE)
#  host                       :string
#  name                       :string
#  registration_contact       :string
#  sso_cert                   :text
#  sso_mapping                :jsonb
#  sso_name_identifier_format :string
#  sso_provider               :integer          default("saml")
#  sso_target_url             :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
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