@carbonbox/domain 0.45.0 → 0.47.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 (57) hide show
  1. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.js +24 -2
  2. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionFacilityError.js +31 -0
  3. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionFacility.js +25 -0
  4. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.js +10 -10
  5. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacilities.js +24 -0
  6. package/build/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.js +5 -1
  7. package/build/carbonbox/reporting/shared/domain/enums/DataBindingSource.js +4 -0
  8. package/build/carbonbox/shared/domain/enums/ErrorCode.js +3 -1
  9. package/build/carbonbox/shared/domain/types/FacilityReferencesOptions.js +2 -0
  10. package/build/carbonbox/shared/domain/value-objects/FacilityReferences.js +224 -0
  11. package/build/carbonbox/shared/domain/value-objects/NullableFacilityReference.js +139 -0
  12. package/build/main/index.js +30 -22
  13. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts +10 -0
  14. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts.map +1 -1
  15. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts +2 -0
  16. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts.map +1 -1
  17. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionFacilityError.d.ts +7 -0
  18. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/InvalidActivityDataSubmissionFacilityError.d.ts.map +1 -0
  19. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts +2 -0
  20. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts.map +1 -1
  21. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts +2 -0
  22. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts.map +1 -1
  23. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionFacility.d.ts +15 -0
  24. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionFacility.d.ts.map +1 -0
  25. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.d.ts +2 -2
  26. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/CorporateCarbonFootprintConfiguration.d.ts.map +1 -1
  27. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/ICorporateCarbonFootprintConfiguration.d.ts +2 -2
  28. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/entity/ICorporateCarbonFootprintConfiguration.d.ts.map +1 -1
  29. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/repository/ICorporateCarbonFootprintConfigurationRepository.d.ts +2 -2
  30. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/repository/ICorporateCarbonFootprintConfigurationRepository.d.ts.map +1 -1
  31. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationPrimitives.d.ts +1 -1
  32. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationPrimitives.d.ts.map +1 -1
  33. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationProps.d.ts +1 -1
  34. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/types/CorporateCarbonFootprintConfigurationProps.d.ts.map +1 -1
  35. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/{CorporateCarbonFootprintConfigurationFacility.d.ts → CorporateCarbonFootprintConfigurationFacilities.d.ts} +6 -6
  36. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacilities.d.ts.map +1 -0
  37. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensions.d.ts +1 -0
  38. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensions.d.ts.map +1 -1
  39. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensionsPrimitives.d.ts +1 -0
  40. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationDimensionsPrimitives.d.ts.map +1 -1
  41. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.d.ts +1 -1
  42. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationDimensions.d.ts.map +1 -1
  43. package/build/types/carbonbox/reporting/shared/domain/enums/DataBindingSource.d.ts +2 -0
  44. package/build/types/carbonbox/reporting/shared/domain/enums/DataBindingSource.d.ts.map +1 -1
  45. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts +2 -1
  46. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts.map +1 -1
  47. package/build/types/carbonbox/shared/domain/types/FacilityReferencesOptions.d.ts +4 -0
  48. package/build/types/carbonbox/shared/domain/types/FacilityReferencesOptions.d.ts.map +1 -0
  49. package/build/types/carbonbox/shared/domain/value-objects/FacilityReferences.d.ts +104 -0
  50. package/build/types/carbonbox/shared/domain/value-objects/FacilityReferences.d.ts.map +1 -0
  51. package/build/types/carbonbox/shared/domain/value-objects/NullableFacilityReference.d.ts +28 -0
  52. package/build/types/carbonbox/shared/domain/value-objects/NullableFacilityReference.d.ts.map +1 -0
  53. package/build/types/main/index.d.ts +6 -1
  54. package/build/types/main/index.d.ts.map +1 -1
  55. package/package.json +54 -54
  56. package/build/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacility.js +0 -24
  57. package/build/types/carbonbox/carbon-footprint-configurations/corporate-configurations/domain/value-objects/CorporateCarbonFootprintConfigurationFacility.d.ts.map +0 -1
@@ -10,16 +10,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _ActivityDataSubmission_dynamicFormCode, _ActivityDataSubmission_carbonClient, _ActivityDataSubmission_footprintType, _ActivityDataSubmission_country, _ActivityDataSubmission_footprintConfiguration, _ActivityDataSubmission_segmentConfiguration, _ActivityDataSubmission_filledByStakeholder, _ActivityDataSubmission_fieldResponses, _ActivityDataSubmission_periodStart, _ActivityDataSubmission_periodEnd, _ActivityDataSubmission_overallUncertaintyPercentage, _ActivityDataSubmission_uncertaintySource, _ActivityDataSubmission_dataQualityNotes, _ActivityDataSubmission_reportingStandard, _ActivityDataSubmission_emissionScope, _ActivityDataSubmission_subScope, _ActivityDataSubmission_status, _ActivityDataSubmission_submittedAt, _ActivityDataSubmission_approvedAt, _ActivityDataSubmission_rejectedAt, _ActivityDataSubmission_rejectionReason;
13
+ var _ActivityDataSubmission_dynamicFormCode, _ActivityDataSubmission_carbonClient, _ActivityDataSubmission_footprintType, _ActivityDataSubmission_country, _ActivityDataSubmission_footprintConfiguration, _ActivityDataSubmission_segmentConfiguration, _ActivityDataSubmission_facility, _ActivityDataSubmission_filledByStakeholder, _ActivityDataSubmission_fieldResponses, _ActivityDataSubmission_periodStart, _ActivityDataSubmission_periodEnd, _ActivityDataSubmission_overallUncertaintyPercentage, _ActivityDataSubmission_uncertaintySource, _ActivityDataSubmission_dataQualityNotes, _ActivityDataSubmission_reportingStandard, _ActivityDataSubmission_emissionScope, _ActivityDataSubmission_subScope, _ActivityDataSubmission_status, _ActivityDataSubmission_submittedAt, _ActivityDataSubmission_approvedAt, _ActivityDataSubmission_rejectedAt, _ActivityDataSubmission_rejectionReason;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ActivityDataSubmission = void 0;
16
16
  const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
