Sha256: 11d10967821965d3beed7b51fcedc9503e786d243b8a7444700402da6f393338

Contents?: true

Size: 1.21 KB

Versions: 38

Compression:

Stored size: 1.21 KB

Contents

require "csv"
require "local_authority"
require "safe_html"

class LocalService
  include Mongoid::Document

  field :description,    type: String
  field :lgsl_code,      type: Integer
  field :providing_tier, type: Array

  validates_presence_of :lgsl_code, :providing_tier
  validates_uniqueness_of :lgsl_code
  validates :providing_tier, inclusion: {
    in: [%w{county unitary}, %w{district unitary}, %w{district unitary county}]
  }

  def self.find_by_lgsl_code(lgsl_code)
    LocalService.where(lgsl_code: lgsl_code).first
  end

  def preferred_interaction(snac_or_snac_list, lgil_override = nil)
    provider = preferred_provider(snac_or_snac_list)
    provider && provider.preferred_interaction_for(lgsl_code, lgil_override)
  end

  def preferred_provider(snac_or_snac_list)
    snac_list = [*snac_or_snac_list]
    providers = LocalAuthority.for_snacs(snac_list)
    select_tier(providers)
  end

  def provided_by
    LocalAuthority.where("local_interactions.lgsl_code" => lgsl_code)
                  .any_in(tier: providing_tier)
  end

private

  def select_tier(authorities)
    by_tier = Hash[authorities.map {|a| [a.tier, a]}]
    tier = providing_tier.find { |t| by_tier.has_key?(t) }
    tier && by_tier[tier]
  end

end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
govuk_content_models-37.0.0 app/models/local_service.rb
govuk_content_models-36.0.0 app/models/local_service.rb
govuk_content_models-35.0.1 app/models/local_service.rb
govuk_content_models-35.0.0 app/models/local_service.rb
govuk_content_models-34.0.0 app/models/local_service.rb
govuk_content_models-33.0.0 app/models/local_service.rb
govuk_content_models-32.3.1 app/models/local_service.rb
govuk_content_models-32.3.0 app/models/local_service.rb
govuk_content_models-32.2.0 app/models/local_service.rb
govuk_content_models-32.1.0 app/models/local_service.rb
govuk_content_models-32.0.0 app/models/local_service.rb
govuk_content_models-31.4.0 app/models/local_service.rb
govuk_content_models-31.3.0 app/models/local_service.rb
govuk_content_models-31.2.2 app/models/local_service.rb
govuk_content_models-31.2.1 app/models/local_service.rb
govuk_content_models-31.2.0 app/models/local_service.rb
govuk_content_models-31.1.0 app/models/local_service.rb
govuk_content_models-31.0.0 app/models/local_service.rb
govuk_content_models-30.0.0 app/models/local_service.rb
govuk_content_models-29.1.2 app/models/local_service.rb