2022-09-21 15:18:08 +02:00
|
|
|
class Champs::RNAChamp < Champ
|
2023-01-13 13:47:17 +01:00
|
|
|
include RNAChampAssociationFetchableConcern
|
|
|
|
|
2022-09-21 15:18:08 +02:00
|
|
|
validates :value, allow_blank: true, format: {
|
2024-02-06 15:02:57 +01:00
|
|
|
with: /\AW[0-9A-Z]{9}\z/, message: I18n.t(:not_a_rna, scope: 'activerecord.errors.messages')
|
2024-04-02 11:04:00 +02:00
|
|
|
}, if: :validate_champ_value_or_prefill?
|
2022-09-22 17:13:53 +02:00
|
|
|
|
|
|
|
delegate :id, to: :procedure, prefix: true
|
|
|
|
|
2022-10-04 22:11:01 +02:00
|
|
|
def title
|
|
|
|
data&.dig("association_titre")
|
|
|
|
end
|
|
|
|
|
|
|
|
def identifier
|
|
|
|
title.present? ? "#{value} (#{title})" : value
|
|
|
|
end
|
|
|
|
|
2024-04-02 17:05:44 +02:00
|
|
|
def for_export(path = :value)
|
2022-10-04 22:11:01 +02:00
|
|
|
identifier
|
2022-09-22 17:13:53 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
def search_terms
|
|
|
|
etablissement.present? ? etablissement.search_terms : [value]
|
|
|
|
end
|
2024-02-05 18:47:40 +01:00
|
|
|
|
|
|
|
def full_address
|
|
|
|
address = data&.dig("adresse")
|
|
|
|
return if address.blank?
|
|
|
|
"#{address["numero_voie"]} #{address["type_voie"]} #{address["libelle_voie"]} #{address["code_postal"]} #{address["commune"]}"
|
|
|
|
end
|
|
|
|
|
|
|
|
def rna_address
|
|
|
|
address = data&.dig("adresse")
|
|
|
|
return if address.blank?
|
|
|
|
{
|
|
|
|
label: full_address,
|
|
|
|
type: "housenumber",
|
|
|
|
street_address: address["libelle_voie"] ? [address["numero_voie"], address["type_voie"], address["libelle_voie"]].compact.join(' ') : nil,
|
|
|
|
street_number: address["numero_voie"],
|
|
|
|
street_name: [address["type_voie"], address["libelle_voie"]].compact.join(' '),
|
|
|
|
postal_code: address["code_postal"],
|
|
|
|
city_name: address["commune"],
|
|
|
|
city_code: address["code_insee"]
|
2024-03-11 10:49:43 +01:00
|
|
|
}.with_indifferent_access
|
2024-02-05 18:47:40 +01:00
|
|
|
end
|
2022-09-21 15:18:08 +02:00
|
|
|
end
|