class ChorusConfiguration
  include ActiveModel::Model
  include ActiveModel::Attributes

  attribute :centre_de_cout, :simple_json, default: '{}'
  attribute :domaine_fonctionnel, :simple_json, default: '{}'
  attribute :referentiel_de_programmation, :simple_json, default: '{}'

  def self.format_centre_de_cout_label(api_result)
    return "" if api_result.blank?
    api_result = api_result.symbolize_keys
    "#{api_result[:description]} - #{api_result[:code]}"
  end

  def self.format_domaine_fonctionnel_label(api_result)
    return "" if api_result.blank?
    api_result = api_result.symbolize_keys
    "#{api_result[:label]} - #{api_result[:code]}"
  end

  def self.format_ref_programmation_label(api_result)
    return "" if api_result.blank?
    api_result = api_result.symbolize_keys
    "#{api_result[:label]} - #{api_result[:code]}"
  end

  def complete?
    [
      centre_de_cout,
      domaine_fonctionnel,
      referentiel_de_programmation
    ].all?(&:present?)
  end
end