Class: ViewModel::SapSchemaNi172::CommonSchema

Inherits:
DomesticEpcViewModel show all
Defined in:
lib/view_model/sap_schema_ni_172/common_schema.rb

Direct Known Subclasses

Rdsap, Sap

Instance Method Summary collapse

Methods inherited from DomesticEpcViewModel

#addendum, #has_hot_water_cylinder, #improvement_title, #lzc_energy_sources, #main_heating_category, #multi_glazing_type, #property_type, #status, #water_heating_code

Methods inherited from BaseViewModel

#initialize, #xpath

Constructor Details

This class inherits a constructor from ViewModel::BaseViewModel

Instance Method Details

#address_idObject



61
62
63
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 61

def address_id
  "LPRN-#{xpath(%w[UPRN])}"
end

#address_line1Object



8
9
10
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 8

def address_line1
  xpath(%w[Property Address Address-Line-1])
end

#address_line2Object



12
13
14
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 12

def address_line2
  xpath(%w[Property Address Address-Line-2]).to_s
end

#address_line3Object



16
17
18
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 16

def address_line3
  xpath(%w[Property Address Address-Line-3]).to_s
end

#address_line4Object



20
21
22
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 20

def address_line4
  xpath(%w[Property Address Address-Line-4]).to_s
end

#all_floor_descriptionsObject



429
430
431
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 429

def all_floor_descriptions
  @xml_doc.search("Property-Summary/Floor/Description").map(&:content)
end

#all_floor_energy_efficiency_ratingObject



433
434
435
436
437
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 433

def all_floor_energy_efficiency_rating
  @xml_doc
    .search("Property-Summary/Floor/Energy-Efficiency-Rating")
    .map(&:content)
end

#all_floor_env_energy_efficiency_ratingObject



439
440
441
442
443
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 439

def all_floor_env_energy_efficiency_rating
  @xml_doc
    .search("Property-Summary/Floor/Environmental-Efficiency-Rating")
    .map(&:content)
end

#all_main_heating_controls_descriptionsObject



357
358
359
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 357

def all_main_heating_controls_descriptions
  @xml_doc.search("Main-Heating-Controls/Description").map(&:content)
end

#all_main_heating_controls_energy_efficiencyObject



445
446
447
448
449
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 445

def all_main_heating_controls_energy_efficiency
  @xml_doc
    .search("Main-Heating-Controls/Energy-Efficiency-Rating")
    .map(&:content)
end

#all_main_heating_controls_environmental_efficiencyObject



451
452
453
454
455
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 451

def all_main_heating_controls_environmental_efficiency
  @xml_doc
    .search("Main-Heating-Controls/Environmental-Efficiency-Rating")
    .map(&:content)
end

#all_main_heating_descriptionsObject



65
66
67
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 65

def all_main_heating_descriptions
  @xml_doc.search("Main-Heating/Description").map(&:content)
end

#all_main_heating_energy_efficiencyObject



397
398
399
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 397

def all_main_heating_energy_efficiency
  @xml_doc.search("Main-Heating/Energy-Efficiency-Rating").map(&:content)
end

#all_main_heating_environmental_efficiencyObject



423
424
425
426
427
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 423

def all_main_heating_environmental_efficiency
  @xml_doc
    .search("Main-Heating/Environmental-Efficiency-Rating")
    .map(&:content)
end

#all_roof_descriptionsObject



365
366
367
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 365

def all_roof_descriptions
  @xml_doc.search("Roof/Description").map(&:content)
end

#all_roof_energy_efficiency_ratingObject



369
370
371
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 369

def all_roof_energy_efficiency_rating
  @xml_doc.search("Roof/Energy-Efficiency-Rating").map(&:content)
end

#all_roof_env_energy_efficiency_ratingObject



373
374
375
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 373

def all_roof_env_energy_efficiency_rating
  @xml_doc.search("Roof/Environmental-Efficiency-Rating").map(&:content)
end

#all_wall_descriptionsObject



377
378
379
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 377

def all_wall_descriptions
  @xml_doc.search("Walls/Description").map(&:content)
end

#all_wall_energy_efficiency_ratingObject



381
382
383
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 381

def all_wall_energy_efficiency_rating
  @xml_doc.search("Walls/Energy-Efficiency-Rating").map(&:content)
end

#all_wall_env_energy_efficiency_ratingObject



385
386
387
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 385

def all_wall_env_energy_efficiency_rating
  @xml_doc.search("Walls/Environmental-Efficiency-Rating").map(&:content)
