Class: EgovUtils::Address
Defined Under Namespace
Classes: Country, District, Region, Town
Constant Summary
collapse
- CZ_ISO_CODE =
'203'
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.countries ⇒ Object
25
26
27
28
29
30
31
32
33
|
# File 'app/models/egov_utils/address.rb', line 25
def self.countries
return @countries if @countries
require 'csv'
@countries = []
CSV.foreach(EgovUtils::Engine.root.join('config', 'countries.csv'), col_sep: ';', headers: true) do |row|
@countries << Country.new( row[0], row[1], row[2], row[3]) if row[1]
end
@countries
end
|
.districts ⇒ Object
35
36
37
38
39
40
41
42
43
|
# File 'app/models/egov_utils/address.rb', line 35
def self.districts
return @districts if @districts
require 'csv'
@districts = []
CSV.foreach(EgovUtils::Engine.root.join('config', 'okres.csv'), col_sep: ';', headers: true) do |row|
@districts << District.new( row[0].to_i, row[1], row[2].to_i) if row[1]
end
@districts
end
|
.region_for_district(district_name) ⇒ Object
64
65
66
67
|
# File 'app/models/egov_utils/address.rb', line 64
def self.region_for_district(district_name)
district = districts.detect{|d| d[:name] == district_name }
regions.detect{|r| r[:id] == district[:region_id] } if district
end
|
.regions ⇒ Object
45
46
47
48
49
50
51
52
53
|
# File 'app/models/egov_utils/address.rb', line 45
def self.regions
return @regions if @regions
require 'csv'
@regions = []
CSV.foreach(EgovUtils::Engine.root.join('config', 'kraj.csv'), col_sep: ';', headers: true) do |row|
@regions << Region.new( row[0].to_i, row[1]) if row[1]
end
@regions
end
|
.towns ⇒ Object
55
56
57
58
59
60
61
62
|
# File 'app/models/egov_utils/address.rb', line 55
def self.towns
@towns ||= begin
towns = File.read(EgovUtils::Engine.root.join('config', 'obec.json'))
JSON.parse(towns).map do |town|
Town.new(*town.slice('code', 'name', 'district_name').values)
end
end
end
|
Instance Method Details
#country_ids ⇒ Object
79
80
81
|
# File 'app/models/egov_utils/address.rb', line 79
def country_ids
self.class.countries.collect{|r| r[:iso_id]}
end
|
#district=(value) ⇒ Object
84
85
86
87
|
# File 'app/models/egov_utils/address.rb', line 84
def district=(value)
self.region = self.class.region_for_district(value).try(:[], :name)
super
end
|
#district_names ⇒ Object
73
74
75
|
# File 'app/models/egov_utils/address.rb', line 73
def district_names
self.class.districts.collect{|r| r[:name]}
end
|
#from_egon_info(message) ⇒ Object
114
115
116
117
118
119
120
121
122
123
|
# File 'app/models/egov_utils/address.rb', line 114
def from_egon_info(message)
self.egov_identifier = message[:adresni_misto_kod]
self.district = message[:okres_nazev]
self.city = message[:obec_nazev]
self.city_part = message[:cast_obce_nazev]
self.street = message[:ulice_nazev]
self.postcode = message[:posta_kod]
self.house_number = message[:cislo_domovni]
self.orientation_number = message[:cislo_orientacni]+(message[:cislo_orientacni_pismeno] || '')
end
|
#full_address ⇒ Object
97
98
99
|
# File 'app/models/egov_utils/address.rb', line 97
def full_address
to_s
end
|
#in_czech_republic? ⇒ Boolean
69
70
71
|
# File 'app/models/egov_utils/address.rb', line 69
def in_czech_republic?
country == CZ_ISO_CODE || country.nil?
end
|
#number ⇒ Object
89
90
91
92
93
94
95
|
# File 'app/models/egov_utils/address.rb', line 89
def number
if !house_number.blank? && !orientation_number.blank?
"#{house_number}/#{orientation_number}"
else
house_number.presence || orientation_number.presence
end
end
|
#prepare_egon_message(message) ⇒ Object
105
106
107
108
109
110
111
112
|
# File 'app/models/egov_utils/address.rb', line 105
def prepare_egon_message(message)
message.obec_nazev = city.presence
message.cast_obce_nazev = city_part.presence
message.ulice_nazev = street.presence
message.posta_kod = postcode.presence
message.cislo_domovni = house_number.presence
message.cislo_orientacni = orientation_number.presence
end
|
#region_names ⇒ Object
76
77
78
|
# File 'app/models/egov_utils/address.rb', line 76
def region_names
self.class.regions.collect{|r| r[:name]}
end
|
#to_s ⇒ Object
101
102
103
|
# File 'app/models/egov_utils/address.rb', line 101
def to_s
"#{street} #{number}, #{postcode} #{city}"
end
|