17
17
  const InvalidPropertyValueError_1 = require("../../../../shared/domain/exceptions/InvalidPropertyValueError");
18
+ const CarbonFootprint_1 = require("../../../../carbon-footprint-configurations/shared/domain/enums/CarbonFootprint");
19
+ const InvalidActivityDataSubmissionFacilityError_1 = require("../exceptions/InvalidActivityDataSubmissionFacilityError");
18
20
  const ActivityDataSubmissionApprovedAt_1 = require("../value-objects/ActivityDataSubmissionApprovedAt");
19
21
  const ActivityDataSubmissionCarbonClient_1 = require("../value-objects/ActivityDataSubmissionCarbonClient");
20
22
  const ActivityDataSubmissionDataQualityNotes_1 = require("../value-objects/ActivityDataSubmissionDataQualityNotes");
21
23
  const ActivityDataSubmissionDynamicFormCode_1 = require("../value-objects/ActivityDataSubmissionDynamicFormCode");
22
24
  const ActivityDataSubmissionEmissionScope_1 = require("../value-objects/ActivityDataSubmissionEmissionScope");
25
+ const ActivityDataSubmissionFacility_1 = require("../value-objects/ActivityDataSubmissionFacility");
23
26
  const ActivityDataSubmissionFieldResponses_1 = require("../value-objects/ActivityDataSubmissionFieldResponses");
24
27
  const ActivityDataSubmissionFilledByStakeholder_1 = require("../value-objects/ActivityDataSubmissionFilledByStakeholder");
25
28
  const ActivityDataSubmissionFootprintType_1 = require("../value-objects/ActivityDataSubmissionFootprintType");
@@ -49,6 +52,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
49
52
  _ActivityDataSubmission_country.set(this, void 0);
50
53
  _ActivityDataSubmission_footprintConfiguration.set(this, void 0);
51
54
  _ActivityDataSubmission_segmentConfiguration.set(this, void 0);
55
+ _ActivityDataSubmission_facility.set(this, void 0);
52
56
  _ActivityDataSubmission_filledByStakeholder.set(this, void 0);
53
57
  _ActivityDataSubmission_fieldResponses.set(this, void 0);
54
58
  _ActivityDataSubmission_periodStart.set(this, void 0);
@@ -71,6 +75,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
71
75
  __classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.create(props.country), "f");
72
76
  __classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.create(props.footprintConfiguration), "f");
73
77
  __classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.create(props.segmentConfiguration), "f");
78
+ __classPrivateFieldSet(this, _ActivityDataSubmission_facility, ActivityDataSubmissionFacility_1.ActivityDataSubmissionFacility.create(props.facility), "f");
74
79
  __classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.create(props.filledByStakeholder), "f");
75
80
  __classPrivateFieldSet(this, _ActivityDataSubmission_fieldResponses, ActivityDataSubmissionFieldResponses_1.ActivityDataSubmissionFieldResponses.create(props.fieldResponses), "f");
76
81
  __classPrivateFieldSet(this, _ActivityDataSubmission_periodStart, ActivityDataSubmissionPeriodStart_1.ActivityDataSubmissionPeriodStart.create(props.periodStart), "f");
@@ -87,6 +92,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
87
92
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectedAt, ActivityDataSubmissionRejectedAt_1.ActivityDataSubmissionRejectedAt.create(props.rejectedAt), "f");
88
93
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.create(props.rejectionReason), "f");
89
94
  ActivityDataSubmission.guardAgainstInvalidPeriodRange(props.periodStart, props.periodEnd);
95
+ ActivityDataSubmission.guardAgainstFacilityOnNonCorporateFootprint(props.facility, props.footprintType);
90
96
  }
91
97
  else {
92
98
  __classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.fromPrimitives(props.dynamicFormCode), "f");
@@ -95,6 +101,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
95
101
  __classPrivateFieldSet(this, _ActivityDataSubmission_country, ActivityDataSubmissionCountry_1.ActivityDataSubmissionCountry.fromPrimitives(props.country), "f");
96
102
  __classPrivateFieldSet(this, _ActivityDataSubmission_footprintConfiguration, ActivityDataSubmissionFootprintConfiguration_1.ActivityDataSubmissionFootprintConfiguration.fromPrimitives(props.footprintConfiguration), "f");
97
103
  __classPrivateFieldSet(this, _ActivityDataSubmission_segmentConfiguration, ActivityDataSubmissionSegmentConfiguration_1.ActivityDataSubmissionSegmentConfiguration.fromPrimitives(props.segmentConfiguration), "f");
