epb_view_models 2.2.0 → 2.2.1
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.
- checksums.yaml +4 -4
- data/api/schemas/xml/CEPC-S-7.1/Reports/BaseDataTypes.xsd +300 -300
- data/api/schemas/xml/CEPC-S-7.1/Reports/CEPC-Reports.xsd +66 -66
- data/api/schemas/xml/CEPC-S-7.1/Reports/Input-Data.xsd +34 -34
- data/api/schemas/xml/CEPC-S-7.1/Reports/Performance-Summary.xsd +125 -125
- data/api/schemas/xml/CEPC-S-7.1/Reports/Performance-Summary.xsd.bak +123 -123
- data/api/schemas/xml/CEPC-S-7.1/Reports/Property.xsd +67 -67
- data/api/schemas/xml/CEPC-S-7.1/Reports/Report-Header.xsd +178 -178
- data/api/schemas/xml/CEPC-S-7.1/Reports/Reported-Data.xsd +406 -406
- data/api/schemas/xml/CEPC-S-7.1/Reports/UserManagement.xsd +174 -174
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/ExternalDefinitions.xsd +261 -261
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/AssessorManagement.xsd +213 -213
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/EPC-Certificate.xsd +400 -400
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/EPC-CollectedData.xsd +1051 -1051
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/Property.xsd +66 -66
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/RdSAP-Report.xsd +176 -176
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/Templates/ReportList.xsd +26 -26
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/UDT/EPC-Domains.xsd +858 -858
- data/api/schemas/xml/RdSAP-Schema-S-19.0/RdSAP/UDT/SAP-Domains.xsd +2684 -2684
- data/lib/epb_view_models.rb +1 -1
- data/lib/presenter/cepc/certificate_summary.rb +148 -0
- data/lib/view_model/base_view_model.rb +2 -0
- data/lib/view_model/cepc_s_71/cepc.rb +115 -42
- data/lib/view_model/cepc_wrapper.rb +9 -0
- metadata +4 -7
data/lib/epb_view_models.rb
CHANGED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
module Presenter
|
|
2
|
+
module Cepc
|
|
3
|
+
class CertificateSummary
|
|
4
|
+
TYPE_OF_ASSESSMENT = "CEPC".freeze
|
|
5
|
+
|
|
6
|
+
def initialize(view_model)
|
|
7
|
+
@view_model = view_model
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def to_certificate_summary
|
|
11
|
+
{
|
|
12
|
+
type_of_assessment: TYPE_OF_ASSESSMENT,
|
|
13
|
+
assessment_id: @view_model.assessment_id,
|
|
14
|
+
date_of_expiry: @view_model.date_of_expiry,
|
|
15
|
+
report_type: @view_model.report_type,
|
|
16
|
+
date_of_assessment: @view_model.date_of_assessment,
|
|
17
|
+
date_of_registration: @view_model.date_of_registration,
|
|
18
|
+
address: {
|
|
19
|
+
address_line1: @view_model.address_line1,
|
|
20
|
+
address_line2: @view_model.address_line2,
|
|
21
|
+
address_line3: @view_model.address_line3,
|
|
22
|
+
address_line4: @view_model.address_line4,
|
|
23
|
+
town: @view_model.town,
|
|
24
|
+
postcode: @view_model.postcode,
|
|
25
|
+
},
|
|
26
|
+
assessor: {
|
|
27
|
+
scheme_assessor_id: @view_model.scheme_assessor_id,
|
|
28
|
+
name: @view_model.assessor_name,
|
|
29
|
+
contact_details: {
|
|
30
|
+
email: @view_model.assessor_email,
|
|
31
|
+
telephone: @view_model.assessor_telephone,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
technical_information: {
|
|
35
|
+
main_heating_fuel: @view_model.main_heating_fuel,
|
|
36
|
+
building_environment: @view_model.building_environment,
|
|
37
|
+
floor_area: @view_model.floor_area,
|
|
38
|
+
building_level: @view_model.building_level,
|
|
39
|
+
},
|
|
40
|
+
building_emission_rate: @view_model.respond_to?(:building_emission_rate) ? @view_model.building_emission_rate : nil,
|
|
41
|
+
primary_energy_use: @view_model.respond_to?(:primary_energy_use) ? @view_model.primary_energy_use : nil,
|
|
42
|
+
related_rrn: @view_model.related_rrn,
|
|
43
|
+
new_build_rating: @view_model.new_build_rating,
|
|
44
|
+
new_build_band: Helper::EnergyBandCalculator.commercial(@view_model.new_build_rating),
|
|
45
|
+
existing_build_rating: @view_model.existing_build_rating,
|
|
46
|
+
existing_build_band: Helper::EnergyBandCalculator.commercial(@view_model.existing_build_rating),
|
|
47
|
+
current_energy_efficiency_rating: @view_model.energy_efficiency_rating,
|
|
48
|
+
energy_efficiency_rating: @view_model.energy_efficiency_rating,
|
|
49
|
+
related_party_disclosure: @view_model.epc_related_party_disclosure,
|
|
50
|
+
current_energy_efficiency_band: Helper::EnergyBandCalculator.commercial(@view_model.energy_efficiency_rating),
|
|
51
|
+
property_type: @view_model.property_type,
|
|
52
|
+
building_complexity: @view_model.building_level,
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def to_certificate_summary_scotland
|
|
57
|
+
{
|
|
58
|
+
type_of_assessment: TYPE_OF_ASSESSMENT,
|
|
59
|
+
assessment_id: @view_model.assessment_id,
|
|
60
|
+
date_of_expiry: @view_model.date_of_expiry,
|
|
61
|
+
report_type: @view_model.report_type,
|
|
62
|
+
date_of_assessment: @view_model.date_of_assessment,
|
|
63
|
+
date_of_registration: @view_model.date_of_registration,
|
|
64
|
+
address: {
|
|
65
|
+
address_line1: @view_model.address_line1,
|
|
66
|
+
address_line2: @view_model.address_line2,
|
|
67
|
+
address_line3: @view_model.address_line3,
|
|
68
|
+
address_line4: @view_model.address_line4,
|
|
69
|
+
town: @view_model.town,
|
|
70
|
+
postcode: @view_model.postcode,
|
|
71
|
+
},
|
|
72
|
+
assessor: {
|
|
73
|
+
scheme_assessor_id: @view_model.scheme_assessor_id,
|
|
74
|
+
name: @view_model.assessor_name,
|
|
75
|
+
contact_details: {
|
|
76
|
+
email: @view_model.assessor_email,
|
|
77
|
+
telephone: @view_model.assessor_telephone,
|
|
78
|
+
trading_address: @view_model.trading_address,
|
|
79
|
+
},
|
|
80
|
+
company_name: @view_model.company_name,
|
|
81
|
+
insurer: @view_model.insurer,
|
|
82
|
+
policy_no: @view_model.policy_no,
|
|
83
|
+
insurer_effective_date: @view_model.insurer_effective_date,
|
|
84
|
+
insurer_expiry_date: @view_model.insurer_expiry_date,
|
|
85
|
+
insurer_pi_limit: @view_model.insurer_pi_limit,
|
|
86
|
+
},
|
|
87
|
+
technical_information: {
|
|
88
|
+
main_heating_fuel: @view_model.main_heating_fuel,
|
|
89
|
+
building_environment: @view_model.building_environment,
|
|
90
|
+
floor_area: @view_model.floor_area,
|
|
91
|
+
},
|
|
92
|
+
current_energy_efficiency_rating: @view_model.energy_efficiency_rating,
|
|
93
|
+
potential_energy_rating: @view_model.potential_energy_rating,
|
|
94
|
+
current_energy_efficiency_band: @view_model.current_energy_efficiency_band,
|
|
95
|
+
potential_energy_band: @view_model.potential_energy_band,
|
|
96
|
+
new_build_benchmark_rating: @view_model.new_build_benchmark_rating,
|
|
97
|
+
new_build_benchmark_band: @view_model.new_build_benchmark_band,
|
|
98
|
+
comparative_asset_rating: @view_model.comparative_asset_rating,
|
|
99
|
+
epc_rating_ber: @view_model.epc_rating_ber,
|
|
100
|
+
approximate_energy_use: @view_model.approximate_energy_use,
|
|
101
|
+
property_type: @view_model.property_type,
|
|
102
|
+
property_short_description: @view_model.property_short_description,
|
|
103
|
+
compliant_2002: @view_model.compliant_2002,
|
|
104
|
+
renewable_energy_sources: @view_model.renewable_energy_sources,
|
|
105
|
+
electricity_sources: @view_model.electricity_sources,
|
|
106
|
+
primary_energy_indicator: @view_model.primary_energy_indicator,
|
|
107
|
+
calculation_tool: @view_model.calculation_tool,
|
|
108
|
+
ter_2002: @view_model.ter_2002,
|
|
109
|
+
ter: @view_model.ter,
|
|
110
|
+
recommendations: [
|
|
111
|
+
@view_model.short_payback_recommendations.map do |recommendation|
|
|
112
|
+
{
|
|
113
|
+
payback_type: "short",
|
|
114
|
+
recommendation_code: recommendation[:code],
|
|
115
|
+
recommendation: recommendation[:text],
|
|
116
|
+
cO2_Impact: recommendation[:cO2Impact],
|
|
117
|
+
}
|
|
118
|
+
end,
|
|
119
|
+
@view_model.medium_payback_recommendations.map do |recommendation|
|
|
120
|
+
{
|
|
121
|
+
payback_type: "medium",
|
|
122
|
+
recommendation_code: recommendation[:code],
|
|
123
|
+
recommendation: recommendation[:text],
|
|
124
|
+
cO2_Impact: recommendation[:cO2Impact],
|
|
125
|
+
}
|
|
126
|
+
end,
|
|
127
|
+
@view_model.long_payback_recommendations.map do |recommendation|
|
|
128
|
+
{
|
|
129
|
+
payback_type: "long",
|
|
130
|
+
recommendation_code: recommendation[:code],
|
|
131
|
+
recommendation: recommendation[:text],
|
|
132
|
+
cO2_Impact: recommendation[:cO2Impact],
|
|
133
|
+
}
|
|
134
|
+
end,
|
|
135
|
+
@view_model.other_recommendations.map do |recommendation|
|
|
136
|
+
{
|
|
137
|
+
payback_type: "other",
|
|
138
|
+
recommendation_code: recommendation[:code],
|
|
139
|
+
recommendation: recommendation[:text],
|
|
140
|
+
cO2_Impact: recommendation[:cO2Impact],
|
|
141
|
+
}
|
|
142
|
+
end,
|
|
143
|
+
].flatten,
|
|
144
|
+
}
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -7,48 +7,48 @@ module ViewModel
|
|
|
7
7
|
expires_at.to_s
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def
|
|
11
|
-
xpath(%w[
|
|
10
|
+
def building_environment
|
|
11
|
+
xpath(%w[Building-Environment])
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def
|
|
15
|
-
xpath(%w[
|
|
14
|
+
def energy_efficiency_rating
|
|
15
|
+
xpath(%w[Asset-Rating])&.to_i
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def
|
|
19
|
-
xpath(%w[
|
|
18
|
+
def current_energy_efficiency_band
|
|
19
|
+
xpath(%w[Energy-Band])
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def
|
|
23
|
-
xpath(%w[
|
|
22
|
+
def potential_energy_rating
|
|
23
|
+
xpath(%w[Potential-Rating])
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
xpath(%w[
|
|
26
|
+
def potential_energy_band
|
|
27
|
+
xpath(%w[Potential-Band])
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def
|
|
31
|
-
xpath(%w[
|
|
30
|
+
def new_build_benchmark_rating
|
|
31
|
+
xpath(%w[New-Build-Benchmark])
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
def
|
|
35
|
-
xpath(%w[
|
|
34
|
+
def new_build_benchmark_band
|
|
35
|
+
xpath(%w[New-Build-Benchmark-Band])
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
def
|
|
39
|
-
xpath(%w[Asset-Rating])
|
|
38
|
+
def comparative_asset_rating
|
|
39
|
+
xpath(%w[Comparative-Asset-Rating])
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def
|
|
43
|
-
xpath(%w[
|
|
42
|
+
def comparative_asset_band
|
|
43
|
+
xpath(%w[Comparative-Energy-Band])
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
def
|
|
47
|
-
xpath(%w[
|
|
46
|
+
def epc_rating_ber
|
|
47
|
+
xpath(%w[BER])
|
|
48
48
|
end
|
|
49
49
|
|
|
50
|
-
def
|
|
51
|
-
xpath(%w[
|
|
50
|
+
def approximate_energy_use
|
|
51
|
+
xpath(%w[Approximate-Energy-Use])
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def floor_area
|
|
@@ -59,48 +59,121 @@ module ViewModel
|
|
|
59
59
|
xpath(%w[Main-Heating-Fuel])
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
-
def
|
|
63
|
-
xpath(%w[
|
|
62
|
+
def property_type
|
|
63
|
+
xpath(%w[Property-Type])
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
-
def
|
|
67
|
-
xpath(%w[
|
|
66
|
+
def property_short_description
|
|
67
|
+
xpath(%w[Property-Type Short-Description])
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
def
|
|
71
|
-
xpath(%w[
|
|
70
|
+
def compliant_2002
|
|
71
|
+
xpath(%w[Compliant-2002])
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
def
|
|
75
|
-
|
|
74
|
+
def renewable_energy_sources
|
|
75
|
+
@xml_doc.search("Renewable-Energy-Sources").map(&:content)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def electricity_sources
|
|
79
|
+
@xml_doc.search("Electricity-Sources").map(&:content)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def primary_energy_indicator
|
|
83
|
+
xpath(%w[Primary-Energy-Indicator])
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def calculation_tool
|
|
87
|
+
xpath(%w[Calculation-Tool])
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def ter_2002
|
|
91
|
+
xpath(%w[TER-2002])
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def ter
|
|
95
|
+
xpath(%w[TER])
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def renewable_sources
|
|
99
|
+
xpath(%w[Renewable-Sources])
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def recommendations(payback = "")
|
|
103
|
+
if payback.empty?
|
|
104
|
+
# return an enumerable of all nodes
|
|
105
|
+
@xml_doc.xpath "Recommendations-Report RR-Recommendations"
|
|
106
|
+
else
|
|
107
|
+
@xml_doc
|
|
108
|
+
.search("Recommendations-Report RR-Recommendations/#{payback}")
|
|
109
|
+
.map do |node|
|
|
110
|
+
{
|
|
111
|
+
code: node.at("Recommendation-Code").content,
|
|
112
|
+
text: node.at("Recommendation").content,
|
|
113
|
+
cO2Impact: node.at("CO2-Impact").content,
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def short_payback_recommendations
|
|
120
|
+
recommendations("Short-Payback")
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def medium_payback_recommendations
|
|
124
|
+
recommendations("Medium-Payback")
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def long_payback_recommendations
|
|
128
|
+
recommendations("Long-Payback")
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def other_recommendations
|
|
132
|
+
recommendations("Other-Payback")
|
|
76
133
|
end
|
|
77
134
|
|
|
78
135
|
def related_rrn
|
|
79
136
|
xpath(%w[Related-RRN])
|
|
80
137
|
end
|
|
81
138
|
|
|
82
|
-
def
|
|
83
|
-
xpath(%w[
|
|
139
|
+
def new_build_rating
|
|
140
|
+
xpath(%w[New-Build-Benchmark])&.to_i
|
|
84
141
|
end
|
|
85
142
|
|
|
86
|
-
def
|
|
87
|
-
xpath(%w[
|
|
143
|
+
def existing_build_rating
|
|
144
|
+
xpath(%w[Existing-Stock-Benchmark])&.to_i
|
|
88
145
|
end
|
|
89
146
|
|
|
90
|
-
def
|
|
91
|
-
xpath(%w[
|
|
147
|
+
def epc_related_party_disclosure
|
|
148
|
+
xpath(%w[EPC-Related-Party-Disclosure])
|
|
92
149
|
end
|
|
93
150
|
|
|
94
|
-
def
|
|
95
|
-
xpath(%w[
|
|
151
|
+
def trading_address
|
|
152
|
+
xpath(%w[Trading-Address])
|
|
96
153
|
end
|
|
97
154
|
|
|
98
|
-
def
|
|
99
|
-
xpath(%w[
|
|
155
|
+
def company_name
|
|
156
|
+
xpath(%w[Company-Name])
|
|
100
157
|
end
|
|
101
158
|
|
|
102
|
-
def
|
|
103
|
-
xpath(%w[
|
|
159
|
+
def insurer
|
|
160
|
+
xpath(%w[Insurer])
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def policy_no
|
|
164
|
+
xpath(%w[Policy-No])
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def insurer_effective_date
|
|
168
|
+
xpath(%w[Effective-Date])
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def insurer_expiry_date
|
|
172
|
+
xpath(%w[Expiry-Date])
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def insurer_pi_limit
|
|
176
|
+
xpath(%w[PI-Limit])
|
|
104
177
|
end
|
|
105
178
|
end
|
|
106
179
|
end
|
|
@@ -6,6 +6,7 @@ module ViewModel
|
|
|
6
6
|
@view_model = build_view_model(xml_doc, schema_type)
|
|
7
7
|
@summary = Presenter::Cepc::Summary.new(view_model)
|
|
8
8
|
@report = Presenter::Cepc::Report.new(view_model, additional_data)
|
|
9
|
+
@certificate_summary = Presenter::Cepc::CertificateSummary.new(view_model)
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def type
|
|
@@ -22,6 +23,14 @@ module ViewModel
|
|
|
22
23
|
@report.to_hash
|
|
23
24
|
end
|
|
24
25
|
|
|
26
|
+
def to_certificate_summary
|
|
27
|
+
@certificate_summary.to_certificate_summary
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_certificate_summary_scotland
|
|
31
|
+
@certificate_summary.to_certificate_summary_scotland
|
|
32
|
+
end
|
|
33
|
+
|
|
25
34
|
def get_report_type
|
|
26
35
|
view_model.report_type
|
|
27
36
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: epb_view_models
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.2.
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- MHCLG Energy Performance of Buildings
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: nokogiri
|
|
@@ -38,7 +37,6 @@ dependencies:
|
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
39
|
version: '2.6'
|
|
41
|
-
description:
|
|
42
40
|
email:
|
|
43
41
|
- mhclg.digital-services@levellingup.gov.uk
|
|
44
42
|
executables: []
|
|
@@ -1572,6 +1570,7 @@ files:
|
|
|
1572
1570
|
- lib/presenter/ac_cert/summary.rb
|
|
1573
1571
|
- lib/presenter/ac_report/export_configuration.rb
|
|
1574
1572
|
- lib/presenter/ac_report/summary.rb
|
|
1573
|
+
- lib/presenter/cepc/certificate_summary.rb
|
|
1575
1574
|
- lib/presenter/cepc/export_configuration.rb
|
|
1576
1575
|
- lib/presenter/cepc/report.rb
|
|
1577
1576
|
- lib/presenter/cepc/summary.rb
|
|
@@ -1782,7 +1781,6 @@ homepage: https://github.com/communitiesuk/epb-view-models
|
|
|
1782
1781
|
licenses:
|
|
1783
1782
|
- MIT
|
|
1784
1783
|
metadata: {}
|
|
1785
|
-
post_install_message:
|
|
1786
1784
|
rdoc_options: []
|
|
1787
1785
|
require_paths:
|
|
1788
1786
|
- lib
|
|
@@ -1797,8 +1795,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1797
1795
|
- !ruby/object:Gem::Version
|
|
1798
1796
|
version: '0'
|
|
1799
1797
|
requirements: []
|
|
1800
|
-
rubygems_version: 3.
|
|
1801
|
-
signing_key:
|
|
1798
|
+
rubygems_version: 3.6.9
|
|
1802
1799
|
specification_version: 4
|
|
1803
1800
|
summary: Library used to parse Energy Performance Certificates (EPC)
|
|
1804
1801
|
test_files: []
|