end

#assessment_idObject



4
5
6
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 4

def assessment_id
  xpath(%w[RRN])
end

#assessor_emailObject



45
46
47
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 45

def assessor_email
  xpath(%w[Home-Inspector E-Mail])
end

#assessor_nameObject



36
37
38
39
40
41
42
43
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 36

def assessor_name
  [
    xpath(%w[Home-Inspector Name Prefix]),
    xpath(%w[Home-Inspector Name First-Name]),
    xpath(%w[Home-Inspector Name Surname]),
    xpath(%w[Home-Inspector Name Suffix]),
  ].reject { |e| e.to_s.empty? }.join(" ")
end

#assessor_telephoneObject



49
50
51
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 49

def assessor_telephone
  xpath(%w[Home-Inspector Telephone])
end

#built_formObject



337
338
339
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 337

def built_form
  xpath(%w[Built-Form])
end

#co2_emissions_current_per_floor_areaObject



252
253
254
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 252

def co2_emissions_current_per_floor_area
  xpath(%w[CO2-Emissions-Current-Per-Floor-Area])
end

#country_codeObject



221
222
223
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 221

def country_code
  xpath(%w[Country-Code])
end

#current_carbon_emissionObject



151
152
153
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 151

def current_carbon_emission
  xpath(%w[CO2-Emissions-Current])
end

#current_energy_ratingObject



159
160
161
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 159

def current_energy_rating
  xpath(%w[Energy-Rating-Current])&.to_i
end

#current_space_heating_demandObject



195
196
197
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 195

def current_space_heating_demand
  xpath(%w[Space-Heating]) or xpath(%w[Space-Heating-Existing-Dwelling])
end

#current_water_heating_demandObject



199
200
201
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 199

def current_water_heating_demand
  xpath(%w[Water-Heating])
end

#date_of_assessmentObject



53
54
55
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 53

def date_of_assessment
  xpath(%w[Inspection-Date])
end

#date_of_expiryObject



69
70
71
72
73
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 69

def date_of_expiry
  expires_at = (Date.parse(date_of_registration) - 1) >> 12 * 10

  expires_at.to_s
end

#date_of_registrationObject



57
58
59
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 57

def date_of_registration
  xpath(%w[Registration-Date])
end

#dwelling_typeObject



177
178
179
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 177

def dwelling_type
  xpath(%w[Dwelling-Type])
end

#energy_consumption_potentialObject



167
168
169
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 167

def energy_consumption_potential
  xpath(%w[Energy-Consumption-Potential])
end

#energy_tariffObject



389
390
391
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 389

def energy_tariff
  xpath(%w[Electricity-Tariff])
end

#environmental_impact_currentObject



244
245
246
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 244

def environmental_impact_current
  xpath(%w[Environmental-Impact-Current])&.to_i
end

#environmental_impact_potentialObject



248
249
250
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 248

def environmental_impact_potential
  xpath(%w[Environmental-Impact-Potential])&.to_i
end

#estimated_energy_costObject



171
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 171

def estimated_energy_cost; end

#extensions_countObject



353
354
355
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 353

def extensions_count
  xpath(%w[Extensions-Count])&.to_i
end

#fixed_lighting_outlets_countObject



277
278
279
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 277

def fixed_lighting_outlets_count
  xpath(%w[Fixed-Lighting-Outlets-Count])&.to_i
end

#floor_heightObject



401
402
403
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 401

def floor_height
  @xml_doc.search("Storey-Height").map(&:content)
end

#floor_levelObject



393
394
395
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 393

def floor_level
  xpath(%w[SAP-Flat-Details Level])
end

#heat_loss_corridorObject



345
346
347
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 345

def heat_loss_corridor
  xpath(%w[Heat-Loss-Corridor])
end

#heating_cost_currentObject



139
140
141
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 139

def heating_cost_current
  xpath(%w[Heating-Cost-Current])
end

#heating_cost_potentialObject



127
128
129
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 127

def heating_cost_potential
  xpath(%w[Heating-Cost-Potential])
end

#hot_water_cost_currentObject



135
136
137
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 135

def hot_water_cost_current
  xpath(%w[Hot-Water-Cost-Current])
end

#hot_water_cost_potentialObject



123
124
125
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 123

def hot_water_cost_potential
  xpath(%w[Hot-Water-Cost-Potential])
end

#hot_water_descriptionObject



289
290
291
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 289