104
+ __classPrivateFieldSet(this, _ActivityDataSubmission_facility, ActivityDataSubmissionFacility_1.ActivityDataSubmissionFacility.fromPrimitives(props.facility), "f");
98
105
  __classPrivateFieldSet(this, _ActivityDataSubmission_filledByStakeholder, ActivityDataSubmissionFilledByStakeholder_1.ActivityDataSubmissionFilledByStakeholder.fromPrimitives(props.filledByStakeholder), "f");
99
106
  __classPrivateFieldSet(this, _ActivityDataSubmission_fieldResponses, ActivityDataSubmissionFieldResponses_1.ActivityDataSubmissionFieldResponses.fromPrimitives(props.fieldResponses), "f");
100
107
  __classPrivateFieldSet(this, _ActivityDataSubmission_periodStart, ActivityDataSubmissionPeriodStart_1.ActivityDataSubmissionPeriodStart.fromPrimitives(props.periodStart), "f");
@@ -112,6 +119,16 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
112
119
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.fromPrimitives(props.rejectionReason), "f");
113
120
  }
114
121
  }
122
+ /**
123
+ * A facility attributes the activity data to one site of a corporate inventory. Product and
124
+ * event footprints measure a product / event edition, so they never carry a facility.
125
+ * `null` on a corporate submission means the data is reported at corporate level.
126
+ */
127
+ static guardAgainstFacilityOnNonCorporateFootprint(facility, footprintType) {
128
+ if (facility !== null && footprintType !== CarbonFootprint_1.CarbonFootprint.CORPORATE) {
129
+ throw InvalidActivityDataSubmissionFacilityError_1.InvalidActivityDataSubmissionFacilityError.create(facility.id, footprintType);
130
+ }
131
+ }
115
132
  /**
116
133
  * Validates that the reporting period range is coherent (`periodStart <= periodEnd`).
117
134
  * Dates are in canonical DD/MM/YYYY format (project convention DT-2).
@@ -140,6 +157,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
140
157
  country: primitives.country,
141
158
  footprintConfiguration: primitives.footprintConfiguration,
142
159
  segmentConfiguration: primitives.segmentConfiguration,
160
+ facility: primitives.facility,
143
161
  filledByStakeholder: primitives.filledByStakeholder,
144
162
  fieldResponses: primitives.fieldResponses,
145
163
  periodStart: primitives.periodStart,
@@ -167,6 +185,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
167
185
  country: __classPrivateFieldGet(this, _ActivityDataSubmission_country, "f").toEnum(),
168
186
  footprintConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_footprintConfiguration, "f").toPrimitives(),
169
187
  segmentConfiguration: __classPrivateFieldGet(this, _ActivityDataSubmission_segmentConfiguration, "f").toPrimitives(),
188
+ facility: __classPrivateFieldGet(this, _ActivityDataSubmission_facility, "f").toPrimitives(),
170
189
  filledByStakeholder: __classPrivateFieldGet(this, _ActivityDataSubmission_filledByStakeholder, "f").toPrimitives(),
171
190
  fieldResponses: __classPrivateFieldGet(this, _ActivityDataSubmission_fieldResponses, "f").toPrimitives(),
172
191
  periodStart: __classPrivateFieldGet(this, _ActivityDataSubmission_periodStart, "f").toPrimitives(),
@@ -202,6 +221,9 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
202
221
  get segmentConfiguration() {
203
222
  return __classPrivateFieldGet(this, _ActivityDataSubmission_segmentConfiguration, "f");
204
223
  }
224
+ get facility() {
225
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_facility, "f");
226
+ }
205
227
  get filledByStakeholder() {
206
228
  return __classPrivateFieldGet(this, _ActivityDataSubmission_filledByStakeholder, "f");
207
229
  }
@@ -249,4 +271,4 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
249
271
  }
250
272
  }
251
273
  exports.ActivityDataSubmission = ActivityDataSubmission;
252
- _ActivityDataSubmission_dynamicFormCode = new WeakMap(), _ActivityDataSubmission_carbonClient = new WeakMap(), _ActivityDataSubmission_footprintType = new WeakMap(), _ActivityDataSubmission_country = new WeakMap(), _ActivityDataSubmission_footprintConfiguration = new WeakMap(), _ActivityDataSubmission_segmentConfiguration = new WeakMap(), _ActivityDataSubmission_filledByStakeholder = new WeakMap(), _ActivityDataSubmission_fieldResponses = new WeakMap(), _ActivityDataSubmission_periodStart = new WeakMap(), _ActivityDataSubmission_periodEnd = new WeakMap(), _ActivityDataSubmission_overallUncertaintyPercentage = new WeakMap(), _ActivityDataSubmission_uncertaintySource = new WeakMap(), _ActivityDataSubmission_dataQualityNotes = new WeakMap(), _ActivityDataSubmission_reportingStandard = new WeakMap(), _ActivityDataSubmission_emissionScope = new WeakMap(), _ActivityDataSubmission_subScope = new WeakMap(), _ActivityDataSubmission_status = new WeakMap(), _ActivityDataSubmission_submittedAt = new WeakMap(), _ActivityDataSubmission_approvedAt = new WeakMap(), _ActivityDataSubmission_rejectedAt = new WeakMap(), _ActivityDataSubmission_rejectionReason = new WeakMap();
274
+ _ActivityDataSubmission_dynamicFormCode = new WeakMap(), _ActivityDataSubmission_carbonClient = new WeakMap(), _ActivityDataSubmission_footprintType = new WeakMap(), _ActivityDataSubmission_country = new WeakMap(), _ActivityDataSubmission_footprintConfiguration = new WeakMap(), _ActivityDataSubmission_segmentConfiguration = new WeakMap(), _ActivityDataSubmission_facility = new WeakMap(), _ActivityDataSubmission_filledByStakeholder = new WeakMap(), _ActivityDataSubmission_fieldResponses = new WeakMap(), _ActivityDataSubmission_periodStart = new WeakMap(), _ActivityDataSubmission_periodEnd = new WeakMap(), _ActivityDataSubmission_overallUncertaintyPercentage = new WeakMap(), _ActivityDataSubmission_uncertaintySource = new WeakMap(), _ActivityDataSubmission_dataQualityNotes = new WeakMap(), _ActivityDataSubmission_reportingStandard = new WeakMap(), _ActivityDataSubmission_emissionScope = new WeakMap(), _ActivityDataSubmission_subScope = new WeakMap(), _ActivityDataSubmission_status = new WeakMap(), _ActivityDataSubmission_submittedAt = new WeakMap(), _ActivityDataSubmission_approvedAt = new WeakMap(), _ActivityDataSubmission_rejectedAt = new WeakMap(), _ActivityDataSubmission_rejectionReason = new WeakMap();
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidActivityDataSubmissionFacilityError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ const CarbonFootprint_1 = require("../../../../carbon-footprint-configurations/shared/domain/enums/CarbonFootprint");
7
+ class InvalidActivityDataSubmissionFacilityError extends CodedRootError_1.CodedRootError {
8
+ constructor(facilityId, receivedFootprintType) {
9
+ const technicalMessage = `Invalid activity data submission facility '${facilityId}': a facility can only be assigned to a ${CarbonFootprint_1.CarbonFootprint.CORPORATE} footprint submission, received footprint type '${receivedFootprintType}'.`;
10
+ const context = {
11
+ facilityId,
12
+ receivedFootprintType,
13
+ allowedFootprintType: CarbonFootprint_1.CarbonFootprint.CORPORATE,
14
+ timestamp: new Date().toISOString(),
15
+ };
16
+ const suggestions = [
17
+ 'Send facility as null for PRODUCT and EVENT footprint submissions',
18
+ 'Assign a facility only when the submission belongs to a CORPORATE footprint configuration',
19
+ 'Use null on a CORPORATE submission to report the activity data at corporate level',
20
+ ];
21
+ super(ErrorCode_1.ErrorCode.INVALID_SUBMISSION_FACILITY, technicalMessage, context, suggestions);
22
+ this.name = 'InvalidActivityDataSubmissionFacilityError';
23
+ }
24
+ static create(facilityId, receivedFootprintType) {
25
+ return new InvalidActivityDataSubmissionFacilityError(facilityId, receivedFootprintType);
26
+ }
27
+ logError() {
28
+ return `${this.name}: ${this.technicalMessage}`;
29
+ }
30
+ }
31
+ exports.InvalidActivityDataSubmissionFacilityError = InvalidActivityDataSubmissionFacilityError;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionFacility = void 0;
4
+ const NullableFacilityReference_1 = require("../../../../shared/domain/value-objects/NullableFacilityReference");
5
+ /**
6
+ * Sede a la que se imputa el dato de actividad. `null` significa "Nivel Corporativo":
7
+ * el dato pertenece a la organización y no a una sede concreta.
8
+ */
9
+ class ActivityDataSubmissionFacility extends NullableFacilityReference_1.NullableFacilityReference {
10
+ constructor(value, skipDomainValidation) {
11
+ super(value, skipDomainValidation, ActivityDataSubmissionFacility.PROPERTY_NAME);
12
+ }
13
+ static create(value) {
14
+ return new ActivityDataSubmissionFacility(value, false);
15
+ }
16
+ static fromPrimitives(primitives) {
17
+ const value = primitives;
18
+ return new ActivityDataSubmissionFacility(value, true);
19
+ }
20
+ toPrimitives() {
21
+ return this.value;
22
+ }
23
+ }
24
+ exports.ActivityDataSubmissionFacility = ActivityDataSubmissionFacility;
25
+ ActivityDataSubmissionFacility.PROPERTY_NAME = 'facility';
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
- var _CorporateCarbonFootprintConfiguration_facility, _CorporateCarbonFootprintConfiguration_executionPeriod, _CorporateCarbonFootprintConfiguration_baseYear, _CorporateCarbonFootprintConfiguration_segmentConfigurations;
13
+ var _CorporateCarbonFootprintConfiguration_facilities, _CorporateCarbonFootprintConfiguration_executionPeriod, _CorporateCarbonFootprintConfiguration_baseYear, _CorporateCarbonFootprintConfiguration_segmentConfigurations;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CorporateCarbonFootprintConfiguration = void 0;
16
16
  const CarbonFootprintConfiguration_1 = require("../../../shared/domain/entities/CarbonFootprintConfiguration");
