@carbonbox/domain 0.36.1 → 0.38.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 (124) hide show
  1. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/entity/EmissionFactor.js +29 -2
  2. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/enums/MethodologicalTier.js +22 -0
  3. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidIpccCodeError.js +30 -0
  4. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidMethodologicalTierError.js +32 -0
  5. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccCode.js +42 -0
  6. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccSubcategory.js +23 -0
  7. package/build/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorMethodologicalTier.js +60 -0
  8. package/build/carbonbox/reporting/report-instances/domain/entity/ReportInstance.js +3 -2
  9. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/entity/IReportPreparationQuestionnaire.js +2 -0
  10. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/entity/ReportPreparationQuestionnaire.js +284 -0
  11. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/enums/ReportPreparationQuestionnaireStatus.js +22 -0
  12. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/DuplicatePreparationQuestionError.js +29 -0
  13. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationAnswerError.js +33 -0
  14. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationQuestionError.js +30 -0
  15. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/PreparationQuestionNotFoundError.js +29 -0
  16. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeCompletedError.js +31 -0
  17. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeModifiedError.js +29 -0
  18. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeReopenedError.js +28 -0
  19. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/TemplateQuestionCannotBeRemovedError.js +29 -0
  20. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/repository/IReportPreparationQuestionnaireRepository.js +2 -0
  21. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationAnswerPrimitives.js +2 -0
  22. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationQuestionPrimitives.js +2 -0
  23. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireCompletionPrimitives.js +2 -0
  24. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnairePrimitives.js +2 -0
  25. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireProps.js +2 -0
  26. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationAnswer.js +56 -0
  27. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationQuestion.js +173 -0
  28. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireCompletion.js +47 -0
  29. package/build/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireId.js +52 -0
  30. package/build/carbonbox/reporting/shared/domain/enums/ClientInputFieldType.js +34 -0
  31. package/build/carbonbox/reporting/shared/domain/enums/QuestionnaireQuestionOrigin.js +18 -0
  32. package/build/carbonbox/reporting/shared/domain/exceptions/InvalidReportBlockClientInputError.js +31 -0
  33. package/build/carbonbox/reporting/shared/domain/types/ReportBlockClientInputPrimitives.js +2 -0
  34. package/build/carbonbox/reporting/shared/domain/value-objects/ReportSection.js +43 -0
  35. package/build/carbonbox/shared/domain/authorization/enums/Permission.js +6 -0
  36. package/build/carbonbox/shared/domain/enums/ErrorCode.js +12 -1
  37. package/build/carbonbox/shared/domain/enums/SemanticUuidPrefix.js +2 -0
  38. package/build/main/index.js +64 -14
  39. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/entity/EmissionFactor.d.ts +6 -0
  40. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/entity/EmissionFactor.d.ts.map +1 -1
  41. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/entity/IEmissionFactor.d.ts +6 -0
  42. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/entity/IEmissionFactor.d.ts.map +1 -1
  43. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/enums/MethodologicalTier.d.ts +19 -0
  44. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/enums/MethodologicalTier.d.ts.map +1 -0
  45. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidIpccCodeError.d.ts +7 -0
  46. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidIpccCodeError.d.ts.map +1 -0
  47. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidMethodologicalTierError.d.ts +8 -0
  48. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/exceptions/InvalidMethodologicalTierError.d.ts.map +1 -0
  49. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/EmissionFactorPrimitives.d.ts +4 -0
  50. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/EmissionFactorPrimitives.d.ts.map +1 -1
  51. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/EmissionFactorProps.d.ts +4 -0
  52. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/types/EmissionFactorProps.d.ts.map +1 -1
  53. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccCode.d.ts +18 -0
  54. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccCode.d.ts.map +1 -0
  55. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccSubcategory.d.ts +9 -0
  56. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorIpccSubcategory.d.ts.map +1 -0
  57. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorMethodologicalTier.d.ts +27 -0
  58. package/build/types/carbonbox/emission-calculation-formulas/emission-factors/domain/value-objects/EmissionFactorMethodologicalTier.d.ts.map +1 -0
  59. package/build/types/carbonbox/reporting/report-instances/domain/entity/ReportInstance.d.ts.map +1 -1
  60. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/entity/IReportPreparationQuestionnaire.d.ts +28 -0
  61. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/entity/IReportPreparationQuestionnaire.d.ts.map +1 -0
  62. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/entity/ReportPreparationQuestionnaire.d.ts +55 -0
  63. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/entity/ReportPreparationQuestionnaire.d.ts.map +1 -0
  64. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/enums/ReportPreparationQuestionnaireStatus.d.ts +19 -0
  65. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/enums/ReportPreparationQuestionnaireStatus.d.ts.map +1 -0
  66. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/DuplicatePreparationQuestionError.d.ts +7 -0
  67. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/DuplicatePreparationQuestionError.d.ts.map +1 -0
  68. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationAnswerError.d.ts +7 -0
  69. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationAnswerError.d.ts.map +1 -0
  70. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationQuestionError.d.ts +7 -0
  71. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/InvalidPreparationQuestionError.d.ts.map +1 -0
  72. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/PreparationQuestionNotFoundError.d.ts +7 -0
  73. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/PreparationQuestionNotFoundError.d.ts.map +1 -0
  74. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeCompletedError.d.ts +8 -0
  75. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeCompletedError.d.ts.map +1 -0
  76. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeModifiedError.d.ts +7 -0
  77. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeModifiedError.d.ts.map +1 -0
  78. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeReopenedError.d.ts +7 -0
  79. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/ReportPreparationQuestionnaireCannotBeReopenedError.d.ts.map +1 -0
  80. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/TemplateQuestionCannotBeRemovedError.d.ts +7 -0
  81. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/exceptions/TemplateQuestionCannotBeRemovedError.d.ts.map +1 -0
  82. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/repository/IReportPreparationQuestionnaireRepository.d.ts +61 -0
  83. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/repository/IReportPreparationQuestionnaireRepository.d.ts.map +1 -0
  84. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationAnswerPrimitives.d.ts +7 -0
  85. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationAnswerPrimitives.d.ts.map +1 -0
  86. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationQuestionPrimitives.d.ts +17 -0
  87. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/PreparationQuestionPrimitives.d.ts.map +1 -0
  88. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireCompletionPrimitives.d.ts +7 -0
  89. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireCompletionPrimitives.d.ts.map +1 -0
  90. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnairePrimitives.d.ts +17 -0
  91. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnairePrimitives.d.ts.map +1 -0
  92. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireProps.d.ts +15 -0
  93. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/types/ReportPreparationQuestionnaireProps.d.ts.map +1 -0
  94. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationAnswer.d.ts +16 -0
  95. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationAnswer.d.ts.map +1 -0
  96. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationQuestion.d.ts +33 -0
  97. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/PreparationQuestion.d.ts.map +1 -0
  98. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireCompletion.d.ts +17 -0
  99. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireCompletion.d.ts.map +1 -0
  100. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireId.d.ts +14 -0
  101. package/build/types/carbonbox/reporting/report-preparation-questionnaires/domain/value-objects/ReportPreparationQuestionnaireId.d.ts.map +1 -0
  102. package/build/types/carbonbox/reporting/shared/domain/enums/ClientInputFieldType.d.ts +31 -0
  103. package/build/types/carbonbox/reporting/shared/domain/enums/ClientInputFieldType.d.ts.map +1 -0
  104. package/build/types/carbonbox/reporting/shared/domain/enums/QuestionnaireQuestionOrigin.d.ts +15 -0
  105. package/build/types/carbonbox/reporting/shared/domain/enums/QuestionnaireQuestionOrigin.d.ts.map +1 -0
  106. package/build/types/carbonbox/reporting/shared/domain/exceptions/InvalidReportBlockClientInputError.d.ts +7 -0
  107. package/build/types/carbonbox/reporting/shared/domain/exceptions/InvalidReportBlockClientInputError.d.ts.map +1 -0
  108. package/build/types/carbonbox/reporting/shared/domain/types/QuestionnaireAnswerPrimitives.d.ts +8 -2
  109. package/build/types/carbonbox/reporting/shared/domain/types/QuestionnaireAnswerPrimitives.d.ts.map +1 -1
  110. package/build/types/carbonbox/reporting/shared/domain/types/ReportBlockClientInputPrimitives.d.ts +14 -0
  111. package/build/types/carbonbox/reporting/shared/domain/types/ReportBlockClientInputPrimitives.d.ts.map +1 -0
  112. package/build/types/carbonbox/reporting/shared/domain/types/ReportBlockPrimitives.d.ts +2 -0
  113. package/build/types/carbonbox/reporting/shared/domain/types/ReportBlockPrimitives.d.ts.map +1 -1
  114. package/build/types/carbonbox/reporting/shared/domain/value-objects/ReportSection.d.ts +11 -0
  115. package/build/types/carbonbox/reporting/shared/domain/value-objects/ReportSection.d.ts.map +1 -1
  116. package/build/types/carbonbox/shared/domain/authorization/enums/Permission.d.ts +7 -1
  117. package/build/types/carbonbox/shared/domain/authorization/enums/Permission.d.ts.map +1 -1
  118. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts +11 -0
  119. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts.map +1 -1
  120. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts +3 -1
  121. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts.map +1 -1
  122. package/build/types/main/index.d.ts +31 -0
  123. package/build/types/main/index.d.ts.map +1 -1
  124. package/package.json +1 -1