def hot_water_description
  xpath(%w[Hot-Water Description])
end

#hot_water_energy_efficiency_ratingObject



293
294
295
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 293

def hot_water_energy_efficiency_rating
  xpath(%w[Hot-Water Energy-Efficiency-Rating])
end

#hot_water_environmental_efficiency_ratingObject



297
298
299
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 297

def hot_water_environmental_efficiency_rating
  xpath(%w[Hot-Water Environmental-Efficiency-Rating])
end

#impact_of_cavity_insulationObject



203
204
205
206
207
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 203

def impact_of_cavity_insulation
  if xpath(%w[Impact-Of-Cavity-Insulation])
    xpath(%w[Impact-Of-Cavity-Insulation])&.to_i
  end
end

#impact_of_loft_insulationObject



209
210
211
212
213
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 209

def impact_of_loft_insulation
  if xpath(%w[Impact-Of-Loft-Insulation])
    xpath(%w[Impact-Of-Loft-Insulation])&.to_i
  end
end

#impact_of_solid_wall_insulationObject



215
216
217
218
219
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 215

def impact_of_solid_wall_insulation
  if xpath(%w[Impact-Of-Solid-Wall-Insulation])
    xpath(%w[Impact-Of-Solid-Wall-Insulation])&.to_i
  end
end

#improvementsObject



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 100

def improvements
  @xml_doc
    .search("Suggested-Improvements Improvement")
    .map do |node|
      {
        energy_performance_rating_improvement:
          xpath(%w[Energy-Performance-Rating], node).to_i,
        environmental_impact_rating_improvement:
          xpath(%w[Environmental-Impact-Rating], node).to_i,
        green_deal_category_code: xpath(%w[Green-Deal-Category], node),
        improvement_category: xpath(%w[Improvement-Category], node),
        improvement_code:
          xpath(%w[Improvement-Details Improvement-Number], node),
        improvement_description: xpath(%w[Improvement-Description], node),
        improvement_title: improvement_title(node),
        improvement_type: xpath(%w[Improvement-Type], node),
        indicative_cost: xpath(%w[Indicative-Cost], node),
        sequence: xpath(%w[Sequence], node).to_i,
        typical_saving: xpath(%w[Typical-Saving], node),
      }
    end
end

#levelObject



256
257
258
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 256

def level
  xpath(%w[Level])
end

#lighting_cost_currentObject



143
144
145
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 143

def lighting_cost_current
  xpath(%w[Lighting-Cost-Current])
end

#lighting_cost_potentialObject



131
132
133
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 131

def lighting_cost_potential
  xpath(%w[Lighting-Cost-Potential])
end

#lighting_descriptionObject



325
326
327
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 325

def lighting_description
  xpath(%w[Lighting Description])
end

#lighting_energy_efficiency_ratingObject



329
330
331
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 329

def lighting_energy_efficiency_rating
  xpath(%w[Lighting Energy-Efficiency-Rating])
end

#lighting_environmental_efficiency_ratingObject



333
334
335
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 333

def lighting_environmental_efficiency_rating
  xpath(%w[Lighting Environmental-Efficiency-Rating])
end

#low_energy_fixed_lighting_outlets_countObject



281
282
283
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 281

def low_energy_fixed_lighting_outlets_count
  xpath(%w[Low-Energy-Fixed-Lighting-Outlets-Count])&.to_i
end

#low_energy_lightingObject



273
274
275
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 273

def low_energy_lighting
  xpath(%w[Low-Energy-Fixed-Lighting-Outlets-Percentage])
end

#main_dwelling_construction_age_band_or_yearObject



405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 405

def main_dwelling_construction_age_band_or_year
  sap_building_parts =
    @xml_doc.xpath("//SAP-Building-Parts/SAP-Building-Part")
  sap_building_parts.each do |sap_building_part|
    building_part_number = sap_building_part.at("Building-Part-Number")

    # Identifies the Main Dwelling
    if building_part_number&.content == "1"
      return(
        sap_building_part.at_xpath(
          "Construction-Age-Band | Construction-Year",
        )&.content
      )
    end
  end
  nil
end

#main_fuel_typeObject



225
226
227
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 225

def main_fuel_type
  xpath(%w[Main-Fuel-Type])
end

#main_heating_controlsObject



265
266
267
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 265

def main_heating_controls
  xpath(%w[Main-Heating-Controls Description])
end

#multiple_glazed_proportionObject



269
270
271
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 269

