epb_view_models 1.2.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +38 -28
  4. data/epb_view_models.gemspec +1 -1
  5. data/lib/epb_view_models.rb +1 -1
  6. data/lib/presenter/cepc/report.rb +11 -15
  7. data/lib/presenter/cepc/summary.rb +5 -14
  8. data/lib/presenter/dec/report.rb +5 -9
  9. data/lib/presenter/dec/summary.rb +3 -11
  10. data/lib/presenter/dec/xml_summary.rb +2 -2
  11. data/lib/presenter/export/base.rb +4 -4
  12. data/lib/presenter/export/commercial.rb +16 -27
  13. data/lib/presenter/export/domestic.rb +30 -39
  14. data/lib/presenter/rd_sap/domestic_digest.rb +2 -4
  15. data/lib/presenter/rd_sap/report.rb +47 -57
  16. data/lib/presenter/rd_sap/summary.rb +13 -21
  17. data/lib/presenter/sap/domestic_digest.rb +2 -4
  18. data/lib/presenter/sap/report.rb +49 -59
  19. data/lib/presenter/sap/summary.rb +27 -41
  20. data/lib/view_model/cepc31/cepc.rb +4 -44
  21. data/lib/view_model/cepc31/common_schema.rb +1 -1
  22. data/lib/view_model/cepc31/dec.rb +14 -34
  23. data/lib/view_model/cepc40/ac_report.rb +1 -1
  24. data/lib/view_model/cepc40/cepc.rb +6 -30
  25. data/lib/view_model/cepc40/common_schema.rb +1 -1
  26. data/lib/view_model/cepc40/dec.rb +16 -16
  27. data/lib/view_model/cepc50/ac_report.rb +1 -1
  28. data/lib/view_model/cepc50/cepc.rb +6 -10
  29. data/lib/view_model/cepc50/common_schema.rb +1 -1
  30. data/lib/view_model/cepc50/dec.rb +16 -16
  31. data/lib/view_model/cepc51/ac_report.rb +1 -1
  32. data/lib/view_model/cepc51/cepc.rb +6 -6
  33. data/lib/view_model/cepc51/common_schema.rb +1 -1
  34. data/lib/view_model/cepc51/dec.rb +16 -16
  35. data/lib/view_model/cepc60/ac_report.rb +1 -1
  36. data/lib/view_model/cepc60/cepc.rb +6 -10
  37. data/lib/view_model/cepc60/common_schema.rb +1 -1
  38. data/lib/view_model/cepc60/dec.rb +17 -17
  39. data/lib/view_model/cepc70/ac_cert.rb +3 -3
  40. data/lib/view_model/cepc70/ac_report.rb +1 -1
  41. data/lib/view_model/cepc70/cepc.rb +6 -10
  42. data/lib/view_model/cepc70/common_schema.rb +1 -1
  43. data/lib/view_model/cepc70/dec.rb +17 -17
  44. data/lib/view_model/cepc71/ac_cert.rb +3 -3
  45. data/lib/view_model/cepc71/ac_report.rb +1 -1
  46. data/lib/view_model/cepc71/cepc.rb +6 -6
  47. data/lib/view_model/cepc71/common_schema.rb +1 -1
  48. data/lib/view_model/cepc71/dec.rb +17 -17
  49. data/lib/view_model/cepc800/ac_cert.rb +3 -3
  50. data/lib/view_model/cepc800/ac_report.rb +1 -1
  51. data/lib/view_model/cepc800/cepc.rb +6 -11
  52. data/lib/view_model/cepc800/common_schema.rb +1 -1
  53. data/lib/view_model/cepc800/dec.rb +17 -17
  54. data/lib/view_model/cepc_ni800/ac_cert.rb +3 -3
  55. data/lib/view_model/cepc_ni800/ac_report.rb +1 -1
  56. data/lib/view_model/cepc_ni800/cepc.rb +6 -10
  57. data/lib/view_model/cepc_ni800/common_schema.rb +1 -1
  58. data/lib/view_model/cepc_ni800/dec.rb +17 -17
  59. data/lib/view_model/rd_sap_schema_170/common_schema.rb +17 -25
  60. data/lib/view_model/rd_sap_schema_171/common_schema.rb +17 -25
  61. data/lib/view_model/rd_sap_schema_180/common_schema.rb +17 -25
  62. data/lib/view_model/rd_sap_schema_190/common_schema.rb +17 -25
  63. data/lib/view_model/rd_sap_schema_200/common_schema.rb +17 -25
  64. data/lib/view_model/rd_sap_schema_210/common_schema.rb +14 -34
  65. data/lib/view_model/rd_sap_schema_ni_173/common_schema.rb +17 -25
  66. data/lib/view_model/rd_sap_schema_ni_174/common_schema.rb +17 -25
  67. data/lib/view_model/rd_sap_schema_ni_180/common_schema.rb +17 -25
  68. data/lib/view_model/rd_sap_schema_ni_190/common_schema.rb +17 -25
  69. data/lib/view_model/rd_sap_schema_ni_200/common_schema.rb +17 -25
  70. data/lib/view_model/sap_schema_102/common_schema.rb +13 -85
  71. data/lib/view_model/sap_schema_102/rdsap.rb +3 -3
  72. data/lib/view_model/sap_schema_110/common_schema.rb +13 -65
  73. data/lib/view_model/sap_schema_110/rdsap.rb +3 -19
  74. data/lib/view_model/sap_schema_110/sap.rb +1 -1
  75. data/lib/view_model/sap_schema_112/common_schema.rb +13 -65
  76. data/lib/view_model/sap_schema_112/rdsap.rb +3 -19
  77. data/lib/view_model/sap_schema_112/sap.rb +1 -1
  78. data/lib/view_model/sap_schema_120/common_schema.rb +13 -61
  79. data/lib/view_model/sap_schema_120/rdsap.rb +3 -19
  80. data/lib/view_model/sap_schema_120/sap.rb +1 -1
  81. data/lib/view_model/sap_schema_130/common_schema.rb +13 -61
  82. data/lib/view_model/sap_schema_130/rdsap.rb +3 -19
  83. data/lib/view_model/sap_schema_130/sap.rb +1 -1
  84. data/lib/view_model/sap_schema_140/common_schema.rb +14 -58
  85. data/lib/view_model/sap_schema_140/rdsap.rb +3 -19
  86. data/lib/view_model/sap_schema_140/sap.rb +1 -1
  87. data/lib/view_model/sap_schema_141/common_schema.rb +14 -58
  88. data/lib/view_model/sap_schema_141/rdsap.rb +3 -19
  89. data/lib/view_model/sap_schema_141/sap.rb +1 -1
  90. data/lib/view_model/sap_schema_142/common_schema.rb +14 -58
  91. data/lib/view_model/sap_schema_142/rdsap.rb +3 -19
  92. data/lib/view_model/sap_schema_142/sap.rb +1 -1
  93. data/lib/view_model/sap_schema_150/common_schema.rb +14 -58
  94. data/lib/view_model/sap_schema_150/rdsap.rb +3 -19
  95. data/lib/view_model/sap_schema_150/sap.rb +1 -1
  96. data/lib/view_model/sap_schema_160/common_schema.rb +14 -58
  97. data/lib/view_model/sap_schema_160/rdsap.rb +3 -19
  98. data/lib/view_model/sap_schema_160/sap.rb +1 -1
  99. data/lib/view_model/sap_schema_161/common_schema.rb +14 -58
  100. data/lib/view_model/sap_schema_161/rdsap.rb +3 -19
  101. data/lib/view_model/sap_schema_161/sap.rb +1 -1
  102. data/lib/view_model/sap_schema_162/common_schema.rb +14 -58
  103. data/lib/view_model/sap_schema_162/rdsap.rb +3 -19
  104. data/lib/view_model/sap_schema_162/sap.rb +1 -1
  105. data/lib/view_model/sap_schema_163/common_schema.rb +13 -53
  106. data/lib/view_model/sap_schema_163/rdsap.rb +3 -19
  107. data/lib/view_model/sap_schema_163/sap.rb +1 -1
  108. data/lib/view_model/sap_schema_170/common_schema.rb +13 -65
  109. data/lib/view_model/sap_schema_171/common_schema.rb +13 -65
  110. data/lib/view_model/sap_schema_1800/common_schema.rb +12 -64
  111. data/lib/view_model/sap_schema_1900/common_schema.rb +10 -50
  112. data/lib/view_model/sap_schema_1910/common_schema.rb +10 -50
  113. data/lib/view_model/sap_schema_ni_112/common_schema.rb +13 -61
  114. data/lib/view_model/sap_schema_ni_112/rdsap.rb +3 -19
  115. data/lib/view_model/sap_schema_ni_112/sap.rb +1 -1
  116. data/lib/view_model/sap_schema_ni_120/common_schema.rb +13 -61
  117. data/lib/view_model/sap_schema_ni_120/rdsap.rb +3 -19
  118. data/lib/view_model/sap_schema_ni_120/sap.rb +1 -1
  119. data/lib/view_model/sap_schema_ni_130/common_schema.rb +13 -61
  120. data/lib/view_model/sap_schema_ni_130/rdsap.rb +3 -19
  121. data/lib/view_model/sap_schema_ni_130/sap.rb +1 -1
  122. data/lib/view_model/sap_schema_ni_140/common_schema.rb +14 -58
  123. data/lib/view_model/sap_schema_ni_140/rdsap.rb +3 -19
  124. data/lib/view_model/sap_schema_ni_140/sap.rb +1 -1
  125. data/lib/view_model/sap_schema_ni_141/common_schema.rb +14 -58
  126. data/lib/view_model/sap_schema_ni_141/rdsap.rb +3 -19
  127. data/lib/view_model/sap_schema_ni_141/sap.rb +1 -1
  128. data/lib/view_model/sap_schema_ni_142/common_schema.rb +14 -58
  129. data/lib/view_model/sap_schema_ni_142/rdsap.rb +3 -19
  130. data/lib/view_model/sap_schema_ni_142/sap.rb +1 -1
  131. data/lib/view_model/sap_schema_ni_150/common_schema.rb +14 -58
  132. data/lib/view_model/sap_schema_ni_150/rdsap.rb +3 -19
  133. data/lib/view_model/sap_schema_ni_150/sap.rb +1 -1
  134. data/lib/view_model/sap_schema_ni_160/common_schema.rb +14 -54
  135. data/lib/view_model/sap_schema_ni_160/rdsap.rb +3 -19
  136. data/lib/view_model/sap_schema_ni_160/sap.rb +1 -1
  137. data/lib/view_model/sap_schema_ni_161/common_schema.rb +14 -50
  138. data/lib/view_model/sap_schema_ni_161/rdsap.rb +3 -19
  139. data/lib/view_model/sap_schema_ni_161/sap.rb +1 -1
  140. data/lib/view_model/sap_schema_ni_170/common_schema.rb +14 -54
  141. data/lib/view_model/sap_schema_ni_170/rdsap.rb +3 -19
  142. data/lib/view_model/sap_schema_ni_170/sap.rb +1 -1
  143. data/lib/view_model/sap_schema_ni_171/common_schema.rb +14 -54
  144. data/lib/view_model/sap_schema_ni_171/rdsap.rb +3 -19
  145. data/lib/view_model/sap_schema_ni_171/sap.rb +1 -1
  146. data/lib/view_model/sap_schema_ni_172/common_schema.rb +14 -54
  147. data/lib/view_model/sap_schema_ni_172/rdsap.rb +3 -23
  148. data/lib/view_model/sap_schema_ni_172/sap.rb +1 -1
  149. data/lib/view_model/sap_schema_ni_173/common_schema.rb +10 -78
  150. data/lib/view_model/sap_schema_ni_174/common_schema.rb +10 -78
  151. data/lib/view_model/sap_schema_ni_1800/common_schema.rb +10 -78
  152. metadata +4 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9cf62aa9cc6d0167f5031c287d6136225cd91cfad1368d8a53eae3e279ed5514