@@ -20,7 +20,7 @@ const CorporateCarbonFootprintConfigurationName_1 = require("../value-objects/Co
20
20
  const CorporateCarbonFootprintConfigurationCreatedByStakeholder_1 = require("../value-objects/CorporateCarbonFootprintConfigurationCreatedByStakeholder");
21
21
  const CorporateCarbonFootprintConfigurationExecutionPeriod_1 = require("../value-objects/CorporateCarbonFootprintConfigurationExecutionPeriod");
22
22
  const CorporateCarbonFootprintConfigurationBaseYear_1 = require("../value-objects/CorporateCarbonFootprintConfigurationBaseYear");
23
- const CorporateCarbonFootprintConfigurationFacility_1 = require("../value-objects/CorporateCarbonFootprintConfigurationFacility");
23
+ const CorporateCarbonFootprintConfigurationFacilities_1 = require("../value-objects/CorporateCarbonFootprintConfigurationFacilities");
24
24
  const CorporateCarbonFootprintConfigurationFootprintType_1 = require("../value-objects/CorporateCarbonFootprintConfigurationFootprintType");
25
25
  const CorporateCarbonFootprintConfigurationIntensityIndicatorConfigurations_1 = require("../value-objects/CorporateCarbonFootprintConfigurationIntensityIndicatorConfigurations");
26
26
  const CorporateCarbonFootprintConfigurationOwnedByCarbonClient_1 = require("../value-objects/CorporateCarbonFootprintConfigurationOwnedByCarbonClient");
@@ -72,20 +72,20 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
72
72
  ownedByCarbonClient,
73
73
  createdByStakeholder,
74
74
  }, skipDomainValidation);