def multiple_glazed_proportion
  xpath(%w[Multiple-Glazed-Proportion])
end

#open_fireplaces_countObject



285
286
287
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 285

def open_fireplaces_count
  xpath(%w[Open-Fireplaces-Count])&.to_i
end

#postcodeObject



28
29
30
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 28

def postcode
  xpath(%w[Property Address Postcode])
end

#potential_carbon_emissionObject



147
148
149
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 147

def potential_carbon_emission
  xpath(%w[CO2-Emissions-Potential])
end

#potential_energy_ratingObject



155
156
157
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 155

def potential_energy_rating
  xpath(%w[Energy-Rating-Potential])&.to_i
end

#potential_energy_savingObject



181
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 181

def potential_energy_saving; end

#primary_energy_useObject



163
164
165
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 163

def primary_energy_use
  xpath(%w[Energy-Consumption-Current])
end

#property_age_bandObject



183
184
185
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 183

def property_age_band
  xpath(%w[Construction-Year])
end

#property_summaryObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 75

def property_summary
  @xml_doc.search("Energy-Assessment Property-Summary").children.select(
    &:element?
  ).map { |node|
    next if xpath(%w[Energy-Efficiency-Rating], node).nil?

    {
      energy_efficiency_rating:
        xpath(%w[Energy-Efficiency-Rating], node).to_i,
      environmental_efficiency_rating:
        xpath(%w[Environmental-Efficiency-Rating], node).to_i,
      name: node.name.underscore,
      description: xpath(%w[Description], node),
    }
  }.compact
end


96
97
98
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 96

def related_party_disclosure_number
  xpath(%w[Related-Party-Disclosure-Number])&.to_i
end


92
93
94
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 92

def related_party_disclosure_text
  xpath(%w[Related-Party-Disclosure-Text])
end

#report_typeObject



361
362
363
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 361

def report_type
  xpath(%w[Report-Type])
end

#scheme_assessor_idObject



32
33
34
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 32

def scheme_assessor_id
  xpath(%w[Certificate-Number])
end

#secondary_fuel_typeObject



229
230
231
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 229

def secondary_fuel_type
  xpath(%w[Secondary-Fuel-Type])
end

#secondary_heating_descriptionObject



313
314
315
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 313

def secondary_heating_description
  xpath(%w[Secondary-Heating Description])
end

#secondary_heating_energy_efficiency_ratingObject



317
318
319
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 317

def secondary_heating_energy_efficiency_rating
  xpath(%w[Secondary-Heating Energy-Efficiency-Rating])
end

#secondary_heating_environmental_efficiency_ratingObject



321
322
323
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 321

def secondary_heating_environmental_efficiency_rating
  xpath(%w[Secondary-Heating Environmental-Efficiency-Rating])
end

#tenureObject



187
188
189
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 187

def tenure
  xpath(%w[Tenure])
end

#top_storeyObject



260
261
262
263
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 260

def top_storey
  flat_level_code = xpath(%w[Level])
  flat_level_code == "3" ? "Y" : "N"
end

#total_floor_areaObject



173
174
175
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 173

def total_floor_area
  xpath(%w[Property-Summary Total-Floor-Area])
end

#townObject



24
25
26
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 24

def town
  xpath(%w[Property Address Post-Town])
end

#transaction_typeObject



191
192
193
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 191

def transaction_type
  xpath(%w[Transaction-Type])
end

#type_of_assessmentObject



233
234
235
236
237
238
239
240
241
242
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 233

def type_of_assessment
  case xpath(%w[Report-Type])&.to_i
  when 1
    "HCR"
  when 2
    "RdSAP"
  when 3
    "SAP"
  end
end

#unheated_corridor_lengthObject



349
350
351
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 349

def unheated_corridor_length
  xpath(%w[Unheated-Corridor-Length])
end

#wind_turbine_countObject



341
342
343
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 341

def wind_turbine_count
  xpath(%w[Wind-Turbines-Count])&.to_i
end

#window_descriptionObject



301
302
303
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 301

def window_description
  xpath(%w[Windows Description])
end

#window_energy_efficiency_ratingObject



305
306
307
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 305

def window_energy_efficiency_rating
  xpath(%w[Windows Energy-Efficiency-Rating])
end

#window_environmental_efficiency_ratingObject



309
310
311
# File 'lib/view_model/sap_schema_ni_172/common_schema.rb', line 309

def window_environmental_efficiency_rating
  xpath(%w[Windows Environmental-Efficiency-Rating])
end