4
- data.tar.gz: 3fce86b973053073b1589a9decfe8cf47150bc2384dc7a9ad8ad5c814107bd02
3
+ metadata.gz: 20d71b9d902f9efa9baef3a61c5f20cfa119204d236b6d02d30c2c2d95fff346
4
+ data.tar.gz: 1c39408c6a468c2f0a8e0fa9ac76a8a00ab0e4d202c9ed72bc331daddbca3d6e
5
5
  SHA512:
6
- metadata.gz: c2f2c35cf36818142dc2eaef0eaf2aba70640b42534dbdfdd2141fe2e3b26a410075da07faab7d440c556a7836ed4fdfe027e0f3137e01a5636a867baf313d78
7
- data.tar.gz: 0be2e0ba78f2dd1e03181b2ac2fb5eecdae8b006c77f0b0a717b0b5101b919a6a9c524fe9ad31badcbdcb81322bae149d93b893f8c3fb2ab5361ada97f07adcd
6
+ metadata.gz: 7606269a9f16672a5bc0d4b298f55a475b3761ad95a931bfca640218694384782d12f4ab0baff29ef51126e725e7abefb1ad2666eef505ce4040b8ddae0c160e
7
+ data.tar.gz: 0d27fd125db4f768a4d20cc2658d8e6440be3e24e0551b71a2a9fc13729a6a592ae8005bbcc5bdeb1957f1ec7c75f903897fa603c8a799402b80eec39561f8a7
data/Gemfile CHANGED
@@ -10,6 +10,6 @@ group :test do
10
10
  gem "rubocop-govuk", "~> 4.7.0", require: false