@@ -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 _EmissionFactor_code, _EmissionFactor_name, _EmissionFactor_description, _EmissionFactor_greenhouseGasValues, _EmissionFactor_informationSource;
13
+ var _EmissionFactor_code, _EmissionFactor_name, _EmissionFactor_description, _EmissionFactor_greenhouseGasValues, _EmissionFactor_informationSource, _EmissionFactor_ipccCode, _EmissionFactor_ipccSubcategory, _EmissionFactor_methodologicalTier;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.EmissionFactor = void 0;
16
16
  const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
@@ -19,6 +19,9 @@ const EmissionFactorDescription_1 = require("../value-objects/EmissionFactorDesc
19
19
  const EmissionFactorGreenhouseGasValues_1 = require("../value-objects/EmissionFactorGreenhouseGasValues");
20
20
  const EmissionFactorId_1 = require("../value-objects/EmissionFactorId");
21
21
  const EmissionFactorInformationSource_1 = require("../value-objects/EmissionFactorInformationSource");
22
+ const EmissionFactorIpccCode_1 = require("../value-objects/EmissionFactorIpccCode");
23
+ const EmissionFactorIpccSubcategory_1 = require("../value-objects/EmissionFactorIpccSubcategory");
24
+ const EmissionFactorMethodologicalTier_1 = require("../value-objects/EmissionFactorMethodologicalTier");
22
25
  const EmissionFactorName_1 = require("../value-objects/EmissionFactorName");
23
26
  class EmissionFactor extends AggregateRoot_1.AggregateRoot {
24
27
  constructor(props, skipDomainValidation) {
@@ -31,6 +34,9 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
31
34
  _EmissionFactor_description.set(this, void 0);
32
35
  _EmissionFactor_greenhouseGasValues.set(this, void 0);
33
36
  _EmissionFactor_informationSource.set(this, void 0);
37
+ _EmissionFactor_ipccCode.set(this, void 0);
38
+ _EmissionFactor_ipccSubcategory.set(this, void 0);
39
+ _EmissionFactor_methodologicalTier.set(this, void 0);
34
40
  if (skipDomainValidation === false) {
35
41
  // Initialize with domain validation
36
42
  __classPrivateFieldSet(this, _EmissionFactor_code, EmissionFactorCode_1.EmissionFactorCode.create(props.code), "f");
@@ -38,6 +44,9 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
38
44
  __classPrivateFieldSet(this, _EmissionFactor_description, EmissionFactorDescription_1.EmissionFactorDescription.create(props.description), "f");
39
45
  __classPrivateFieldSet(this, _EmissionFactor_greenhouseGasValues, EmissionFactorGreenhouseGasValues_1.EmissionFactorGreenhouseGasValues.create(props.greenhouseGasValues), "f");
40
46
  __classPrivateFieldSet(this, _EmissionFactor_informationSource, EmissionFactorInformationSource_1.EmissionFactorInformationSource.create(props.informationSource), "f");
47
+ __classPrivateFieldSet(this, _EmissionFactor_ipccCode, EmissionFactorIpccCode_1.EmissionFactorIpccCode.create(props.ipccCode), "f");
48
+ __classPrivateFieldSet(this, _EmissionFactor_ipccSubcategory, EmissionFactorIpccSubcategory_1.EmissionFactorIpccSubcategory.create(props.ipccSubcategory), "f");
49
+ __classPrivateFieldSet(this, _EmissionFactor_methodologicalTier, EmissionFactorMethodologicalTier_1.EmissionFactorMethodologicalTier.create(props.methodologicalTier), "f");
41
50
  }
42
51
  else {
43
52
  // Initialize from primitives (no domain validation)
@@ -46,6 +55,9 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
46
55
  __classPrivateFieldSet(this, _EmissionFactor_description, EmissionFactorDescription_1.EmissionFactorDescription.fromPrimitives(props.description), "f");
47
56
  __classPrivateFieldSet(this, _EmissionFactor_greenhouseGasValues, EmissionFactorGreenhouseGasValues_1.EmissionFactorGreenhouseGasValues.fromPrimitives(props.greenhouseGasValues), "f");
48
57
  __classPrivateFieldSet(this, _EmissionFactor_informationSource, EmissionFactorInformationSource_1.EmissionFactorInformationSource.fromPrimitives(props.informationSource), "f");
58
+ __classPrivateFieldSet(this, _EmissionFactor_ipccCode, EmissionFactorIpccCode_1.EmissionFactorIpccCode.fromPrimitives(props.ipccCode), "f");
59
+ __classPrivateFieldSet(this, _EmissionFactor_ipccSubcategory, EmissionFactorIpccSubcategory_1.EmissionFactorIpccSubcategory.fromPrimitives(props.ipccSubcategory), "f");
60
+ __classPrivateFieldSet(this, _EmissionFactor_methodologicalTier, EmissionFactorMethodologicalTier_1.EmissionFactorMethodologicalTier.fromPrimitives(props.methodologicalTier), "f");
49
61
  }
50
62
  }
51
63
  static create(props) {
@@ -59,6 +71,9 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
59
71
  description: primitives.description,
60
72
  greenhouseGasValues: primitives.greenhouseGasValues,
61
73
  informationSource: primitives.informationSource,
74
+ ipccCode: primitives.ipccCode,
75
+ ipccSubcategory: primitives.ipccSubcategory,
76
+ methodologicalTier: primitives.methodologicalTier,
62
77
  };
63
78
  return new EmissionFactor(props, true);
64
79
  }
@@ -70,6 +85,9 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
70
85
  description: __classPrivateFieldGet(this, _EmissionFactor_description, "f").toPrimitives(),
71
86
  greenhouseGasValues: __classPrivateFieldGet(this, _EmissionFactor_greenhouseGasValues, "f").toPrimitives(),
72
87
  informationSource: __classPrivateFieldGet(this, _EmissionFactor_informationSource, "f").toPrimitives(),
88
+ ipccCode: __classPrivateFieldGet(this, _EmissionFactor_ipccCode, "f").toPrimitives(),
89
+ ipccSubcategory: __classPrivateFieldGet(this, _EmissionFactor_ipccSubcategory, "f").toPrimitives(),
90
+ methodologicalTier: __classPrivateFieldGet(this, _EmissionFactor_methodologicalTier, "f").toEnum(),
73
91
  };