75
- _CorporateCarbonFootprintConfiguration_facility.set(this, void 0);
75
+ _CorporateCarbonFootprintConfiguration_facilities.set(this, void 0);
76
76
  _CorporateCarbonFootprintConfiguration_executionPeriod.set(this, void 0);
77
77
  _CorporateCarbonFootprintConfiguration_baseYear.set(this, void 0);
78
78
  _CorporateCarbonFootprintConfiguration_segmentConfigurations.set(this, void 0);
79
79
  if (skipDomainValidation === false) {
80
80
  // Initialize with domain validation
81
- __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facility, CorporateCarbonFootprintConfigurationFacility_1.CorporateCarbonFootprintConfigurationFacility.create(props.facility), "f");
81
+ __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facilities, CorporateCarbonFootprintConfigurationFacilities_1.CorporateCarbonFootprintConfigurationFacilities.create(props.facilities), "f");
82
82
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, CorporateCarbonFootprintConfigurationExecutionPeriod_1.CorporateCarbonFootprintConfigurationExecutionPeriod.create(props.executionPeriod), "f");
83
83
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_baseYear, CorporateCarbonFootprintConfigurationBaseYear_1.CorporateCarbonFootprintConfigurationBaseYear.create(props.baseYear), "f");
84
84
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_segmentConfigurations, CorporateCarbonFootprintConfigurationSegmentConfigurations_1.CorporateCarbonFootprintConfigurationSegmentConfigurations.create(props.segmentConfigurations), "f");
85
85
  }
86
86
  else {
87
87
  // Initialize from primitives (no domain validation)
88
- __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facility, CorporateCarbonFootprintConfigurationFacility_1.CorporateCarbonFootprintConfigurationFacility.fromPrimitives(props.facility), "f");
88
+ __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_facilities, CorporateCarbonFootprintConfigurationFacilities_1.CorporateCarbonFootprintConfigurationFacilities.fromPrimitives(props.facilities), "f");
89
89
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, CorporateCarbonFootprintConfigurationExecutionPeriod_1.CorporateCarbonFootprintConfigurationExecutionPeriod.fromPrimitives(props.executionPeriod), "f");
90
90
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_baseYear, CorporateCarbonFootprintConfigurationBaseYear_1.CorporateCarbonFootprintConfigurationBaseYear.fromPrimitives(props.baseYear), "f");
91
91
  __classPrivateFieldSet(this, _CorporateCarbonFootprintConfiguration_segmentConfigurations, CorporateCarbonFootprintConfigurationSegmentConfigurations_1.CorporateCarbonFootprintConfigurationSegmentConfigurations.fromPrimitives(props.segmentConfigurations), "f");
@@ -106,7 +106,7 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
106
106
  status: primitives.status,
107
107
  ownedByCarbonClient: primitives.ownedByCarbonClient,
108
108
  createdByStakeholder: primitives.createdByStakeholder,
109
- facility: primitives.facility,
109
+ facilities: primitives.facilities,
110
110
  executionPeriod: primitives.executionPeriod,
111
111
  baseYear: primitives.baseYear,
112
112
  segmentConfigurations: primitives.segmentConfigurations,
@@ -125,14 +125,14 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
125
125
  status: this.status.toEnum(),
126
126
  ownedByCarbonClient: this.ownedByCarbonClient.toPrimitives(),
127
127
  createdByStakeholder: this.createdByStakeholder.toPrimitives(),
128
- facility: this.facility.toPrimitives(),
128
+ facilities: this.facilities.toPrimitives(),
129
129
  executionPeriod: this.executionPeriod.toPrimitives(),
130
130
  baseYear: this.baseYear.toPrimitives(),
131
131
  segmentConfigurations: this.segmentConfigurations.toPrimitives(),
132
132
  };
133
133
  }
134
- get facility() {
135
- return __classPrivateFieldGet(this, _CorporateCarbonFootprintConfiguration_facility, "f");
134
+ get facilities() {
135
+ return __classPrivateFieldGet(this, _CorporateCarbonFootprintConfiguration_facilities, "f");
136
136
  }
137
137
  get executionPeriod() {
138
138
  return __classPrivateFieldGet(this, _CorporateCarbonFootprintConfiguration_executionPeriod, "f");
@@ -145,4 +145,4 @@ class CorporateCarbonFootprintConfiguration extends CarbonFootprintConfiguration
145
145
  }
146
146
  }