11
11
  end
12
12
 
13
- gem "nokogiri", "~> 1.11"
13
+ gem "nokogiri", "~> 1.16"
14
14
  gem "rexml", "~> 3.2", ">= 3.2.5"
15
15
  gem "zeitwerk", "~> 2.6"
data/Gemfile.lock CHANGED
@@ -1,45 +1,55 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (7.0.6)
4
+ activesupport (7.1.3.2)
5
+ base64
6
+ bigdecimal
5
7
  concurrent-ruby (~> 1.0, >= 1.0.2)
8
+ connection_pool (>= 2.2.5)
9
+ drb
6
10
  i18n (>= 1.6, < 2)
7
11
  minitest (>= 5.1)
12
+ mutex_m
8
13
  tzinfo (~> 2.0)
9
14
  ast (2.4.2)
10
- concurrent-ruby (1.2.2)
11
- diff-lcs (1.5.0)
12
- i18n (1.14.1)
15
+ base64 (0.2.0)
16
+ bigdecimal (3.1.6)
17
+ concurrent-ruby (1.2.3)
18
+ connection_pool (2.4.1)
19
+ diff-lcs (1.5.1)
20
+ drb (2.2.1)
21
+ i18n (1.14.4)
13
22
  concurrent-ruby (~> 1.0)
14
- json (2.6.3)
15
- mini_portile2 (2.8.4)
16
- minitest (5.18.1)
17
- nokogiri (1.15.3)
23
+ json (2.7.1)
24
+ mini_portile2 (2.8.5)
25
+ minitest (5.22.2)
26
+ mutex_m (0.2.0)
27
+ nokogiri (1.16.2)
18
28
  mini_portile2 (~> 2.8.2)
19
29
  racc (~> 1.4)
20
- parallel (1.23.0)
21
- parser (3.2.2.3)
30
+ parallel (1.24.0)
31
+ parser (3.3.0.5)
22
32
  ast (~> 2.4.1)
23
33
  racc
24
- racc (1.7.1)
25
- rack (3.0.8)
34
+ racc (1.7.3)
35
+ rack (3.0.9.1)
26
36
  rainbow (3.1.1)
27
37
  rake (13.0.6)
28
- regexp_parser (2.8.1)
29
- rexml (3.2.5)
30
- rspec (3.12.0)
31
- rspec-core (~> 3.12.0)
32
- rspec-expectations (~> 3.12.0)
33
- rspec-mocks (~> 3.12.0)
34
- rspec-core (3.12.2)
35
- rspec-support (~> 3.12.0)
36
- rspec-expectations (3.12.3)
38
+ regexp_parser (2.9.0)
39
+ rexml (3.2.6)
40
+ rspec (3.13.0)
41
+ rspec-core (~> 3.13.0)
42
+ rspec-expectations (~> 3.13.0)
43
+ rspec-mocks (~> 3.13.0)
44
+ rspec-core (3.13.0)
45
+ rspec-support (~> 3.13.0)
46
+ rspec-expectations (3.13.0)
37
47
  diff-lcs (>= 1.2.0, < 2.0)
38
- rspec-support (~> 3.12.0)
39
- rspec-mocks (3.12.6)
48
+ rspec-support (~> 3.13.0)
49
+ rspec-mocks (3.13.0)
40
50
  diff-lcs (>= 1.2.0, < 2.0)
41
- rspec-support (~> 3.12.0)
42
- rspec-support (3.12.1)
51
+ rspec-support (~> 3.13.0)
52
+ rspec-support (3.13.1)
43
53
  rubocop (1.35.0)
44
54
  json (~> 2.3)
45
55
  parallel (~> 1.10)
