epb_view_models 1.2.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
  }