74
92
  }
75
93
  get code() {
@@ -87,6 +105,15 @@ class EmissionFactor extends AggregateRoot_1.AggregateRoot {
87
105
  get informationSource() {
88
106
  return __classPrivateFieldGet(this, _EmissionFactor_informationSource, "f");
89
107
  }
108
+ get ipccCode() {
109
+ return __classPrivateFieldGet(this, _EmissionFactor_ipccCode, "f");
110
+ }
111
+ get ipccSubcategory() {
112
+ return __classPrivateFieldGet(this, _EmissionFactor_ipccSubcategory, "f");
113
+ }
114
+ get methodologicalTier() {
115
+ return __classPrivateFieldGet(this, _EmissionFactor_methodologicalTier, "f");
116
+ }
90
117
  }
91
118
  exports.EmissionFactor = EmissionFactor;
92
- _EmissionFactor_code = new WeakMap(), _EmissionFactor_name = new WeakMap(), _EmissionFactor_description = new WeakMap(), _EmissionFactor_greenhouseGasValues = new WeakMap(), _EmissionFactor_informationSource = new WeakMap();
119
+ _EmissionFactor_code = new WeakMap(), _EmissionFactor_name = new WeakMap(), _EmissionFactor_description = new WeakMap(), _EmissionFactor_greenhouseGasValues = new WeakMap(), _EmissionFactor_informationSource = new WeakMap(), _EmissionFactor_ipccCode = new WeakMap(), _EmissionFactor_ipccSubcategory = new WeakMap(), _EmissionFactor_methodologicalTier = new WeakMap();
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MethodologicalTier = void 0;
4
+ /**
5
+ * IPCC methodological tier of an emission factor
6
+ * Defines the level of detail and specificity of the emission factor source (IPCC 2006 Guidelines)
7
+ */
8
+ var MethodologicalTier;
9
+ (function (MethodologicalTier) {
10
+ /**
11
+ * Tier 1 - IPCC default emission factors
12
+ */
13
+ MethodologicalTier["TIER_1"] = "TIER_1";
14
+ /**
15
+ * Tier 2 - Country-specific emission factors
16
+ */
17
+ MethodologicalTier["TIER_2"] = "TIER_2";
18
+ /**
19
+ * Tier 3 - Facility or plant-specific emission factors
20
+ */
21
+ MethodologicalTier["TIER_3"] = "TIER_3";
22
+ })(MethodologicalTier || (exports.MethodologicalTier = MethodologicalTier = {}));
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidIpccCodeError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ class InvalidIpccCodeError extends CodedRootError_1.CodedRootError {
7
+ constructor(receivedValue) {
8
+ const technicalMessage = `Invalid IPCC code: '${receivedValue}'. IPCC codes must follow the IPCC 2006 category format (e.g. 1A3b, 1A4a, 2B1, 4A).`;
9
+ const context = {
10
+ receivedValue,
11
+ receivedLength: receivedValue.length,
12
+ timestamp: new Date().toISOString(),
13
+ };
14
+ const suggestions = [
15
+ 'Provide an IPCC 2006 category code such as 1A3b or 1A4a',
16
+ 'Verify that the code starts with the sector number (1 to 6) followed by the category letter',
17
+ 'Check the IPCC 2006 Guidelines for National Greenhouse Gas Inventories for the category list',
18
+ 'Review the emission factor configuration to ensure the IPCC code is correctly assigned',
19
+ ];
20
+ super(ErrorCode_1.ErrorCode.INVALID_IPCC_CODE, technicalMessage, context, suggestions);
21
+ this.name = 'InvalidIpccCodeError';
22
+ }
23
+ static create(receivedValue) {
24
+ return new InvalidIpccCodeError(receivedValue);
25
+ }
26
+ logError() {
27
+ return `${this.name}: ${this.technicalMessage}`;
28
+ }
29
+ }
30
+ exports.InvalidIpccCodeError = InvalidIpccCodeError;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidMethodologicalTierError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ class InvalidMethodologicalTierError extends CodedRootError_1.CodedRootError {
7
+ constructor(receivedValue, validTiers) {
8
+ const validTiersList = validTiers.join(', ');
9
+ const technicalMessage = `Invalid methodological tier value '${receivedValue}': must be one of ${validTiersList}.`;
10
+ const context = {
11
+ receivedValue,
12
+ validTiers,
13
+ validTiersList,
14
+ timestamp: new Date().toISOString(),
15
+ };
16
+ const suggestions = [
17
+ `Use one of the valid methodological tiers: ${validTiersList}`,
18
+ 'Verify that the tier value is correctly spelled',
19
+ 'Check the MethodologicalTier enum for valid options',
20
+ 'Review the IPCC 2006 Guidelines for the tier definitions (Tier 1 default, Tier 2 country-specific, Tier 3 facility-specific)',
21
+ ];
22
+ super(ErrorCode_1.ErrorCode.INVALID_METHODOLOGICAL_TIER, technicalMessage, context, suggestions);
23
+ this.name = 'InvalidMethodologicalTierError';
24
+ }
25
+ static create(receivedValue, validTiers) {
26
+ return new InvalidMethodologicalTierError(receivedValue, validTiers);
27
+ }
28
+ logError() {
29
+ return `${this.name}: ${this.technicalMessage}`;
30
+ }
31
+ }
32
+ exports.InvalidMethodologicalTierError = InvalidMethodologicalTierError;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmissionFactorIpccCode = void 0;
4
+ const String_1 = require("../../../../shared/domain/value-objects/String");
5
+ const InvalidIpccCodeError_1 = require("../exceptions/InvalidIpccCodeError");
6
+ class EmissionFactorIpccCode extends String_1.String {
7
+ constructor(value, skipDomainValidation) {
8
+ super(value, skipDomainValidation, EmissionFactorIpccCode.PROPERTY_NAME);
9
+ if (skipDomainValidation === false) {
10
+ EmissionFactorIpccCode.guardAgainstInvalidFormat(value);
11
+ }
12
+ }
13
+ static create(value) {
14
+ String_1.String.guardAgainstEmptyValue(value, EmissionFactorIpccCode.PROPERTY_NAME);
15
+ String_1.String.guardAgainstInvalidType(value, EmissionFactorIpccCode.PROPERTY_NAME);
16
+ return new EmissionFactorIpccCode(value, false);
17
+ }
18
+ static fromPrimitives(primitive) {
19
+ const value = primitive;
20
+ return new EmissionFactorIpccCode(value, true);
21
+ }
22
+ static guardAgainstInvalidFormat(value) {
23
+ if (!EmissionFactorIpccCode.IPCC_CODE_REGEX.test(value)) {
24
+ throw InvalidIpccCodeError_1.InvalidIpccCodeError.create(value);
25
+ }
26
+ }
27
+ static isValidIpccCode(value) {
28
+ return EmissionFactorIpccCode.IPCC_CODE_REGEX.test(value);
29
+ }
30
+ toPrimitives() {
31
+ return this.value;
32
+ }
33
+ }
34
+ exports.EmissionFactorIpccCode = EmissionFactorIpccCode;
35
+ EmissionFactorIpccCode.PROPERTY_NAME = 'ipccCode';
36
+ /**
37
+ * IPCC 2006 category code format:
38
+ * sector (1-6) + optional category letter (A-H) + optional sub-category number (1-2 digits)
39
+ * + optional sub-sub-category letter (a-z) + optional roman numeral level.
40
+ * Examples: 1A, 1A3, 1A3b, 1A4a, 2B1, 4A, 1A1ai
41
+ */
42
+ EmissionFactorIpccCode.IPCC_CODE_REGEX = /^[1-6](?:[A-Ha-h](?:[0-9]{1,2}(?:[a-z](?:[ivx]+)?)?)?)?$/;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmissionFactorIpccSubcategory = void 0;
4
+ const String_1 = require("../../../../shared/domain/value-objects/String");
5
+ class EmissionFactorIpccSubcategory extends String_1.String {
6
+ constructor(value, skipDomainValidation) {
7
+ super(value, skipDomainValidation, EmissionFactorIpccSubcategory.PROPERTY_NAME);
8
+ }
9
+ static create(value) {
10
+ String_1.String.guardAgainstEmptyValue(value, EmissionFactorIpccSubcategory.PROPERTY_NAME);
11
+ String_1.String.guardAgainstInvalidType(value, EmissionFactorIpccSubcategory.PROPERTY_NAME);
12
+ return new EmissionFactorIpccSubcategory(value, false);
13
+ }
14
+ static fromPrimitives(primitive) {
15
+ const value = primitive;
16
+ return new EmissionFactorIpccSubcategory(value, true);
17
+ }
18
+ toPrimitives() {
19
+ return this.value;
20
+ }
21
+ }
22
+ exports.EmissionFactorIpccSubcategory = EmissionFactorIpccSubcategory;
23
+ EmissionFactorIpccSubcategory.PROPERTY_NAME = 'ipccSubcategory';
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmissionFactorMethodologicalTier = void 0;
4
+ const String_1 = require("../../../../shared/domain/value-objects/String");
5
+ const MethodologicalTier_1 = require("../enums/MethodologicalTier");
6
+ const InvalidMethodologicalTierError_1 = require("../exceptions/InvalidMethodologicalTierError");
7
+ class EmissionFactorMethodologicalTier extends String_1.String {
8
+ constructor(value, skipDomainValidation) {
9
+ super(value, skipDomainValidation, EmissionFactorMethodologicalTier.PROPERTY_NAME);
10
+ if (skipDomainValidation === false) {
11
+ EmissionFactorMethodologicalTier.validateMethodologicalTier(value);
12
+ }
13
+ }
14
+ static create(value) {
15
+ String_1.String.guardAgainstEmptyValue(value, EmissionFactorMethodologicalTier.PROPERTY_NAME);
16
+ String_1.String.guardAgainstInvalidType(value, EmissionFactorMethodologicalTier.PROPERTY_NAME);
17
+ return new EmissionFactorMethodologicalTier(value, false);
18
+ }
19
+ static fromPrimitives(primitive) {
20
+ return new EmissionFactorMethodologicalTier(primitive, true);
21
+ }
22
+ /**
23
+ * Valida que el valor sea un tier metodológico IPCC soportado.
24
+ */
25
+ static validateMethodologicalTier(value) {
26
+ if (!EmissionFactorMethodologicalTier.VALID_METHODOLOGICAL_TIERS.includes(value)) {
27
+ throw InvalidMethodologicalTierError_1.InvalidMethodologicalTierError.create(value, EmissionFactorMethodologicalTier.VALID_METHODOLOGICAL_TIERS);
28
+ }
29
+ }
30
+ /**
31
+ * Obtiene los tiers metodológicos válidos.
32
+ */
33
+ static getValidMethodologicalTiers() {
34
+ return Object.freeze([...EmissionFactorMethodologicalTier.VALID_METHODOLOGICAL_TIERS]);
35
+ }
36
+ /**
37
+ * Verifica si un valor es un tier metodológico válido.
38
+ */
39
+ static isValidMethodologicalTier(value) {
40
+ return EmissionFactorMethodologicalTier.VALID_METHODOLOGICAL_TIERS.includes(value);
41
+ }
42
+ isTier1() {
43
+ return this.value === MethodologicalTier_1.MethodologicalTier.TIER_1;
44
+ }
45
+ isTier2() {
46
+ return this.value === MethodologicalTier_1.MethodologicalTier.TIER_2;
47
+ }
48
+ isTier3() {
49
+ return this.value === MethodologicalTier_1.MethodologicalTier.TIER_3;
50
+ }
51
+ toPrimitives() {
52
+ return this.value;
53
+ }
54
+ toEnum() {
55
+ return this.value;
56
+ }
57
+ }
58
+ exports.EmissionFactorMethodologicalTier = EmissionFactorMethodologicalTier;
59
+ EmissionFactorMethodologicalTier.PROPERTY_NAME = 'methodologicalTier';
60
+ EmissionFactorMethodologicalTier.VALID_METHODOLOGICAL_TIERS = Object.values(MethodologicalTier_1.MethodologicalTier);
@@ -207,8 +207,9 @@ class ReportInstance extends AggregateRoot_1.AggregateRoot {
207
207
  if (!__classPrivateFieldGet(this, _ReportInstance_dataSnapshot, "f") || Object.keys(__classPrivateFieldGet(this, _ReportInstance_dataSnapshot, "f")).length === 0) {
208
208
  return false;
209
209
  }
210
- // Must have answered all required questionnaire questions (if any)
211
- // TODO: Add validation for required questionnaire answers
210
+ // Required questionnaire questions are guaranteed at creation time: the application layer
211
+ // only creates an instance from a COMPLETED ReportPreparationQuestionnaire and freezes its
212
+ // self-describing answers (QuestionnaireAnswerPrimitives) into this aggregate.
212
213
  return true;
213
214
  }
214
215
  canBeApprovedInternally() {
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,284 @@
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 _ReportPreparationQuestionnaire_instances, _ReportPreparationQuestionnaire_carbonClientId, _ReportPreparationQuestionnaire_reportTemplateId, _ReportPreparationQuestionnaire_reportTemplateVersion, _ReportPreparationQuestionnaire_questions, _ReportPreparationQuestionnaire_answers, _ReportPreparationQuestionnaire_status, _ReportPreparationQuestionnaire_createdAt, _ReportPreparationQuestionnaire_updatedAt, _ReportPreparationQuestionnaire_ensureCanBeModified, _ReportPreparationQuestionnaire_ensureUniqueQuestionIds, _ReportPreparationQuestionnaire_findQuestion, _ReportPreparationQuestionnaire_getQuestionOrThrow, _ReportPreparationQuestionnaire_findAnswer, _ReportPreparationQuestionnaire_getUnansweredRequiredQuestionIds, _ReportPreparationQuestionnaire_calculateCompletion;
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ReportPreparationQuestionnaire = void 0;
16
+ const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
17
+ const ReportPreparationQuestionnaireId_1 = require("../value-objects/ReportPreparationQuestionnaireId");
18
+ const ReportPreparationQuestionnaireStatus_1 = require("../enums/ReportPreparationQuestionnaireStatus");
19
+ const PreparationQuestion_1 = require("../value-objects/PreparationQuestion");
20
+ const PreparationAnswer_1 = require("../value-objects/PreparationAnswer");
21
+ const ReportPreparationQuestionnaireCompletion_1 = require("../value-objects/ReportPreparationQuestionnaireCompletion");
22
+ const PreparationQuestionNotFoundError_1 = require("../exceptions/PreparationQuestionNotFoundError");
23
+ const DuplicatePreparationQuestionError_1 = require("../exceptions/DuplicatePreparationQuestionError");
24
+ const TemplateQuestionCannotBeRemovedError_1 = require("../exceptions/TemplateQuestionCannotBeRemovedError");
25
+ const InvalidPreparationQuestionError_1 = require("../exceptions/InvalidPreparationQuestionError");
26
+ const ReportPreparationQuestionnaireCannotBeModifiedError_1 = require("../exceptions/ReportPreparationQuestionnaireCannotBeModifiedError");
27
+ const ReportPreparationQuestionnaireCannotBeCompletedError_1 = require("../exceptions/ReportPreparationQuestionnaireCannotBeCompletedError");
28
+ const ReportPreparationQuestionnaireCannotBeReopenedError_1 = require("../exceptions/ReportPreparationQuestionnaireCannotBeReopenedError");
29
+ /**
30
+ * Report preparation questionnaire: one per (carbonClientId, reportTemplateId).
31
+ *
32
+ * Questions come from two origins:
33
+ * - TEMPLATE: materialized from the CLIENT_INPUT blocks of the report template (question id = block id).
34
+ * - CUSTOM: added by the client to provide extra information the AI must use.
35
+ *
36
+ * It is a living document reused across reporting periods; each ReportInstance freezes a copy of
37
+ * the self-describing answers (see toQuestionnaireAnswers) at creation time.
38
+ */
39
+ class ReportPreparationQuestionnaire extends AggregateRoot_1.AggregateRoot {
40
+ constructor(props, skipDomainValidation) {
41
+ const id = skipDomainValidation
42
+ ? ReportPreparationQuestionnaireId_1.ReportPreparationQuestionnaireId.fromPrimitives(props.id).toPrimitives()
43
+ : ReportPreparationQuestionnaireId_1.ReportPreparationQuestionnaireId.create(props.id).toPrimitives();
44
+ super({ id }, skipDomainValidation);
45
+ _ReportPreparationQuestionnaire_instances.add(this);
46
+ _ReportPreparationQuestionnaire_carbonClientId.set(this, void 0);
47
+ _ReportPreparationQuestionnaire_reportTemplateId.set(this, void 0);
48
+ _ReportPreparationQuestionnaire_reportTemplateVersion.set(this, void 0);
49
+ _ReportPreparationQuestionnaire_questions.set(this, void 0);
50
+ _ReportPreparationQuestionnaire_answers.set(this, void 0);
51
+ _ReportPreparationQuestionnaire_status.set(this, void 0);
52
+ _ReportPreparationQuestionnaire_createdAt.set(this, void 0);
53
+ _ReportPreparationQuestionnaire_updatedAt.set(this, void 0);
54
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_carbonClientId, props.carbonClientId, "f");
55
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_reportTemplateId, props.reportTemplateId, "f");
56
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_reportTemplateVersion, props.reportTemplateVersion, "f");
57
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_status, props.status, "f");
58
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_createdAt, props.createdAt, "f");
59
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, props.updatedAt, "f");
60
+ if (skipDomainValidation === false) {
61
+ // Initialize with domain validation
62
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_questions, props.questions.map((question) => PreparationQuestion_1.PreparationQuestion.create(question.toPrimitives())), "f");
63
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_answers, props.answers.map((answer) => PreparationAnswer_1.PreparationAnswer.create(answer.toPrimitives())), "f");
64
+ __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_ensureUniqueQuestionIds).call(this);
65
+ }
66
+ else {
67
+ // Initialize from primitives (no domain validation)
68
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_questions, props.questions.map((question) => PreparationQuestion_1.PreparationQuestion.fromPrimitives(question.toPrimitives())), "f");
69
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_answers, props.answers.map((answer) => PreparationAnswer_1.PreparationAnswer.fromPrimitives(answer.toPrimitives())), "f");
70
+ }
71
+ }
72
+ static create(props) {
73
+ const now = new Date().toISOString();
74
+ const fullProps = {
75
+ ...props,
76
+ answers: [],
77
+ status: ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.DRAFT,
78
+ createdAt: now,
79
+ updatedAt: now,
80
+ };
81
+ return new ReportPreparationQuestionnaire(fullProps, false);
82
+ }
83
+ static fromPrimitives(primitives) {
84
+ const props = {
85
+ id: primitives.id,
86
+ carbonClientId: primitives.carbonClientId,
87
+ reportTemplateId: primitives.reportTemplateId,
88
+ reportTemplateVersion: primitives.reportTemplateVersion,
89
+ questions: primitives.questions.map((question) => PreparationQuestion_1.PreparationQuestion.fromPrimitives(question)),
90
+ answers: primitives.answers.map((answer) => PreparationAnswer_1.PreparationAnswer.fromPrimitives(answer)),
91
+ status: primitives.status,
92
+ createdAt: primitives.createdAt,
93
+ updatedAt: primitives.updatedAt,
94
+ };
95
+ return new ReportPreparationQuestionnaire(props, true);
96
+ }
97
+ get toPrimitives() {
98
+ return {
99
+ id: this.id.toPrimitives(),
100
+ carbonClientId: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_carbonClientId, "f"),
101
+ reportTemplateId: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_reportTemplateId, "f"),
102
+ reportTemplateVersion: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_reportTemplateVersion, "f"),
103
+ questions: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").map((question) => question.toPrimitives()),
104
+ answers: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_answers, "f").map((answer) => answer.toPrimitives()),
105
+ status: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f"),
106
+ completion: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_calculateCompletion).call(this).toPrimitives(),
107
+ createdAt: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_createdAt, "f"),
108
+ updatedAt: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_updatedAt, "f"),
109
+ };
110
+ }
111
+ // Getters
112
+ getId() {
113
+ return this.id.toPrimitives();
114
+ }
115
+ getCarbonClientId() {
116
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_carbonClientId, "f");
117
+ }
118
+ getReportTemplateId() {
119
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_reportTemplateId, "f");
120
+ }
121
+ getReportTemplateVersion() {
122
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_reportTemplateVersion, "f");
123
+ }
124
+ getQuestions() {
125
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").map((question) => question.toPrimitives());
126
+ }
127
+ getAnswers() {
128
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_answers, "f").map((answer) => answer.toPrimitives());
129
+ }
130
+ getStatus() {
131
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f");
132
+ }
133
+ getCompletion() {
134
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_calculateCompletion).call(this).toPrimitives();
135
+ }
136
+ getCreatedAt() {
137
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_createdAt, "f");
138
+ }
139
+ getUpdatedAt() {
140
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_updatedAt, "f");
141
+ }
142
+ // Status checks
143
+ isDraft() {
144
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f") === ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.DRAFT;
145
+ }
146
+ isInProgress() {
147
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f") === ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.IN_PROGRESS;
148
+ }
149
+ isCompleted() {
150
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f") === ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.COMPLETED;
151
+ }
152
+ // Business logic - Capabilities
153
+ canBeModified() {
154
+ return !this.isCompleted();
155
+ }
156
+ canBeCompleted() {
157
+ return !this.isCompleted() && __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_calculateCompletion).call(this).isComplete();
158
+ }
159
+ canBeReopened() {
160
+ return this.isCompleted();
161
+ }
162
+ // Business logic - Actions
163
+ addCustomQuestion(question) {
164
+ __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_ensureCanBeModified).call(this, 'add custom question');
165
+ if (!question.isCustom()) {
166
+ throw InvalidPreparationQuestionError_1.InvalidPreparationQuestionError.create(question.getId(), 'only questions with origin CUSTOM can be added to an existing questionnaire');
167
+ }
168
+ if (__classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findQuestion).call(this, question.getId()) !== undefined) {
169
+ throw DuplicatePreparationQuestionError_1.DuplicatePreparationQuestionError.create(this.id.toPrimitives(), question.getId());
170
+ }
171
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_questions, [...__classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f"), question], "f");
172
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, new Date().toISOString(), "f");
173
+ }
174
+ removeCustomQuestion(questionId) {
175
+ __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_ensureCanBeModified).call(this, 'remove custom question');
176
+ const question = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_getQuestionOrThrow).call(this, questionId);
177
+ if (question.isFromTemplate()) {
178
+ throw TemplateQuestionCannotBeRemovedError_1.TemplateQuestionCannotBeRemovedError.create(this.id.toPrimitives(), questionId);
179
+ }
180
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_questions, __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").filter((existing) => existing.getId() !== questionId), "f");
181
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_answers, __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_answers, "f").filter((existing) => existing.getQuestionId() !== questionId), "f");
182
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, new Date().toISOString(), "f");
183
+ }
184
+ answerQuestion(questionId, answer, answeredBy) {
185
+ __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_ensureCanBeModified).call(this, 'answer question');
186
+ const question = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_getQuestionOrThrow).call(this, questionId);
187
+ question.validateAnswer(answer);
188
+ const newAnswer = PreparationAnswer_1.PreparationAnswer.create({
189
+ questionId,
190
+ answer: answer.trim(),
191
+ answeredAt: new Date().toISOString(),
192
+ answeredBy,
193
+ });
194
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_answers, [
195
+ ...__classPrivateFieldGet(this, _ReportPreparationQuestionnaire_answers, "f").filter((existing) => existing.getQuestionId() !== questionId),
196
+ newAnswer,
197
+ ], "f");
198
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_status, ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.IN_PROGRESS, "f");
199
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, new Date().toISOString(), "f");
200
+ }
201
+ complete() {
202
+ if (!this.canBeCompleted()) {
203
+ throw ReportPreparationQuestionnaireCannotBeCompletedError_1.ReportPreparationQuestionnaireCannotBeCompletedError.create(this.id.toPrimitives(), __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f"), __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_calculateCompletion).call(this).toPrimitives(), __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_getUnansweredRequiredQuestionIds).call(this));
204
+ }
205
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_status, ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.COMPLETED, "f");
206
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, new Date().toISOString(), "f");
207
+ }
208
+ reopen() {
209
+ if (!this.canBeReopened()) {
210
+ throw ReportPreparationQuestionnaireCannotBeReopenedError_1.ReportPreparationQuestionnaireCannotBeReopenedError.create(this.id.toPrimitives(), __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f"));
211
+ }
212
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_status, ReportPreparationQuestionnaireStatus_1.ReportPreparationQuestionnaireStatus.IN_PROGRESS, "f");
213
+ __classPrivateFieldSet(this, _ReportPreparationQuestionnaire_updatedAt, new Date().toISOString(), "f");
214
+ }
215
+ /**
216
+ * Self-describing projection of the answers, frozen into a ReportInstance and consumed by the AI.
217
+ * Ordered by question order so the prompt follows the template structure.
218
+ */
219
+ toQuestionnaireAnswers() {
220
+ return [...__classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f")]
221
+ .sort((first, second) => first.getOrder() - second.getOrder())
222
+ .flatMap((question) => {
223
+ const answer = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findAnswer).call(this, question.getId());
224
+ if (answer === undefined) {
225
+ return [];
226
+ }
227
+ return [{
228
+ questionId: question.getId(),
229
+ origin: question.getOrigin(),
230
+ questionText: question.getQuestionText(),
231
+ targetSectionId: question.getTargetSectionId(),
232
+ aiInstruction: question.getAiInstruction(),
233
+ answer: answer.getAnswer(),
234
+ answeredAt: answer.getAnsweredAt(),
235
+ answeredBy: answer.getAnsweredBy(),
236
+ }];
237
+ });
238
+ }
239
+ // Helper methods
240
+ getUnansweredRequiredQuestionIds() {
241
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_getUnansweredRequiredQuestionIds).call(this);
242
+ }
243
+ hasAnswerFor(questionId) {
244
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findAnswer).call(this, questionId) !== undefined;
245
+ }
246
+ }
247
+ exports.ReportPreparationQuestionnaire = ReportPreparationQuestionnaire;
248
+ _ReportPreparationQuestionnaire_carbonClientId = new WeakMap(), _ReportPreparationQuestionnaire_reportTemplateId = new WeakMap(), _ReportPreparationQuestionnaire_reportTemplateVersion = new WeakMap(), _ReportPreparationQuestionnaire_questions = new WeakMap(), _ReportPreparationQuestionnaire_answers = new WeakMap(), _ReportPreparationQuestionnaire_status = new WeakMap(), _ReportPreparationQuestionnaire_createdAt = new WeakMap(), _ReportPreparationQuestionnaire_updatedAt = new WeakMap(), _ReportPreparationQuestionnaire_instances = new WeakSet(), _ReportPreparationQuestionnaire_ensureCanBeModified = function _ReportPreparationQuestionnaire_ensureCanBeModified(attemptedAction) {
249
+ if (!this.canBeModified()) {
250
+ throw ReportPreparationQuestionnaireCannotBeModifiedError_1.ReportPreparationQuestionnaireCannotBeModifiedError.create(this.id.toPrimitives(), __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_status, "f"), attemptedAction);
251
+ }
252
+ }, _ReportPreparationQuestionnaire_ensureUniqueQuestionIds = function _ReportPreparationQuestionnaire_ensureUniqueQuestionIds() {
253
+ const seenQuestionIds = new Set();
254
+ __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").forEach((question) => {
255
+ if (seenQuestionIds.has(question.getId())) {
256
+ throw DuplicatePreparationQuestionError_1.DuplicatePreparationQuestionError.create(this.id.toPrimitives(), question.getId());
257
+ }
258
+ seenQuestionIds.add(question.getId());
259
+ });
260
+ }, _ReportPreparationQuestionnaire_findQuestion = function _ReportPreparationQuestionnaire_findQuestion(questionId) {
261
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").find((question) => question.getId() === questionId);
262
+ }, _ReportPreparationQuestionnaire_getQuestionOrThrow = function _ReportPreparationQuestionnaire_getQuestionOrThrow(questionId) {
263
+ const question = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findQuestion).call(this, questionId);
264
+ if (question === undefined) {
265
+ throw PreparationQuestionNotFoundError_1.PreparationQuestionNotFoundError.create(this.id.toPrimitives(), questionId);
266
+ }
267
+ return question;
268
+ }, _ReportPreparationQuestionnaire_findAnswer = function _ReportPreparationQuestionnaire_findAnswer(questionId) {
269
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_answers, "f").find((answer) => answer.getQuestionId() === questionId);
270
+ }, _ReportPreparationQuestionnaire_getUnansweredRequiredQuestionIds = function _ReportPreparationQuestionnaire_getUnansweredRequiredQuestionIds() {
271
+ return __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f")
272
+ .filter((question) => question.isRequired() && __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findAnswer).call(this, question.getId()) === undefined)
273
+ .map((question) => question.getId());
274
+ }, _ReportPreparationQuestionnaire_calculateCompletion = function _ReportPreparationQuestionnaire_calculateCompletion() {
275
+ const requiredQuestions = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").filter((question) => question.isRequired());
276
+ const answeredRequired = requiredQuestions.filter((question) => __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findAnswer).call(this, question.getId()) !== undefined);
277
+ const answeredTotal = __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").filter((question) => __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_instances, "m", _ReportPreparationQuestionnaire_findAnswer).call(this, question.getId()) !== undefined);
278
+ return ReportPreparationQuestionnaireCompletion_1.ReportPreparationQuestionnaireCompletion.create({
279
+ answeredRequired: answeredRequired.length,
280
+ totalRequired: requiredQuestions.length,
281
+ answeredTotal: answeredTotal.length,
282
+ totalQuestions: __classPrivateFieldGet(this, _ReportPreparationQuestionnaire_questions, "f").length,
283
+ });
284
+ };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReportPreparationQuestionnaireStatus = void 0;
4
+ /**
5
+ * Report preparation questionnaire status enumeration
6
+ * Defines the lifecycle states of a client questionnaire for a report template
7
+ */
8
+ var ReportPreparationQuestionnaireStatus;
9
+ (function (ReportPreparationQuestionnaireStatus) {
10
+ /**
11
+ * Draft - Questionnaire created, no answers yet
12
+ */
13
+ ReportPreparationQuestionnaireStatus["DRAFT"] = "DRAFT";
14
+ /**
15
+ * In progress - At least one answer provided (or reopened after completion)
16
+ */
17
+ ReportPreparationQuestionnaireStatus["IN_PROGRESS"] = "IN_PROGRESS";
18
+ /**
19
+ * Completed - All required questions answered; report instances can be created from it
20
+ */
21
+ ReportPreparationQuestionnaireStatus["COMPLETED"] = "COMPLETED";
22
+ })(ReportPreparationQuestionnaireStatus || (exports.ReportPreparationQuestionnaireStatus = ReportPreparationQuestionnaireStatus = {}));