@@ -69,14 +79,14 @@ GEM
69
79
  ruby-progressbar (1.13.0)
70
80
  tzinfo (2.0.6)
71
81
  concurrent-ruby (~> 1.0)
72
- unicode-display_width (2.4.2)
73
- zeitwerk (2.6.8)
82
+ unicode-display_width (2.5.0)
83
+ zeitwerk (2.6.13)
74
84
 
75
85
  PLATFORMS
76
86
  ruby
77
87
 
78
88
  DEPENDENCIES
79
- nokogiri (~> 1.11)
89
+ nokogiri (~> 1.16)
80
90
  rake (~> 13.0.6)
81
91
  rexml (~> 3.2, >= 3.2.5)
82
92
  rspec (~> 3.0)
@@ -21,6 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = %w[lib]
23
23
 
24
- spec.add_dependency "nokogiri", "~> 1.11"
24
+ spec.add_dependency "nokogiri", "~> 1.16"
25
25
  spec.add_dependency "zeitwerk", "~> 2.6"
26
26
  end
@@ -5,7 +5,7 @@ loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
5
5
  loader.setup
6
6
 
7
7
  module EpbViewModels
8
- VERSION = "1.2.3"
8
+ VERSION = "2.0.0"
9
9
  end
10
10
 
11
11
  # Monkey patching to avoid using ActiveRecord::Type::Boolean.new.cast
@@ -18,27 +18,23 @@ module Presenter
18
18
  def report_from_assessment_xml
19
19
  {
20
20
  assessment_id: Helper::RrnHelper.hash_rrn(@view_model.assessment_id),
21
- ac_inspection_commissioned: @view_model.ac_inspection_commissioned,
21
+ ac_inspection_commissioned: @view_model.respond_to?(:ac_inspection_commissioned) ? @view_model.ac_inspection_commissioned : nil,
22
22
  address1: @view_model.address_line1,
23
23
  address2: @view_model.address_line2,
24
24
  address3: @view_model.address_line3,
25
- aircon_kw_rating: @view_model.ac_kw_rating,
25
+ aircon_kw_rating: @view_model.respond_to?(:ac_kw_rating) ? @view_model.ac_kw_rating : nil,
26
26
  aircon_present:
27
- if !@view_model.ac_present.nil? &&
28
- @view_model.ac_present.upcase == "YES"
27
+ if @view_model.respond_to?(:ac_present) && @view_model.ac_present.upcase == "YES"
29
28
  "Y"
30
29
  else
31
30
  "N"
32
31
  end,
33
32
  asset_rating: @view_model.energy_efficiency_rating,
34
- asset_rating_band:
35
- Helper::EnergyBandCalculator.commercial(
36
- @view_model.energy_efficiency_rating.to_i,
37
- ),
38
- building_emissions: @view_model.building_emission_rate,
33
+ asset_rating_band: Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating),
34
+ building_emissions: @view_model.respond_to?(:building_emission_rate) ? @view_model.building_emission_rate : nil,
39
35
  building_environment: @view_model.building_environment,
40
36
  building_level: @view_model.building_level,
41
- estimated_aircon_kw_rating: @view_model.estimated_ac_kw_rating,
37
+ estimated_aircon_kw_rating: @view_model.respond_to?(:estimated_ac_kw_rating) ? @view_model.estimated_ac_kw_rating : nil,
42
38
  existing_stock_benchmark: @view_model.existing_build_rating,
43
39
  floor_area: @view_model.floor_area,
44
40
  inspection_date: @view_model.date_of_assessment,
@@ -48,18 +44,18 @@ module Presenter
48
44
  other_fuel_desc: @view_model.other_fuel_description,
49
45
  postcode: @view_model.postcode,
50
46
  posttown: @view_model.town,
51
- primary_energy_value: @view_model.primary_energy_use,
47
+ primary_energy_value: @view_model.respond_to?(:primary_energy_use) ? @view_model.primary_energy_use : nil,
52
48
  property_type: @view_model.property_type,
53
49
  report_type: @view_model.report_type,
54
50
  special_energy_uses: @view_model.special_energy_uses,
55
- standard_emissions: @view_model.standard_emissions,
56
- target_emissions: @view_model.target_emissions,
51
+ standard_emissions: @view_model.respond_to?(:standard_emissions) ? @view_model.standard_emissions : nil,
52
+ target_emissions: @view_model.respond_to?(:target_emissions) ? @view_model.target_emissions : nil,
57
53
  transaction_type:
58
54
  Helper::XmlEnumsToOutput.cepc_transaction_type(
59
- @view_model.transaction_type,
55
+ @view_model.respond_to?(:transaction_type) ? @view_model.transaction_type : nil,
60
56
  ),
61
57
  type_of_assessment: TYPE_OF_ASSESSMENT,
62
- typical_emissions: @view_model.typical_emissions,
58
+ typical_emissions: @view_model.respond_to?(:typical_emissions) ? @view_model.typical_emissions : nil,
63
59
  renewable_sources: @view_model.renewable_sources,
64
60
  }
65
61
  end
@@ -30,19 +30,13 @@ module Presenter
30
30
  floor_area: @view_model.floor_area,
31
31
  building_level: @view_model.building_level,
32
32
  },
33
- building_emission_rate: @view_model.building_emission_rate,
34
- primary_energy_use: @view_model.primary_energy_use,
33
+ building_emission_rate: @view_model.respond_to?(:building_emission_rate) ? @view_model.building_emission_rate : nil,
34
+ primary_energy_use: @view_model.respond_to?(:primary_energy_use) ? @view_model.primary_energy_use : nil,
35
35
  related_rrn: @view_model.related_rrn,
36
36
  new_build_rating: @view_model.new_build_rating,