147
147
  exports.CorporateCarbonFootprintConfiguration = CorporateCarbonFootprintConfiguration;
148
- _CorporateCarbonFootprintConfiguration_facility = new WeakMap(), _CorporateCarbonFootprintConfiguration_executionPeriod = new WeakMap(), _CorporateCarbonFootprintConfiguration_baseYear = new WeakMap(), _CorporateCarbonFootprintConfiguration_segmentConfigurations = new WeakMap();
148
+ _CorporateCarbonFootprintConfiguration_facilities = new WeakMap(), _CorporateCarbonFootprintConfiguration_executionPeriod = new WeakMap(), _CorporateCarbonFootprintConfiguration_baseYear = new WeakMap(), _CorporateCarbonFootprintConfiguration_segmentConfigurations = new WeakMap();
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CorporateCarbonFootprintConfigurationFacilities = void 0;
4
+ const FacilityReferences_1 = require("../../../../shared/domain/value-objects/FacilityReferences");
5
+ class CorporateCarbonFootprintConfigurationFacilities extends FacilityReferences_1.FacilityReferences {
6
+ constructor(value, skipDomainValidation) {
7
+ super(value, skipDomainValidation, CorporateCarbonFootprintConfigurationFacilities.PROPERTY_NAME, { allowEmpty: false });
8
+ }
9
+ static create(value) {
10
+ return new CorporateCarbonFootprintConfigurationFacilities(value, false);
11
+ }
12
+ static fromPrimitives(primitives) {
13
+ const value = primitives.map((primitive) => ({
14
+ id: primitive.id,
15
+ commercialBranchName: primitive.commercialBranchName,
16
+ }));
17
+ return new CorporateCarbonFootprintConfigurationFacilities(value, true);
18
+ }
19
+ toPrimitives() {
20
+ return this.value;
21
+ }
22
+ }
23
+ exports.CorporateCarbonFootprintConfigurationFacilities = CorporateCarbonFootprintConfigurationFacilities;
24
+ CorporateCarbonFootprintConfigurationFacilities.PROPERTY_NAME = 'facilities';
@@ -14,7 +14,7 @@ const InvalidPropertyTypeError_1 = require("../../../../shared/domain/exceptions
14
14
  * Value object wrapping the intrinsic dimensional keys denormalized on the
15
15
  * EmissionCalculation at calculation time (CALC-001). Required string fields
16
16
  * (`emissionScope`, `segmentId`, `periodStart`) are validated non-empty;
17
- * `subScope` and `subsegmentId` are nullable.
17
+ * `subScope`, `subsegmentId` and `facilityId` are nullable.
18
18
  */
19
19
  class EmissionCalculationDimensions extends ValueObject_1.ValueObject {
20
20
  constructor(value, skipDomainValidation) {
@@ -47,6 +47,9 @@ _a = EmissionCalculationDimensions, _EmissionCalculationDimensions_validate = fu
47
47
  if (value.subsegmentId !== null && typeof value.subsegmentId !== 'string') {
48
48
  throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${_a.PROPERTY_NAME}.subsegmentId`, 'string or null', typeof value.subsegmentId);
49
49
  }
50
+ if (value.facilityId !== null && typeof value.facilityId !== 'string') {
51
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${_a.PROPERTY_NAME}.facilityId`, 'string or null', typeof value.facilityId);
52
+ }
50
53
  }, _EmissionCalculationDimensions_toPrimitives = function _EmissionCalculationDimensions_toPrimitives(value) {
51
54
  return {
52
55
  emissionScope: value.emissionScope,
@@ -54,6 +57,7 @@ _a = EmissionCalculationDimensions, _EmissionCalculationDimensions_validate = fu
54
57
  segmentId: value.segmentId,
55
58
  subsegmentId: value.subsegmentId,
56
59
  periodStart: value.periodStart,
60
+ facilityId: value.facilityId,
57
61
  };
58
62
  };
59
63
  EmissionCalculationDimensions.PROPERTY_NAME = 'dimensions';
@@ -43,6 +43,9 @@ var DataBindingSource;
43
43
  DataBindingSource["AGGREGATION_GAS_N2O"] = "aggregation.gas.n2o";
44
44
  // Aggregations - By Segment
45
45
  DataBindingSource["AGGREGATION_BY_SEGMENT"] = "aggregation.bySegment";
46
+ // Aggregations - By Facility (SEDES, snapshot v6): emissions attributed per facility; the entry
47
+ // with a null facilityId is the corporate level (data of the organization, not of one facility).
48
+ DataBindingSource["AGGREGATION_BY_FACILITY"] = "aggregation.byFacility";
46
49
  // Aggregations - Biogenic CO₂ (informational item OUTSIDE the inventory total and the scopes,
47
50
  // GHG Protocol cap. 9 / ISO 14064-1 §9.3.1): the `CO2-BIOGENIC` species, total and per source.
48
51
  DataBindingSource["AGGREGATION_BIOGENIC_CO2"] = "aggregation.biogenicCO2";
@@ -92,6 +95,7 @@ var DataBindingSource;
92
95
  DataBindingSource["CHART_BY_SCOPE"] = "chart.byScope";
93
96
  DataBindingSource["CHART_BY_SUBCATEGORY"] = "chart.bySubcategory";
94
97
  DataBindingSource["CHART_BY_SEGMENT"] = "chart.bySegment";
98
+ DataBindingSource["CHART_BY_FACILITY"] = "chart.byFacility";
95
99
  DataBindingSource["CHART_BY_GAS"] = "chart.byGas";
96
100
  DataBindingSource["CHART_TREND_ANALYSIS"] = "chart.trendAnalysis";
97
101
  DataBindingSource["CHART_UNCERTAINTY_BY_SOURCE"] = "chart.uncertaintyBySource";
@@ -17,7 +17,7 @@ exports.ErrorCode = void 0;
17
17
  * - RPT: Reporting
18
18
  * - SHR: Shared/Common
19
19
  *
20
- * Total Codes: 173
20
+ * Total Codes: 174
21
21
  * Total Exceptions Migrated: 171 (100%)
22
22
  *
23
23
  * @since 1.0.0
@@ -118,6 +118,8 @@ var ErrorCode;
118
118
  ErrorCode["TRIGGER_VALUE_CONVERSION_ERROR"] = "CBX-ADC-020";
119
119
  ErrorCode["TRIGGER_VALUE_STRING_OPERATION_ERROR"] = "CBX-ADC-021";
120
120
  ErrorCode["UNKNOWN_CONDITIONAL_ACTION_CATEGORY"] = "CBX-ADC-022";
121
+ // Activity Data Submission facility attribution (CBX-ADC-023)
122
+ ErrorCode["INVALID_SUBMISSION_FACILITY"] = "CBX-ADC-023";
121
123
  // Emission Calculation Errors (CBX-EMC-XXX)
122
124
  ErrorCode["CALCULATION_FAILED"] = "CBX-EMC-001";
123
125
  ErrorCode["MISSING_EMISSION_FACTOR"] = "CBX-EMC-002";
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
8
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
9
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
10
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
11
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
+ };
13
+ var _FacilityReferences_facilityReferences, _FacilityReferences_options;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.FacilityReferences = void 0;
16
+ const InvalidPropertyTypeError_1 = require("../exceptions/InvalidPropertyTypeError");
17
+ const InvalidPropertyValueError_1 = require("../exceptions/InvalidPropertyValueError");
18
+ const ValueObject_1 = require("./ValueObject");
19
+ const String_1 = require("./String");
20
+ const AggregateId_1 = require("./AggregateId");
21
+ class FacilityReferences extends ValueObject_1.ValueObject {
22
+ /**
23
+ * Constructor protegido para que solo clases hijas puedan instanciar.
24
+ * Aplica todas las validaciones de dominio al momento de construcción.
25
+ */
26
+ constructor(value, skipDomainValidation, propertyName = FacilityReferences.DEFAULT_PROPERTY_NAME, options = FacilityReferences.DEFAULT_OPTIONS) {
27
+ const finalOptions = { ...FacilityReferences.DEFAULT_OPTIONS, ...options };
28
+ if (skipDomainValidation === false) {
29
+ FacilityReferences.validateReferences(value, propertyName, finalOptions);
30
+ }
31
+ super(FacilityReferences.toCleanReferences(value), skipDomainValidation, propertyName, 'The provided value must be an array of FacilityReference from the domain layer', { allowNull: false, allowUndefined: false });
32
+ _FacilityReferences_facilityReferences.set(this, void 0);
33
+ _FacilityReferences_options.set(this, void 0);
34
+ __classPrivateFieldSet(this, _FacilityReferences_facilityReferences, FacilityReferences.toCleanReferences(value), "f");
35
+ __classPrivateFieldSet(this, _FacilityReferences_options, finalOptions, "f");
36
+ }
37
+ /**
38
+ * Validación estática para reutilización en factory methods y constructores.
39
+ */
40
+ static validateReferences(value, propertyName, options) {
41
+ this.guardAgainstInvalidType(value, propertyName);
42
+ this.guardAgainstInvalidEmptyArray(value, options, propertyName);
43
+ value.forEach((reference, index) => {
44
+ this.guardAgainstInvalidReference(reference, index, propertyName);
45
+ });
46
+ this.guardAgainstDuplicatedIds(value, propertyName);
47
+ }
48
+ /**
49
+ * Valida que el valor sea un array válido.
50
+ */
51
+ static guardAgainstInvalidType(value, propertyName) {
52
+ if (!Array.isArray(value)) {
53
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'array of FacilityReference', typeof value);
54
+ }
55
+ }
56
+ /**
57
+ * Valida que el array no esté vacío si no se permite.
58
+ */
59
+ static guardAgainstInvalidEmptyArray(value, options, propertyName) {
60
+ if (!options.allowEmpty && value.length === 0) {
61
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(propertyName, 'non-empty array', 'empty array');
62
+ }
63
+ }
64
+ /**
65
+ * Valida que no haya sedes duplicadas en la lista.
66
+ */
67
+ static guardAgainstDuplicatedIds(value, propertyName) {
68
+ const ids = value.map((item) => item.id.trim());
69
+ const uniqueIds = new Set(ids);
70
+ if (ids.length !== uniqueIds.size) {
71
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(`${propertyName}.ids`, 'array with unique IDs', 'array with duplicated IDs');
72
+ }
73
+ }
74
+ /**
75
+ * Valida una referencia individual.
76
+ */
77
+ static guardAgainstInvalidReference(reference, index, basePropertyName) {
78
+ const propertyName = `${basePropertyName}[${index}]`;
79
+ if (!reference || typeof reference !== 'object') {
80
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(propertyName, 'FacilityReference object', typeof reference);
81
+ }
82
+ if (typeof reference.id !== 'string') {
83
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.id`, 'string', typeof reference.id);
84
+ }
85
+ if (typeof reference.commercialBranchName !== 'string') {
86
+ throw InvalidPropertyTypeError_1.InvalidPropertyTypeError.create(`${propertyName}.commercialBranchName`, 'string', typeof reference.commercialBranchName);
87
+ }
88
+ String_1.String.guardAgainstEmptyValue(reference.id, `${propertyName}.id`);
89
+ AggregateId_1.AggregateId.guardAgainstInvalidId(reference.id, `${propertyName}.id`);
90
+ String_1.String.guardAgainstEmptyValue(reference.commercialBranchName, `${propertyName}.commercialBranchName`);
91
+ }
92
+ /**
93
+ * Limpia y normaliza las referencias.
94
+ */
95
+ static toCleanReferences(value) {
96
+ return value.map((item) => ({
97
+ id: item.id.trim(),
98
+ commercialBranchName: item.commercialBranchName.trim(),
99
+ }));
100
+ }
101
+ /**
102
+ * Array de referencias de sedes (inmutable).
103
+ */
104
+ get facilityReferences() {
105
+ return Object.freeze([...__classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f")]);
106
+ }
107
+ /**
108
+ * Opciones de configuración de la colección.
109
+ */
110
+ get options() {
111
+ return Object.freeze({ ...__classPrivateFieldGet(this, _FacilityReferences_options, "f") });
112
+ }
113
+ /**
114
+ * Número de referencias en la lista.
115
+ */
116
+ get count() {
117
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length;
118
+ }
119
+ /**
120
+ * Verifica si la lista está vacía.
121
+ */
122
+ isEmpty() {
123
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length === 0;
124
+ }
125
+ /**
126
+ * Verifica si la lista tiene referencias.
127
+ */
128
+ hasReferences() {
129
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length > 0;
130
+ }
131
+ /**
132
+ * Verifica si la colección permite estar vacía.
133
+ */
134
+ allowsEmpty() {
135
+ return __classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty === true;
136
+ }
137
+ /**
138
+ * Verifica si la colección está en un estado válido según sus opciones.
139
+ */
140
+ isValidState() {
141
+ if (!this.allowsEmpty() && this.isEmpty()) {
142
+ return false;
143
+ }
144
+ return true;
145
+ }
146
+ /**
147
+ * Obtiene una referencia por su id.
148
+ */
149
+ getById(id) {
150
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").find((reference) => reference.id === id.trim());
151
+ }
152
+ /**
153
+ * Verifica si existe una referencia con el id especificado.
154
+ */
155
+ hasId(id) {
156
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").some((reference) => reference.id === id.trim());
157
+ }
158
+ /**
159
+ * Obtiene todos los ids de las referencias.
160
+ */
161
+ getIds() {
162
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => reference.id);
163
+ }
164
+ /**
165
+ * Obtiene todos los nombres comerciales de las referencias.
166
+ */
167
+ getCommercialBranchNames() {
168
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => reference.commercialBranchName);
169
+ }
170
+ /**
171
+ * Compara la igualdad semántica con otra lista de referencias.
172
+ * Dos colecciones son iguales si referencian el mismo conjunto de sedes.
173
+ */
174
+ equals(other) {
175
+ if (!(other instanceof FacilityReferences)) {
176
+ return false;
177
+ }
178
+ if (__classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty !== __classPrivateFieldGet(other, _FacilityReferences_options, "f").allowEmpty) {
179
+ return false;
180
+ }
181
+ if (__classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").length !== __classPrivateFieldGet(other, _FacilityReferences_facilityReferences, "f").length) {
182
+ return false;
183
+ }
184
+ const otherIds = new Set(other.getIds());
185
+ return this.getIds().every((id) => otherIds.has(id));
186
+ }
187
+ /**
188
+ * Genera un hash code para usar en colecciones.
189
+ */
190
+ hashCode() {
191
+ const optionsHash = __classPrivateFieldGet(this, _FacilityReferences_options, "f").allowEmpty ? 'E' : 'NE';
192
+ return `facilityReferences_${optionsHash}_${[...this.getIds()].sort().join('_')}`;
193
+ }
194
+ /**
195
+ * Convierte a representación primitiva para persistencia.
196
+ */
197
+ toPrimitives() {
198
+ return __classPrivateFieldGet(this, _FacilityReferences_facilityReferences, "f").map((reference) => ({
199
+ id: reference.id,
200
+ commercialBranchName: reference.commercialBranchName,
201
+ }));
202
+ }
203
+ /**
204
+ * Representación como string (lista de nombres comerciales).
205
+ */
206
+ toString() {
207
+ if (this.isEmpty()) {
208
+ return 'Sin sedes';
209
+ }
210
+ return this.getCommercialBranchNames().join(', ');
211
+ }
212
+ /**
213
+ * Representación JSON para serialización.
214
+ */
215
+ toJSON() {
216
+ return this.toPrimitives();
217
+ }
218
+ }
219
+ exports.FacilityReferences = FacilityReferences;
220
+ _FacilityReferences_facilityReferences = new WeakMap(), _FacilityReferences_options = new WeakMap();
221
+ FacilityReferences.DEFAULT_PROPERTY_NAME = 'facilityReferences';
222
+ FacilityReferences.DEFAULT_OPTIONS = {
223
+ allowEmpty: false, // Por defecto no permite estar vacío
224
+ };