37
- new_build_band:
38
- Helper::EnergyBandCalculator.commercial(
39
- @view_model.new_build_rating.to_i,
40
- ),
37
+ new_build_band: Helper::EnergyBandCalculator.commercial(@view_model.new_build_rating),
41
38
  existing_build_rating: @view_model.existing_build_rating,
42
- existing_build_band:
43
- Helper::EnergyBandCalculator.commercial(
44
- @view_model.existing_build_rating.to_i,
45
- ),
39
+ existing_build_band: Helper::EnergyBandCalculator.commercial(@view_model.existing_build_rating),
46
40
  current_energy_efficiency_rating: @view_model.energy_efficiency_rating,
47
41
  energy_efficiency_rating: @view_model.energy_efficiency_rating,
48
42
  assessor: {
@@ -58,10 +52,7 @@ module Presenter
58
52
  },
59
53
  },
60
54
  related_party_disclosure: @view_model.epc_related_party_disclosure,
61
- current_energy_efficiency_band:
62
- Helper::EnergyBandCalculator.commercial(
63
- @view_model.energy_efficiency_rating.to_i,
64
- ),
55
+ current_energy_efficiency_band: Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating),
65
56
  property_type: @view_model.property_type,
66
57
  building_complexity: @view_model.building_level,
67
58
  }
@@ -24,10 +24,7 @@ module Presenter
24
24
  current_operational_rating: @view_model.energy_efficiency_rating,
25
25
  yr1_operational_rating: @view_model.year1_energy_efficiency_rating,
26
26
  yr2_operational_rating: @view_model.year2_energy_efficiency_rating,
27
- operational_rating_band:
28
- Helper::EnergyBandCalculator.commercial(
29
- @view_model.energy_efficiency_rating.to_i,
30
- ).upcase,
27
+ operational_rating_band: Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating).upcase,
31
28
  electric_co2: @view_model.current_electricity_co2,
32
29
  heating_co2: @view_model.current_heating_co2,
33
30
  renewables_co2: @view_model.current_renewables_co2,
@@ -57,15 +54,14 @@ module Presenter
57
54
  yr2_renewables_co2: @view_model.year2_renewables_co2,
58
55
  # open data request for return value to be Y OR N
59
56
  aircon_present:
60
- if !@view_model.ac_present.nil? &&
61
- @view_model.ac_present.upcase == "YES"
57
+ if @view_model.respond_to?(:ac_present) && @view_model.ac_present.upcase == "YES"
62
58
  "Y"
63
59
  else
64
60
  "N"
65
61
  end,
66
- aircon_kw_rating: @view_model.ac_kw_rating,
67
- estimated_aircon_kw_rating: @view_model.estimated_ac_kw_rating,
68
- ac_inspection_commissioned: @view_model.ac_inspection_commissioned,
62
+ aircon_kw_rating: @view_model.respond_to?(:ac_kw_rating) ? @view_model.ac_kw_rating : nil,
63
+ estimated_aircon_kw_rating: @view_model.respond_to?(:estimated_ac_kw_rating) ? @view_model.estimated_ac_kw_rating : nil,
64
+ ac_inspection_commissioned: @view_model.respond_to?(:ac_inspection_commissioned) ? @view_model.ac_inspection_commissioned : nil,
69
65
  building_environment: @view_model.building_environment,
70
66
  building_category: @view_model.building_category,
71
67
  report_type: @view_model.report_type,
@@ -29,10 +29,7 @@ module Presenter
29
29
  current_assessment: {
30
30
  date: @view_model.current_assessment_date,
31
31
  energy_efficiency_rating: @view_model.energy_efficiency_rating,
32
- energy_efficiency_band:
33
- Helper::EnergyBandCalculator.commercial(
34
- @view_model.energy_efficiency_rating.to_i,
35
- ),
32
+ energy_efficiency_band: Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating),
36
33
  heating_co2: @view_model.current_heating_co2,
37
34
  electricity_co2: @view_model.current_electricity_co2,
38
35
  renewables_co2: @view_model.current_renewables_co2,
@@ -40,10 +37,7 @@ module Presenter
40
37
  year1_assessment: {
41
38
  date: @view_model.year1_assessment_date,
42
39
  energy_efficiency_rating: @view_model.year1_energy_efficiency_rating,
43
- energy_efficiency_band:
44
- Helper::EnergyBandCalculator.commercial(
45
- @view_model.year1_energy_efficiency_rating.to_i,
46
- ),
40
+ energy_efficiency_band: Helper::EnergyBandCalculator.commercial(@view_model.year1_energy_efficiency_rating),
47
41
  heating_co2: @view_model.year1_heating_co2,
48
42
  electricity_co2: @view_model.year1_electricity_co2,
49
43
  renewables_co2: @view_model.year1_renewables_co2,
@@ -52,9 +46,7 @@ module Presenter
52
46
  date: @view_model.year2_assessment_date,
53
47
  energy_efficiency_rating: @view_model.year2_energy_efficiency_rating,
54
48
  energy_efficiency_band:
55
- Helper::EnergyBandCalculator.commercial(
56
- @view_model.year2_energy_efficiency_rating.to_i,
57
- ),
49
+ Helper::EnergyBandCalculator.commercial(@view_model.year2_energy_efficiency_rating),
58
50
  heating_co2: @view_model.year2_heating_co2,
59
51
  electricity_co2: @view_model.year2_electricity_co2,
60
52
  renewables_co2: @view_model.year2_renewables_co2,
@@ -20,7 +20,7 @@ module Presenter
20
20
  benchmarks: @view_model.benchmarks,
21
21
  energy_consumption: @view_model.or_energy_consumption,
22
22
  annual_energy_summary: @view_model.annual_energy_summary,
23
- dec_status: @view_model.dec_status,
23
+ dec_status: @view_model.respond_to?(:dec_status) ? @view_model.dec_status : nil,
24
24
  current_assessment_date: @view_model.current_assessment_date,
25
25
  energy_efficiency_rating: @view_model.energy_efficiency_rating,
26
26
  current_electricity_co2: @view_model.current_electricity_co2,
@@ -31,7 +31,7 @@ module Presenter
31
31
 
32
32
  xml = ERB.new(get_template).result_with_hash dec_data
33
33
 
34
- if @view_model.dec_status.nil?
34
+ if !@view_model.respond_to?(:dec_status) || @view_model.dec_status.nil?
35
35
  doc = Nokogiri.XML(xml)
36
36
  doc.at("DEC-Status").remove
37
37
  xml = doc.to_xml
@@ -1,3 +1,4 @@
1
+ require "active_support"
1
2
  require "active_support/core_ext/time/conversions"
2
3
 
3
4
  module Presenter::Export
@@ -41,10 +42,9 @@ module Presenter::Export
41
42
  @view_model.current_space_heating_demand&.to_i,
42
43
  current_water_heating_demand:
43
44
  @view_model.current_water_heating_demand&.to_i,
44
- impact_of_cavity_insulation: @view_model.impact_of_cavity_insulation,
45
- impact_of_loft_insulation: @view_model.impact_of_loft_insulation,
46
- impact_of_solid_wall_insulation:
47
- @view_model.impact_of_solid_wall_insulation,
45
+ impact_of_cavity_insulation: @view_model.respond_to?(:impact_of_cavity_insulation) ? @view_model.impact_of_cavity_insulation : nil,
46
+ impact_of_loft_insulation: @view_model.respond_to?(:impact_of_loft_insulation) ? @view_model.impact_of_loft_insulation : nil,
47
+ impact_of_solid_wall_insulation: @view_model.respond_to?(:impact_of_solid_wall_insulation) ? @view_model.impact_of_solid_wall_insulation : nil,
48
48
  }
49
49
  end
50
50
 
@@ -6,7 +6,7 @@ module Presenter::Export
6
6
  view[:type_of_assessment] = @wrapper.type.to_s
7
7
  view[:address] = address
8
8
  view[:assessor] = assessor
9
- view[:building_emission_rate] = @view_model.building_emission_rate
9
+ view[:building_emission_rate] = @view_model.respond_to?(:building_emission_rate) ? @view_model.building_emission_rate : nil
10
10
  view[:date_of_expiry] = @view_model.date_of_expiry
11
11
  view[:report_type] = @view_model.report_type
12
12
  view[:date_of_assessment] = @view_model.date_of_assessment
@@ -17,7 +17,7 @@ module Presenter::Export
17
17
  floor_area: @view_model.floor_area,
18
18
  building_level: @view_model.building_level,
19
19
  }
20
- view[:primary_energy_use] = @view_model.primary_energy_use
20
+ view[:primary_energy_use] = @view_model.respond_to?(:primary_energy_use) ? @view_model.primary_energy_use : nil
21
21
  view[:related_rrn] = @view_model.related_rrn
22
22
  view[:new_build_rating] = @view_model.new_build_rating
23
23
  view[:related_party_disclosure] = @view_model.epc_related_party_disclosure
@@ -27,43 +27,32 @@ module Presenter::Export
27
27
  view[:current_energy_efficiency_rating] =
28
28
  @view_model.energy_efficiency_rating
29
29
  view[:current_energy_efficiency_band] =
30
- Helper::EnergyBandCalculator.commercial(
31
- @view_model.energy_efficiency_rating.to_i,
32
- )
30
+ Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating)
33
31
  view[:new_build_band] =
34
- Helper::EnergyBandCalculator.commercial(
35
- @view_model.new_build_rating.to_i,
36
- )
32
+ Helper::EnergyBandCalculator.commercial(@view_model.new_build_rating)
37
33
  view[:existing_build_rating] = @view_model.existing_build_rating
38
34
  view[:existing_build_band] =
39
- Helper::EnergyBandCalculator.commercial(
40
- @view_model.existing_build_rating.to_i,
41
- )
42
- view[:ac_inspection_commissioned] = @view_model.ac_inspection_commissioned
43
- view[:aircon_kw_rating] = @view_model.ac_kw_rating
44
- view[:aircon_present] = @view_model.ac_present unless @view_model
45
- .ac_present.nil?
35
+ Helper::EnergyBandCalculator.commercial(@view_model.existing_build_rating)
36
+ view[:ac_inspection_commissioned] = @view_model.respond_to?(:ac_inspection_commissioned) ? @view_model.ac_inspection_commissioned : nil
37
+ view[:aircon_kw_rating] = @view_model.respond_to?(:ac_kw_rating) ? @view_model.ac_kw_rating : nil
38
+ view[:aircon_present] = @view_model.ac_present if @view_model.respond_to?(:ac_present)
46
39
  view[:asset_rating] = @view_model.energy_efficiency_rating
47
40
  view[:asset_rating_band] =
48
- Helper::EnergyBandCalculator.commercial(
49
- @view_model.energy_efficiency_rating.to_i,
50
- )
41
+ Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating)
51
42
  view[:building_environment] = @view_model.building_environment
52
43
  view[:building_level] = @view_model.building_level
53
44
  view[:building_reference_number] = @view_model.address_id
54
- view[:estimated_aircon_kw_rating] = @view_model.estimated_ac_kw_rating
55
-
56
- view[:existing_stock_benchmark] =
57
- @view_model.existing_build_rating,
58
- view[:floor_area] = @view_model.floor_area
45
+ view[:estimated_aircon_kw_rating] = @view_model.respond_to?(:estimated_ac_kw_rating) ? @view_model.estimated_ac_kw_rating : nil
46
+ view[:existing_stock_benchmark] = @view_model.existing_build_rating
47
+ view[:floor_area] = @view_model.floor_area
59
48
  view[:main_heating_fuel] = @view_model.main_heating_fuel
60
49
  view[:other_fuel_description] = @view_model.other_fuel_description
61
50
  view[:special_energy_uses] = @view_model.special_energy_uses
62
- view[:standard_emissions] = @view_model.standard_emissions
63
- view[:target_emissions] = @view_model.target_emissions
51
+ view[:standard_emissions] = @view_model.respond_to?(:standard_emissions) ? @view_model.standard_emissions : nil
52
+ view[:target_emissions] = @view_model.respond_to?(:target_emissions) ? @view_model.target_emissions : nil
64
53
  view[:transaction_type] =
65
- enum_value(:transaction_type, @view_model.transaction_type)
66
- view[:typical_emissions] = @view_model.typical_emissions
54
+ enum_value(:transaction_type, @view_model.respond_to?(:transaction_type) ? @view_model.transaction_type : nil)
55
+ view[:typical_emissions] = @view_model.respond_to?(:typical_emissions) ? @view_model.typical_emissions : nil
67
56
  view[:renewable_sources] = @view_model.renewable_sources
68
57
  view[:metadata] = metadata
69
58
 
@@ -20,34 +20,31 @@ module Presenter::Export
20
20
  view[:current_carbon_emission] = @view_model.current_carbon_emission.to_f
21
21
  view[:current_energy_efficiency_band] =
22
22
  Helper::EnergyBandCalculator.domestic(@view_model.current_energy_rating)
23
- view[:current_energy_efficiency_rating] =
24
- @view_model.current_energy_rating
23
+ view[:current_energy_efficiency_rating] = @view_model.current_energy_rating
25
24
  view[:date_of_assessment] = @view_model.date_of_assessment
26
25
  view[:date_of_expiry] = @view_model.date_of_expiry
27
26
  view[:date_of_registration] = @view_model.date_of_registration
28
27
  view[:dwelling_type] = @view_model.dwelling_type
29
28
  view[:energy_consumption_potential] =
30
29
  @view_model.energy_consumption_potential.to_i
31
- view[:environmental_impact_current] =
32
- @view_model.environmental_impact_current.to_i
33
- view[:environmental_impact_potential] =
34
- @view_model.environmental_impact_potential.to_i
35
- unless @view_model.extensions_count.nil?
36
- view[:extensions_count] = @view_model.extensions_count.to_i
30
+ view[:environmental_impact_current] = @view_model.environmental_impact_current
31
+ view[:environmental_impact_potential] = @view_model.environmental_impact_potential
32
+ if @view_model.respond_to?(:extensions_count) && !@view_model.extensions_count.nil?
33
+ view[:extensions_count] = @view_model.extensions_count
37
34
  end
38
35
  view[:fixed_lighting_outlets_count] =
39
- @view_model.fixed_lighting_outlets_count.to_i
40
- view[:glazed_area] = @view_model.glazed_area.to_i unless @view_model
36
+ @view_model.respond_to?(:fixed_lighting_outlets_count) ? @view_model.fixed_lighting_outlets_count : nil
37
+ view[:glazed_area] = @view_model.glazed_area.to_i if @view_model.respond_to?(:glazed_area) && !@view_model
41
38
  .glazed_area.nil?
42
- unless @view_model.habitable_room_count.nil?
43
- view[:habitable_room_count] = @view_model.habitable_room_count.to_i
39
+ if @view_model.respond_to?(:habitable_room_count) && !@view_model.habitable_room_count.nil?
40
+ view[:habitable_room_count] = @view_model.habitable_room_count
44
41
  end
45
42
  view[:heat_demand] = heat_demand
46
- unless @view_model.heat_loss_corridor.nil?
43
+ if @view_model.respond_to?(:heat_loss_corridor) && !@view_model.heat_loss_corridor.nil?
47
44
  view[:heat_loss_corridor] = @view_model.heat_loss_corridor.to_i
48
45
  end
49
- unless @view_model.heated_room_count.nil?
50
- view[:heated_room_count] = @view_model.heated_room_count.to_i
46
+ if @view_model.respond_to?(:heated_room_count) && !@view_model.heated_room_count.nil?
47
+ view[:heated_room_count] = @view_model.heated_room_count
51
48
  end
52
49
  view[:heating_cost_current] = @view_model.heating_cost_current.to_f
53
50
  view[:heating_cost_potential] = @view_model.heating_cost_potential.to_f
@@ -68,43 +65,38 @@ module Presenter::Export
68
65
  view[:lighting_environmental_efficiency_rating] =
69
66
  @view_model.lighting_environmental_efficiency_rating.to_i
70
67
  view[:low_energy_fixed_lighting_outlets_count] =
71
- @view_model.low_energy_fixed_lighting_outlets_count.nil? ? nil : @view_model.low_energy_fixed_lighting_outlets_count.to_i
72
- view[:low_energy_lighting] = @view_model.low_energy_lighting.nil? ? nil : @view_model.low_energy_lighting.to_i
68
+ @view_model.respond_to?(:low_energy_fixed_lighting_outlets_count) ? @view_model.low_energy_fixed_lighting_outlets_count : nil
69
+ view[:low_energy_lighting] = @view_model.respond_to?(:low_energy_lighting) ? @view_model.low_energy_lighting&.to_i : nil
73
70
  view[:main_fuel_type] = @view_model.main_fuel_type
74
71
  view[:main_heating_controls_descriptions] =
75
72
  @view_model.all_main_heating_controls_descriptions
76
73
  view[:main_heating_descriptions] =
77
74
  @view_model.all_main_heating_descriptions
78
- view[:mains_gas] = @view_model.mains_gas unless @view_model.mains_gas.nil?
75
+ view[:mains_gas] = @view_model.mains_gas if @view_model.respond_to?(:mains_gas) && !@view_model.mains_gas.nil?
79
76
  view[:multiple_glazed_proportion] =
80
- @view_model.multiple_glazed_proportion.to_i
81
- view[:open_fireplaces_count] = @view_model.open_fireplaces_count.to_i
82
- unless @view_model.photovoltaic_roof_area_percent.nil?
77
+ @view_model.respond_to?(:multiple_glazed_proportion) ? @view_model.multiple_glazed_proportion.to_i : nil
78
+ view[:open_fireplaces_count] = @view_model.respond_to?(:open_fireplaces_count) ? @view_model.open_fireplaces_count : nil
79
+ if @view_model.respond_to?(:photovoltaic_roof_area_percent) && !@view_model.photovoltaic_roof_area_percent.nil?
83
80
  view[:photovoltaic_roof_area_percent] =
84
81
  @view_model.photovoltaic_roof_area_percent.to_i
85
82
  end
86
83
  view[:potential_carbon_emission] =
87
84
  @view_model.potential_carbon_emission.to_f
88
85
  view[:potential_energy_efficiency_band] =
89
- Helper::EnergyBandCalculator.domestic(
90
- @view_model.potential_energy_rating,
91
- )
92
- view[:potential_energy_efficiency_rating] =
93
- @view_model.potential_energy_rating
94
- view[:primary_energy_use] = @view_model.primary_energy_use.to_i
95
- view[:property_age_band] = @view_model.property_age_band
86
+ Helper::EnergyBandCalculator.domestic(@view_model.potential_energy_rating)
87
+ view[:potential_energy_efficiency_rating] = @view_model.potential_energy_rating
88
+ view[:primary_energy_use] = @view_model.respond_to?(:primary_energy_use) ? @view_model.primary_energy_use.to_i : nil
89
+ view[:property_age_band] = @view_model.respond_to?(:property_age_band) ? @view_model.property_age_band : nil
96
90
  view[:property_summary] = @view_model.property_summary
97
91
  view[:property_type] =
98
92
  enum_value(:property_type, @view_model.property_type)
99
93
  view[:recommended_improvements] =
100
94
  @view_model.improvements.map do |improvement|
101
95
  improvement[:energy_performance_band_improvement] =
102
- Helper::EnergyBandCalculator.domestic(
103
- improvement[:energy_performance_rating_improvement],
104
- )
96
+ Helper::EnergyBandCalculator.domestic(improvement[:energy_performance_rating_improvement])
105
97
  improvement
106
98
  end
107
- unless @view_model.related_party_disclosure_number.nil?
99
+ if @view_model.respond_to?(:related_party_disclosure_number) && !@view_model.related_party_disclosure_number.nil?
108
100
  view[:related_party_disclosure_number] =
109
101
  @view_model.related_party_disclosure_number
110
102
  end
@@ -119,19 +111,18 @@ module Presenter::Export
119
111
  view[:secondary_heating_environmental_efficiency_rating] =
120
112
  @view_model.secondary_heating_environmental_efficiency_rating.to_i
121
113
  view[:status] = @view_model.status
122
- view[:storey_count] = @view_model.storey_count.to_i unless @view_model
114
+ view[:storey_count] = @view_model.storey_count if @view_model.respond_to?(:storey_count) && !@view_model
123
115
  .storey_count.nil?
124
- view[:tenure] = enum_value(:tenure, @view_model.tenure)
116
+ view[:tenure] = enum_value(:tenure, @view_model.respond_to?(:tenure) ? @view_model.tenure : nil)
125
117
  view[:top_storey] = @view_model.top_storey
126
118
  view[:total_floor_area] = @view_model.total_floor_area.to_f
127
119
  view[:transaction_type] =
128
- enum_value(:transaction_type, @view_model.transaction_type)
120
+ enum_value(:transaction_type, @view_model.respond_to?(:transaction_type) ? @view_model.transaction_type : nil)
129
121
  view[:type_of_assessment] = @wrapper.type.to_s
130
- unless @view_model.unheated_corridor_length.nil?
131
- view[:unheated_corridor_length] =
132
- @view_model.unheated_corridor_length.to_i
122
+ if @view_model.respond_to?(:unheated_corridor_length) && !@view_model.unheated_corridor_length.nil?
123
+ view[:unheated_corridor_length] = @view_model.unheated_corridor_length.to_i
133
124
  end
134
- view[:wind_turbine_count] = @view_model.wind_turbine_count.to_i
125
+ view[:wind_turbine_count] = @view_model.wind_turbine_count
135
126
  view[:window_description] = @view_model.window_description
136
127
  view[:window_energy_efficiency_rating] =
137
128
  @view_model.window_energy_efficiency_rating.to_i
@@ -36,15 +36,13 @@ module Presenter
36
36
  @view_model.report_type),
37
37
  has_hot_water_cylinder: @view_model.has_hot_water_cylinder,
38
38
  total_floor_area: @view_model.total_floor_area.to_s,
39
- has_mains_gas: @view_model.mains_gas,
39
+ has_mains_gas: @view_model.respond_to?(:mains_gas) ? @view_model.mains_gas : nil,
40
40
  current_energy_efficiency_rating: @view_model.current_energy_rating,
41
41
  potential_energy_efficiency_rating: @view_model.potential_energy_rating,
42
42
  type_of_property: Helper::XmlEnumsToOutput.property_type(@view_model.property_type),
43
43
  recommended_improvements: @view_model.improvements.map do |improvement|
44
44
  improvement[:energy_performance_band_improvement] =
45
- Helper::EnergyBandCalculator.domestic(
46
- improvement[:energy_performance_rating_improvement],
47
- )
45
+ Helper::EnergyBandCalculator.domestic(improvement[:energy_performance_rating_improvement])
48
46
  improvement
49
47
  end,
50
48
  }