@carbonbox/domain 0.54.0 → 0.55.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 (135) hide show
  1. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT.js +10 -0
  2. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_SIZE_IN_BYTES.js +11 -0
  3. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.js +201 -6
  4. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/enums/SubmissionEvidenceContentType.js +21 -0
  5. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceContentTypeNotAllowedError.js +34 -0
  6. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceLimitReachedError.js +31 -0
  7. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceNotFoundError.js +31 -0
  8. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceTooLargeError.js +32 -0
  9. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionInvalidStatusTransitionError.js +35 -0
  10. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidence.js +2 -0
  11. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidencePrimitives.js +2 -0
  12. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChange.js +2 -0
  13. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChangePrimitives.js +2 -0
  14. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceContentType.js +44 -0
  15. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceFileName.js +36 -0
  16. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceId.js +40 -0
  17. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceSizeInBytes.js +33 -0
  18. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceStorageObjectKey.js +31 -0
  19. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedAt.js +26 -0
  20. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedByStakeholder.js +54 -0
  21. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidences.js +108 -0
  22. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedAt.js +27 -0
  23. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedByStakeholder.js +54 -0
  24. package/build/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusHistory.js +114 -0
  25. package/build/carbonbox/carbon-footprint-audits/audit-findings/domain/enums/AuditFindingSubjectType.js +8 -0
  26. package/build/carbonbox/emission-calculation-results/emission-calculations/domain/entity/EmissionCalculation.js +11 -2
  27. package/build/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValue.js +2 -0
  28. package/build/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValuePrimitives.js +2 -0
  29. package/build/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationCalculationVariableValues.js +85 -0
  30. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactor.js +2 -0
  31. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactorPrimitives.js +2 -0
  32. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotential.js +2 -0
  33. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotentialPrimitives.js +2 -0
  34. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultEmissionFactor.js +64 -16
  35. package/build/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGlobalWarmingPotential.js +57 -16
  36. package/build/carbonbox/shared/domain/enums/ErrorCode.js +6 -0
  37. package/build/carbonbox/shared/domain/enums/SemanticUuidPrefix.js +1 -0
  38. package/build/carbonbox/stakeholders/shared/domain/constants/CARBON_AUDITOR_PERMISSION_CEILING.js +2 -0
  39. package/build/main/index.js +64 -23
  40. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT.d.ts +8 -0
  41. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT.d.ts.map +1 -0
  42. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_SIZE_IN_BYTES.d.ts +9 -0
  43. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_SIZE_IN_BYTES.d.ts.map +1 -0
  44. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts +63 -0
  45. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/ActivityDataSubmission.d.ts.map +1 -1
  46. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts +4 -0
  47. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/entity/IActivityDataSubmission.d.ts.map +1 -1
  48. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/enums/SubmissionEvidenceContentType.d.ts +18 -0
  49. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/enums/SubmissionEvidenceContentType.d.ts.map +1 -0
  50. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceContentTypeNotAllowedError.d.ts +11 -0
  51. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceContentTypeNotAllowedError.d.ts.map +1 -0
  52. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceLimitReachedError.d.ts +10 -0
  53. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceLimitReachedError.d.ts.map +1 -0
  54. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceNotFoundError.d.ts +10 -0
  55. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceNotFoundError.d.ts.map +1 -0
  56. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceTooLargeError.d.ts +10 -0
  57. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionEvidenceTooLargeError.d.ts.map +1 -0
  58. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionInvalidStatusTransitionError.d.ts +13 -0
  59. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/exceptions/ActivityDataSubmissionInvalidStatusTransitionError.d.ts.map +1 -0
  60. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidence.d.ts +17 -0
  61. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidence.d.ts.map +1 -0
  62. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidencePrimitives.d.ts +15 -0
  63. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionEvidencePrimitives.d.ts.map +1 -0
  64. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts +4 -0
  65. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionPrimitives.d.ts.map +1 -1
  66. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts +4 -0
  67. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionProps.d.ts.map +1 -1
  68. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChange.d.ts +13 -0
  69. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChange.d.ts.map +1 -0
  70. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChangePrimitives.d.ts +12 -0
  71. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/types/ActivityDataSubmissionStatusChangePrimitives.d.ts.map +1 -0
  72. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceContentType.d.ts +21 -0
  73. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceContentType.d.ts.map +1 -0
  74. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceFileName.d.ts +15 -0
  75. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceFileName.d.ts.map +1 -0
  76. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceId.d.ts +15 -0
  77. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceId.d.ts.map +1 -0
  78. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceSizeInBytes.d.ts +14 -0
  79. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceSizeInBytes.d.ts.map +1 -0
  80. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceStorageObjectKey.d.ts +14 -0
  81. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceStorageObjectKey.d.ts.map +1 -0
  82. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedAt.d.ts +12 -0
  83. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedAt.d.ts.map +1 -0
  84. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedByStakeholder.d.ts +18 -0
  85. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidenceUploadedByStakeholder.d.ts.map +1 -0
  86. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidences.d.ts +30 -0
  87. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionEvidences.d.ts.map +1 -0
  88. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedAt.d.ts +13 -0
  89. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedAt.d.ts.map +1 -0
  90. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedByStakeholder.d.ts +18 -0
  91. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusChangedByStakeholder.d.ts.map +1 -0
  92. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusHistory.d.ts +39 -0
  93. package/build/types/carbonbox/activity-data-collection/activity-data-submissions/domain/value-objects/ActivityDataSubmissionStatusHistory.d.ts.map +1 -0
  94. package/build/types/carbonbox/carbon-footprint-audits/audit-findings/domain/enums/AuditFindingSubjectType.d.ts +8 -0
  95. package/build/types/carbonbox/carbon-footprint-audits/audit-findings/domain/enums/AuditFindingSubjectType.d.ts.map +1 -1
  96. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/entity/EmissionCalculation.d.ts +2 -0
  97. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/entity/EmissionCalculation.d.ts.map +1 -1
  98. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/entity/IEmissionCalculation.d.ts +2 -0
  99. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/entity/IEmissionCalculation.d.ts.map +1 -1
  100. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValue.d.ts +13 -0
  101. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValue.d.ts.map +1 -0
  102. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValuePrimitives.d.ts +11 -0
  103. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/AppliedCalculationVariableValuePrimitives.d.ts.map +1 -0
  104. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationPrimitives.d.ts +2 -0
  105. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationPrimitives.d.ts.map +1 -1
  106. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationProps.d.ts +2 -0
  107. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/types/EmissionCalculationProps.d.ts.map +1 -1
  108. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationCalculationVariableValues.d.ts +27 -0
  109. package/build/types/carbonbox/emission-calculation-results/emission-calculations/domain/value-objects/EmissionCalculationCalculationVariableValues.d.ts.map +1 -0
  110. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/repository/IGHGEmissionResultRepository.d.ts +6 -0
  111. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/repository/IGHGEmissionResultRepository.d.ts.map +1 -1
  112. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactor.d.ts +13 -0
  113. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactor.d.ts.map +1 -0
  114. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactorPrimitives.d.ts +11 -0
  115. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedEmissionFactorPrimitives.d.ts.map +1 -0
  116. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotential.d.ts +12 -0
  117. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotential.d.ts.map +1 -0
  118. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotentialPrimitives.d.ts +10 -0
  119. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/AppliedGlobalWarmingPotentialPrimitives.d.ts.map +1 -0
  120. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultPrimitives.d.ts +4 -2
  121. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultPrimitives.d.ts.map +1 -1
  122. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultProps.d.ts +4 -2
  123. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/types/GHGEmissionResultProps.d.ts.map +1 -1
  124. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultEmissionFactor.d.ts +25 -5
  125. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultEmissionFactor.d.ts.map +1 -1
  126. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGlobalWarmingPotential.d.ts +20 -5
  127. package/build/types/carbonbox/emission-calculation-results/ghg-emission-results/domain/value-objects/GHGEmissionResultGlobalWarmingPotential.d.ts.map +1 -1
  128. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts +5 -0
  129. package/build/types/carbonbox/shared/domain/enums/ErrorCode.d.ts.map +1 -1
  130. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts +1 -0
  131. package/build/types/carbonbox/shared/domain/enums/SemanticUuidPrefix.d.ts.map +1 -1
  132. package/build/types/carbonbox/stakeholders/shared/domain/constants/CARBON_AUDITOR_PERMISSION_CEILING.d.ts.map +1 -1
  133. package/build/types/main/index.d.ts +30 -0
  134. package/build/types/main/index.d.ts.map +1 -1
  135. package/package.json +1 -1
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT = void 0;
4
+ /**
5
+ * Most evidences (supporting documents) one activity data submission holds: 20 (AUD-D21).
6
+ *
7
+ * A submission is one activity for one period (the invoices of a year fit); the cap keeps the
8
+ * record bounded. More documents go in a single PDF or workbook.
9
+ */
10
+ exports.ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT = 20;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_SIZE_IN_BYTES = void 0;
4
+ /**
5
+ * Largest evidence (supporting document) an activity data submission accepts: 25 MiB (AUD-D21).
6
+ *
7
+ * Enough for a scanned multi-page invoice, a phone photo or a yearly consumption workbook, and
8
+ * small enough to upload from the browser in one request. The backend uses it as the size
9
+ * condition of the upload URL and the web checks it before uploading.
10
+ */
11
+ exports.ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_SIZE_IN_BYTES = 25 * 1024 * 1024;
@@ -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 _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;
13
+ var _ActivityDataSubmission_instances, _a, _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, _ActivityDataSubmission_statusHistory, _ActivityDataSubmission_evidences, _ActivityDataSubmission_withStatusChange, _ActivityDataSubmission_toProps, _ActivityDataSubmission_guardAgainstInvalidTransitionTo, _ActivityDataSubmission_guardAgainstStatusOutside, _ActivityDataSubmission_guardAgainstStatusDifferentFromLastChange;
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ActivityDataSubmission = void 0;
16
16
  const AggregateRoot_1 = require("../../../../shared/domain/entities/AggregateRoot");
@@ -40,12 +40,38 @@ const ActivityDataSubmissionStatus_1 = require("../value-objects/ActivityDataSub
40
40
  const ActivityDataSubmissionSubmittedAt_1 = require("../value-objects/ActivityDataSubmissionSubmittedAt");
41
41
  const ActivityDataSubmissionSubScope_1 = require("../value-objects/ActivityDataSubmissionSubScope");
42
42
  const ActivityDataSubmissionUncertaintySource_1 = require("../value-objects/ActivityDataSubmissionUncertaintySource");
43
+ const ActivityDataSubmissionStatusHistory_1 = require("../value-objects/ActivityDataSubmissionStatusHistory");
44
+ const ActivityDataSubmissionStatusChangedAt_1 = require("../value-objects/ActivityDataSubmissionStatusChangedAt");
45
+ const ActivityDataSubmissionEvidences_1 = require("../value-objects/ActivityDataSubmissionEvidences");
46
+ const ActivityDataSubmissionEvidenceId_1 = require("../value-objects/ActivityDataSubmissionEvidenceId");
47
+ const SubmissionStatus_1 = require("../enums/SubmissionStatus");
48
+ const ActivityDataSubmissionInvalidStatusTransitionError_1 = require("../exceptions/ActivityDataSubmissionInvalidStatusTransitionError");
49
+ const ActivityDataSubmissionEvidenceLimitReachedError_1 = require("../exceptions/ActivityDataSubmissionEvidenceLimitReachedError");
50
+ const ActivityDataSubmissionEvidenceNotFoundError_1 = require("../exceptions/ActivityDataSubmissionEvidenceNotFoundError");
51
+ const ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT_1 = require("../constants/ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT");
52
+ /**
53
+ * ActivityDataSubmission aggregate: the activity data of one form for one period.
54
+ *
55
+ * Lifecycle (AUD-D22): DRAFT → SUBMITTED → APPROVED | REJECTED; REJECTED → SUBMITTED (resubmitted
56
+ * after correcting it); APPROVED | REJECTED → ARCHIVED. `submit`, `approve`, `reject` and `archive`
57
+ * receive who acts and the current moment (`DD/MM/YYYY HH:mm:ss`; the domain does not read the
58
+ * clock), append the change to `statusHistory` and return a new instance. `submittedAt`,
59
+ * `approvedAt`, `rejectedAt` and `rejectionReason` keep the last moment of each change, as before.
60
+ *
61
+ * Evidences (AUD-D21): `addEvidence` while the submission is not ARCHIVED (a carbon client can
62
+ * attach a document after approval to answer a verifier) and `removeEvidence` only while it is
63
+ * DRAFT or REJECTED, so a document that backed a submitted figure cannot disappear.
64
+ *
65
+ * Invariant: the current status is the status of the last history entry (DRAFT with an empty
66
+ * history).
67
+ */
43
68
  class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
44
69
  constructor(props, skipDomainValidation) {
45
70
  const id = skipDomainValidation
46
71
  ? ActivityDataSubmissionId_1.ActivityDataSubmissionId.fromPrimitives(props.id).toPrimitives()
47
72
  : ActivityDataSubmissionId_1.ActivityDataSubmissionId.create(props.id).toPrimitives();
48
73
  super({ id }, skipDomainValidation);
74
+ _ActivityDataSubmission_instances.add(this);
49
75
  _ActivityDataSubmission_dynamicFormCode.set(this, void 0);
50
76
  _ActivityDataSubmission_carbonClient.set(this, void 0);
51
77
  _ActivityDataSubmission_footprintType.set(this, void 0);
@@ -68,6 +94,8 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
68
94
  _ActivityDataSubmission_approvedAt.set(this, void 0);
69
95
  _ActivityDataSubmission_rejectedAt.set(this, void 0);
70
96
  _ActivityDataSubmission_rejectionReason.set(this, void 0);
97
+ _ActivityDataSubmission_statusHistory.set(this, void 0);
98
+ _ActivityDataSubmission_evidences.set(this, void 0);
71
99
  if (skipDomainValidation === false) {
72
100
  __classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.create(props.dynamicFormCode), "f");
73
101
  __classPrivateFieldSet(this, _ActivityDataSubmission_carbonClient, ActivityDataSubmissionCarbonClient_1.ActivityDataSubmissionCarbonClient.create(props.carbonClient), "f");
@@ -91,8 +119,11 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
91
119
  __classPrivateFieldSet(this, _ActivityDataSubmission_approvedAt, ActivityDataSubmissionApprovedAt_1.ActivityDataSubmissionApprovedAt.create(props.approvedAt), "f");
92
120
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectedAt, ActivityDataSubmissionRejectedAt_1.ActivityDataSubmissionRejectedAt.create(props.rejectedAt), "f");
93
121
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.create(props.rejectionReason), "f");
94
- ActivityDataSubmission.guardAgainstInvalidPeriodRange(props.periodStart, props.periodEnd);
95
- ActivityDataSubmission.guardAgainstFacilityOnNonCorporateFootprint(props.facility, props.footprintType);
122
+ __classPrivateFieldSet(this, _ActivityDataSubmission_statusHistory, ActivityDataSubmissionStatusHistory_1.ActivityDataSubmissionStatusHistory.create(props.statusHistory), "f");
123
+ __classPrivateFieldSet(this, _ActivityDataSubmission_evidences, ActivityDataSubmissionEvidences_1.ActivityDataSubmissionEvidences.create(props.evidences), "f");
124
+ _a.guardAgainstInvalidPeriodRange(props.periodStart, props.periodEnd);
125
+ _a.guardAgainstFacilityOnNonCorporateFootprint(props.facility, props.footprintType);
126
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstStatusDifferentFromLastChange).call(this);
96
127
  }
97
128
  else {
98
129
  __classPrivateFieldSet(this, _ActivityDataSubmission_dynamicFormCode, ActivityDataSubmissionDynamicFormCode_1.ActivityDataSubmissionDynamicFormCode.fromPrimitives(props.dynamicFormCode), "f");
@@ -117,6 +148,8 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
117
148
  __classPrivateFieldSet(this, _ActivityDataSubmission_approvedAt, ActivityDataSubmissionApprovedAt_1.ActivityDataSubmissionApprovedAt.fromPrimitives(props.approvedAt), "f");
118
149
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectedAt, ActivityDataSubmissionRejectedAt_1.ActivityDataSubmissionRejectedAt.fromPrimitives(props.rejectedAt), "f");
119
150
  __classPrivateFieldSet(this, _ActivityDataSubmission_rejectionReason, ActivityDataSubmissionRejectionReason_1.ActivityDataSubmissionRejectionReason.fromPrimitives(props.rejectionReason), "f");
151
+ __classPrivateFieldSet(this, _ActivityDataSubmission_statusHistory, ActivityDataSubmissionStatusHistory_1.ActivityDataSubmissionStatusHistory.fromPrimitives(props.statusHistory), "f");
152
+ __classPrivateFieldSet(this, _ActivityDataSubmission_evidences, ActivityDataSubmissionEvidences_1.ActivityDataSubmissionEvidences.fromPrimitives(props.evidences), "f");
120
153
  }
121
154
  }
122
155
  /**
@@ -146,7 +179,7 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
146
179
  }
147
180
  }
148
181
  static create(props) {
149
- return new ActivityDataSubmission(props, false);
182
+ return new _a(props, false);
150
183
  }
151
184
  static fromPrimitives(primitives) {
152
185
  const props = {
@@ -173,8 +206,10 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
173
206
  approvedAt: primitives.approvedAt,
174
207
  rejectedAt: primitives.rejectedAt,
175
208
  rejectionReason: primitives.rejectionReason,
209
+ statusHistory: primitives.statusHistory,
210
+ evidences: primitives.evidences,
176
211
  };
177
- return new ActivityDataSubmission(props, true);
212
+ return new _a(props, true);
178
213
  }
179
214
  get toPrimitives() {
180
215
  return {
@@ -201,6 +236,8 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
201
236
  approvedAt: __classPrivateFieldGet(this, _ActivityDataSubmission_approvedAt, "f").toPrimitives(),
202
237
  rejectedAt: __classPrivateFieldGet(this, _ActivityDataSubmission_rejectedAt, "f").toPrimitives(),
203
238
  rejectionReason: __classPrivateFieldGet(this, _ActivityDataSubmission_rejectionReason, "f").toPrimitives(),
239
+ statusHistory: __classPrivateFieldGet(this, _ActivityDataSubmission_statusHistory, "f").toPrimitives(),
240
+ evidences: __classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").toPrimitives(),
204
241
  };
205
242
  }
206
243
  get dynamicFormCode() {
@@ -269,6 +306,164 @@ class ActivityDataSubmission extends AggregateRoot_1.AggregateRoot {
269
306
  get rejectionReason() {
270
307
  return __classPrivateFieldGet(this, _ActivityDataSubmission_rejectionReason, "f");
271
308
  }
309
+ get statusHistory() {
310
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_statusHistory, "f");
311
+ }
312
+ get evidences() {
313
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f");
314
+ }
315
+ /**
316
+ * Returns the submission sent for review at `now` (from DRAFT, or from REJECTED after correcting
317
+ * it). Otherwise ActivityDataSubmissionInvalidStatusTransitionError.
318
+ */
319
+ submit(now, submittedByStakeholder) {
320
+ const changedAt = ActivityDataSubmissionStatusChangedAt_1.ActivityDataSubmissionStatusChangedAt.create(now).toPrimitives();
321
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstInvalidTransitionTo).call(this, SubmissionStatus_1.SubmissionStatus.SUBMITTED, 'submit');
322
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_withStatusChange).call(this, SubmissionStatus_1.SubmissionStatus.SUBMITTED, changedAt, submittedByStakeholder, null, {
323
+ submittedAt: changedAt,
324
+ });
325
+ }
326
+ /**
327
+ * Returns the submission approved at `now` (only from SUBMITTED). Otherwise
328
+ * ActivityDataSubmissionInvalidStatusTransitionError.
329
+ */
330
+ approve(now, approvedByStakeholder) {
331
+ const changedAt = ActivityDataSubmissionStatusChangedAt_1.ActivityDataSubmissionStatusChangedAt.create(now).toPrimitives();
332
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstInvalidTransitionTo).call(this, SubmissionStatus_1.SubmissionStatus.APPROVED, 'approve');
333
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_withStatusChange).call(this, SubmissionStatus_1.SubmissionStatus.APPROVED, changedAt, approvedByStakeholder, null, {
334
+ approvedAt: changedAt,
335
+ });
336
+ }
337
+ /**
338
+ * Returns the submission rejected at `now` with the reason shown to whoever filled it (only from
339
+ * SUBMITTED). The reason is required (InvalidPropertyValueError when empty) and clears the
340
+ * previous approval moment.
341
+ */
342
+ reject(now, rejectedByStakeholder, reason) {
343
+ const changedAt = ActivityDataSubmissionStatusChangedAt_1.ActivityDataSubmissionStatusChangedAt.create(now).toPrimitives();
344
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstInvalidTransitionTo).call(this, SubmissionStatus_1.SubmissionStatus.REJECTED, 'reject');
345
+ if (typeof reason !== 'string' || reason.trim() === '') {
346
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create('reason', 'a reason when rejecting an activity data submission', String(reason));
347
+ }
348
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_withStatusChange).call(this, SubmissionStatus_1.SubmissionStatus.REJECTED, changedAt, rejectedByStakeholder, reason, {
349
+ rejectedAt: changedAt,
350
+ rejectionReason: reason.trim(),
351
+ approvedAt: null,
352
+ });
353
+ }
354
+ /**
355
+ * Returns the submission archived at `now` (from APPROVED or REJECTED), with an optional reason.
356
+ * Otherwise ActivityDataSubmissionInvalidStatusTransitionError.
357
+ */
358
+ archive(now, archivedByStakeholder, reason) {
359
+ const changedAt = ActivityDataSubmissionStatusChangedAt_1.ActivityDataSubmissionStatusChangedAt.create(now).toPrimitives();
360
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstInvalidTransitionTo).call(this, SubmissionStatus_1.SubmissionStatus.ARCHIVED, 'archive');
361
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_withStatusChange).call(this, SubmissionStatus_1.SubmissionStatus.ARCHIVED, changedAt, archivedByStakeholder, reason, {});
362
+ }
363
+ /**
364
+ * Returns the submission with one more evidence at the end. Allowed while the submission is not
365
+ * ARCHIVED (ActivityDataSubmissionInvalidStatusTransitionError); at most
366
+ * ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT evidences (ActivityDataSubmissionEvidenceLimitReachedError).
367
+ * The evidence is validated: content type (ActivityDataSubmissionEvidenceContentTypeNotAllowedError),
368
+ * size (ActivityDataSubmissionEvidenceTooLargeError), uploader role, unique id and storage key.
369
+ */
370
+ addEvidence(evidence) {
371
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstStatusOutside).call(this, _a.EVIDENCE_ADDABLE_STATUSES, 'add an evidence to');
372
+ if (__classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").isFull()) {
373
+ throw ActivityDataSubmissionEvidenceLimitReachedError_1.ActivityDataSubmissionEvidenceLimitReachedError.create(this.id.toPrimitives(), ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT_1.ACTIVITY_DATA_SUBMISSION_EVIDENCE_MAX_COUNT);
374
+ }
375
+ return _a.create({
376
+ ...__classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_toProps).call(this),
377
+ evidences: [...__classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").toPrimitives(), evidence],
378
+ });
379
+ }
380
+ /**
381
+ * Returns the submission without the evidence of the given id. Allowed only while the submission
382
+ * is DRAFT or REJECTED (ActivityDataSubmissionInvalidStatusTransitionError); an unknown id raises
383
+ * ActivityDataSubmissionEvidenceNotFoundError. Deleting the stored file is up to the caller.
384
+ */
385
+ removeEvidence(evidenceId) {
386
+ const id = ActivityDataSubmissionEvidenceId_1.ActivityDataSubmissionEvidenceId.create(evidenceId).toPrimitives();
387
+ __classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_guardAgainstStatusOutside).call(this, _a.EVIDENCE_REMOVABLE_STATUSES, 'remove an evidence from');
388
+ if (__classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").includes(id) === false) {
389
+ throw ActivityDataSubmissionEvidenceNotFoundError_1.ActivityDataSubmissionEvidenceNotFoundError.create(this.id.toPrimitives(), id);
390
+ }
391
+ return _a.create({
392
+ ...__classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_toProps).call(this),
393
+ evidences: __classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").toPrimitives().filter((evidence) => evidence.id !== id),
394
+ });
395
+ }
396
+ /**
397
+ * The evidence with the given id, or null when the submission does not have it.
398
+ */
399
+ findEvidence(evidenceId) {
400
+ return __classPrivateFieldGet(this, _ActivityDataSubmission_evidences, "f").findById(evidenceId);
401
+ }
272
402
  }
273
403
  exports.ActivityDataSubmission = ActivityDataSubmission;
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();
404
+ _a = ActivityDataSubmission, _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(), _ActivityDataSubmission_statusHistory = new WeakMap(), _ActivityDataSubmission_evidences = new WeakMap(), _ActivityDataSubmission_instances = new WeakSet(), _ActivityDataSubmission_withStatusChange = function _ActivityDataSubmission_withStatusChange(status, changedAt, changedByStakeholder, reason, changes) {
405
+ const statusHistory = __classPrivateFieldGet(this, _ActivityDataSubmission_statusHistory, "f").append({
406
+ status,
407
+ changedByStakeholder,
408
+ changedAt,
409
+ reason,
410
+ });
411
+ return _a.create({
412
+ ...__classPrivateFieldGet(this, _ActivityDataSubmission_instances, "m", _ActivityDataSubmission_toProps).call(this),
413
+ ...changes,
414
+ status,
415
+ statusHistory: statusHistory.toPrimitives(),
416
+ });
417
+ }, _ActivityDataSubmission_toProps = function _ActivityDataSubmission_toProps() {
418
+ const primitives = this.toPrimitives;
419
+ return {
420
+ id: primitives.id,
421
+ dynamicFormCode: primitives.dynamicFormCode,
422
+ carbonClient: primitives.carbonClient,
423
+ footprintType: primitives.footprintType,
424
+ country: primitives.country,
425
+ footprintConfiguration: primitives.footprintConfiguration,
426
+ segmentConfiguration: primitives.segmentConfiguration,
427
+ facility: primitives.facility,
428
+ filledByStakeholder: primitives.filledByStakeholder,
429
+ fieldResponses: primitives.fieldResponses,
430
+ periodStart: primitives.periodStart,
431
+ periodEnd: primitives.periodEnd,
432
+ overallUncertaintyPercentage: primitives.overallUncertaintyPercentage,
433
+ uncertaintySource: primitives.uncertaintySource,
434
+ dataQualityNotes: primitives.dataQualityNotes,
435
+ reportingStandard: primitives.reportingStandard,
436
+ emissionScope: primitives.emissionScope,
437
+ subScope: primitives.subScope,
438
+ status: primitives.status,
439
+ submittedAt: primitives.submittedAt,
440
+ approvedAt: primitives.approvedAt,
441
+ rejectedAt: primitives.rejectedAt,
442
+ rejectionReason: primitives.rejectionReason,
443
+ statusHistory: primitives.statusHistory,
444
+ evidences: primitives.evidences,
445
+ };
446
+ }, _ActivityDataSubmission_guardAgainstInvalidTransitionTo = function _ActivityDataSubmission_guardAgainstInvalidTransitionTo(targetStatus, action) {
447
+ if (__classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").canTransitionTo(targetStatus) === false) {
448
+ throw ActivityDataSubmissionInvalidStatusTransitionError_1.ActivityDataSubmissionInvalidStatusTransitionError.create(__classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").toEnum(), action);
449
+ }
450
+ }, _ActivityDataSubmission_guardAgainstStatusOutside = function _ActivityDataSubmission_guardAgainstStatusOutside(allowedStatuses, action) {
451
+ if (allowedStatuses.includes(__classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").toEnum()) === false) {
452
+ throw ActivityDataSubmissionInvalidStatusTransitionError_1.ActivityDataSubmissionInvalidStatusTransitionError.create(__classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").toEnum(), action);
453
+ }
454
+ }, _ActivityDataSubmission_guardAgainstStatusDifferentFromLastChange = function _ActivityDataSubmission_guardAgainstStatusDifferentFromLastChange() {
455
+ const expectedStatus = __classPrivateFieldGet(this, _ActivityDataSubmission_statusHistory, "f").currentStatus();
456
+ if (expectedStatus !== __classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").toEnum()) {
457
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create('status', `the status of the last history entry (${expectedStatus})`, __classPrivateFieldGet(this, _ActivityDataSubmission_status, "f").toEnum());
458
+ }
459
+ };
460
+ ActivityDataSubmission.EVIDENCE_ADDABLE_STATUSES = [
461
+ SubmissionStatus_1.SubmissionStatus.DRAFT,
462
+ SubmissionStatus_1.SubmissionStatus.SUBMITTED,
463
+ SubmissionStatus_1.SubmissionStatus.APPROVED,
464
+ SubmissionStatus_1.SubmissionStatus.REJECTED,
465
+ ];
466
+ ActivityDataSubmission.EVIDENCE_REMOVABLE_STATUSES = [
467
+ SubmissionStatus_1.SubmissionStatus.DRAFT,
468
+ SubmissionStatus_1.SubmissionStatus.REJECTED,
469
+ ];
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SubmissionEvidenceContentType = void 0;
4
+ /**
5
+ * Content types an evidence (supporting document) of an activity data submission can have
6
+ * (AUD-D21): PDF, images, Excel workbooks (xlsx) and CSV. Values are the canonical MIME types.
7
+ *
8
+ * Browsers do not always report the canonical type (a CSV can arrive as
9
+ * `application/vnd.ms-excel` on Windows): the client derives it from the file extension before
10
+ * requesting the upload, and the domain rejects anything else.
11
+ */
12
+ var SubmissionEvidenceContentType;
13
+ (function (SubmissionEvidenceContentType) {
14
+ SubmissionEvidenceContentType["PDF"] = "application/pdf";
15
+ SubmissionEvidenceContentType["JPEG"] = "image/jpeg";
16
+ SubmissionEvidenceContentType["PNG"] = "image/png";
17
+ SubmissionEvidenceContentType["WEBP"] = "image/webp";
18
+ SubmissionEvidenceContentType["HEIC"] = "image/heic";
19
+ SubmissionEvidenceContentType["XLSX"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
20
+ SubmissionEvidenceContentType["CSV"] = "text/csv";
21
+ })(SubmissionEvidenceContentType || (exports.SubmissionEvidenceContentType = SubmissionEvidenceContentType = {}));
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceContentTypeNotAllowedError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ const SubmissionEvidenceContentType_1 = require("../enums/SubmissionEvidenceContentType");
7
+ /**
8
+ * The evidence of an activity data submission has a content type that is not accepted (AUD-D21).
9
+ * Accepted: PDF, images (JPEG, PNG, WEBP, HEIC), Excel workbooks (xlsx) and CSV.
10
+ */
11
+ class ActivityDataSubmissionEvidenceContentTypeNotAllowedError extends CodedRootError_1.CodedRootError {
12
+ constructor(receivedContentType) {
13
+ const allowedContentTypes = Object.values(SubmissionEvidenceContentType_1.SubmissionEvidenceContentType);
14
+ const technicalMessage = `Evidence content type '${receivedContentType}' is not allowed. Allowed: ${allowedContentTypes.join(', ')}.`;
15
+ const context = {
16
+ receivedContentType,
17
+ allowedContentTypes,
18
+ timestamp: new Date().toISOString(),
19
+ };
20
+ const suggestions = [
21
+ 'Upload the document as PDF, image (JPEG, PNG, WEBP or HEIC), Excel workbook (xlsx) or CSV',
22
+ 'Export legacy spreadsheets (xls) or text documents as xlsx or PDF before uploading',
23
+ ];
24
+ super(ErrorCode_1.ErrorCode.ACTIVITY_DATA_SUBMISSION_EVIDENCE_CONTENT_TYPE_NOT_ALLOWED, technicalMessage, context, suggestions);
25
+ this.name = 'ActivityDataSubmissionEvidenceContentTypeNotAllowedError';
26
+ }
27
+ static create(receivedContentType) {
28
+ return new ActivityDataSubmissionEvidenceContentTypeNotAllowedError(receivedContentType);
29
+ }
30
+ logError() {
31
+ return `${this.name}: ${this.technicalMessage}`;
32
+ }
33
+ }
34
+ exports.ActivityDataSubmissionEvidenceContentTypeNotAllowedError = ActivityDataSubmissionEvidenceContentTypeNotAllowedError;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceLimitReachedError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ /**
7
+ * The activity data submission already holds the most evidences it accepts (AUD-D21).
8
+ */
9
+ class ActivityDataSubmissionEvidenceLimitReachedError extends CodedRootError_1.CodedRootError {
10
+ constructor(activityDataSubmissionId, maxCount) {
11
+ const technicalMessage = `Activity data submission '${activityDataSubmissionId}' cannot hold more than ${maxCount} evidences.`;
12
+ const context = {
13
+ activityDataSubmissionId,
14
+ maxCount,
15
+ timestamp: new Date().toISOString(),
16
+ };
17
+ const suggestions = [
18
+ 'Merge several documents into a single PDF or workbook',
19
+ 'Remove an evidence that is no longer needed (only while the submission is DRAFT or REJECTED)',
20
+ ];
21
+ super(ErrorCode_1.ErrorCode.ACTIVITY_DATA_SUBMISSION_EVIDENCE_LIMIT_REACHED, technicalMessage, context, suggestions);
22
+ this.name = 'ActivityDataSubmissionEvidenceLimitReachedError';
23
+ }
24
+ static create(activityDataSubmissionId, maxCount) {
25
+ return new ActivityDataSubmissionEvidenceLimitReachedError(activityDataSubmissionId, maxCount);
26
+ }
27
+ logError() {
28
+ return `${this.name}: ${this.technicalMessage}`;
29
+ }
30
+ }
31
+ exports.ActivityDataSubmissionEvidenceLimitReachedError = ActivityDataSubmissionEvidenceLimitReachedError;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceNotFoundError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ /**
7
+ * The activity data submission has no evidence with the given id (AUD-D21).
8
+ */
9
+ class ActivityDataSubmissionEvidenceNotFoundError extends CodedRootError_1.CodedRootError {
10
+ constructor(activityDataSubmissionId, evidenceId) {
11
+ const technicalMessage = `Activity data submission '${activityDataSubmissionId}' has no evidence '${evidenceId}'.`;
12
+ const context = {
13
+ activityDataSubmissionId,
14
+ evidenceId,
15
+ timestamp: new Date().toISOString(),
16
+ };
17
+ const suggestions = [
18
+ 'Reload the activity data submission to see its current evidences',
19
+ 'The evidence may have been removed already',
20
+ ];
21
+ super(ErrorCode_1.ErrorCode.ACTIVITY_DATA_SUBMISSION_EVIDENCE_NOT_FOUND, technicalMessage, context, suggestions);
22
+ this.name = 'ActivityDataSubmissionEvidenceNotFoundError';
23
+ }
24
+ static create(activityDataSubmissionId, evidenceId) {
25
+ return new ActivityDataSubmissionEvidenceNotFoundError(activityDataSubmissionId, evidenceId);
26
+ }
27
+ logError() {
28
+ return `${this.name}: ${this.technicalMessage}`;
29
+ }
30
+ }
31
+ exports.ActivityDataSubmissionEvidenceNotFoundError = ActivityDataSubmissionEvidenceNotFoundError;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceTooLargeError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ /**
7
+ * The evidence of an activity data submission is larger than the accepted size (AUD-D21).
8
+ */
9
+ class ActivityDataSubmissionEvidenceTooLargeError extends CodedRootError_1.CodedRootError {
10
+ constructor(receivedSizeInBytes, maxSizeInBytes) {
11
+ const technicalMessage = `Evidence of ${receivedSizeInBytes} bytes exceeds the maximum of ${maxSizeInBytes} bytes.`;
12
+ const context = {
13
+ receivedSizeInBytes,
14
+ maxSizeInBytes,
15
+ timestamp: new Date().toISOString(),
16
+ };
17
+ const suggestions = [
18
+ `Upload files up to ${Math.floor(maxSizeInBytes / (1024 * 1024))} MB`,
19
+ 'Compress the PDF or lower the resolution of the scan before uploading',
20
+ 'Split a large workbook into one file per period',
21
+ ];
22
+ super(ErrorCode_1.ErrorCode.ACTIVITY_DATA_SUBMISSION_EVIDENCE_TOO_LARGE, technicalMessage, context, suggestions);
23
+ this.name = 'ActivityDataSubmissionEvidenceTooLargeError';
24
+ }
25
+ static create(receivedSizeInBytes, maxSizeInBytes) {
26
+ return new ActivityDataSubmissionEvidenceTooLargeError(receivedSizeInBytes, maxSizeInBytes);
27
+ }
28
+ logError() {
29
+ return `${this.name}: ${this.technicalMessage}`;
30
+ }
31
+ }
32
+ exports.ActivityDataSubmissionEvidenceTooLargeError = ActivityDataSubmissionEvidenceTooLargeError;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionInvalidStatusTransitionError = void 0;
4
+ const CodedRootError_1 = require("../../../../shared/domain/exceptions/CodedRootError");
5
+ const ErrorCode_1 = require("../../../../shared/domain/enums/ErrorCode");
6
+ /**
7
+ * The action is not allowed in the current status of the activity data submission (AUD-D22): for
8
+ * example approving a DRAFT, submitting an APPROVED one, or removing an evidence once the data was
9
+ * submitted.
10
+ */
11
+ class ActivityDataSubmissionInvalidStatusTransitionError extends CodedRootError_1.CodedRootError {
12
+ constructor(currentStatus, action) {
13
+ const technicalMessage = `Cannot ${action} an activity data submission in status ${currentStatus}.`;
14
+ const context = {
15
+ currentStatus,
16
+ action,
17
+ timestamp: new Date().toISOString(),
18
+ };
19
+ const suggestions = [
20
+ 'Reload the activity data submission to see its current status',
21
+ 'DRAFT and REJECTED submissions are submitted; SUBMITTED ones are approved or rejected',
22
+ 'APPROVED and REJECTED submissions are archived; ARCHIVED ones cannot change anymore',
23
+ 'Evidences are removed only while the submission is DRAFT or REJECTED',
24
+ ];
25
+ super(ErrorCode_1.ErrorCode.ACTIVITY_DATA_SUBMISSION_INVALID_STATUS_TRANSITION, technicalMessage, context, suggestions);
26
+ this.name = 'ActivityDataSubmissionInvalidStatusTransitionError';
27
+ }
28
+ static create(currentStatus, action) {
29
+ return new ActivityDataSubmissionInvalidStatusTransitionError(currentStatus, action);
30
+ }
31
+ logError() {
32
+ return `${this.name}: ${this.technicalMessage}`;
33
+ }
34
+ }
35
+ exports.ActivityDataSubmissionInvalidStatusTransitionError = ActivityDataSubmissionInvalidStatusTransitionError;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceContentType = void 0;
4
+ const String_1 = require("../../../../shared/domain/value-objects/String");
5
+ const SubmissionEvidenceContentType_1 = require("../enums/SubmissionEvidenceContentType");
6
+ const ActivityDataSubmissionEvidenceContentTypeNotAllowedError_1 = require("../exceptions/ActivityDataSubmissionEvidenceContentTypeNotAllowedError");
7
+ /**
8
+ * Content type of an evidence file (AUD-D21): one of `SubmissionEvidenceContentType` (PDF, images,
9
+ * xlsx, csv). Anything else is rejected with ActivityDataSubmissionEvidenceContentTypeNotAllowedError.
10
+ */
11
+ class ActivityDataSubmissionEvidenceContentType extends String_1.String {
12
+ constructor(value, skipDomainValidation) {
13
+ super(value, skipDomainValidation, ActivityDataSubmissionEvidenceContentType.PROPERTY_NAME);
14
+ }
15
+ static create(value) {
16
+ String_1.String.guardAgainstEmptyValue(value, ActivityDataSubmissionEvidenceContentType.PROPERTY_NAME);
17
+ String_1.String.guardAgainstInvalidType(value, ActivityDataSubmissionEvidenceContentType.PROPERTY_NAME);
18
+ if (ActivityDataSubmissionEvidenceContentType.isAllowed(value) === false) {
19
+ throw ActivityDataSubmissionEvidenceContentTypeNotAllowedError_1.ActivityDataSubmissionEvidenceContentTypeNotAllowedError.create(value);
20
+ }
21
+ return new ActivityDataSubmissionEvidenceContentType(value, false);
22
+ }
23
+ static fromPrimitives(primitive) {
24
+ return new ActivityDataSubmissionEvidenceContentType(primitive, true);
25
+ }
26
+ /**
27
+ * Whether a content type is accepted for an evidence (lets the backend check it before issuing an
28
+ * upload URL).
29
+ */
30
+ static isAllowed(value) {
31
+ return Object.values(SubmissionEvidenceContentType_1.SubmissionEvidenceContentType).includes(value);
32
+ }
33
+ isImage() {
34
+ return this.value.startsWith('image/');
35
+ }
36
+ toPrimitives() {
37
+ return this.value;
38
+ }
39
+ toEnum() {
40
+ return this.value;
41
+ }
42
+ }
43
+ exports.ActivityDataSubmissionEvidenceContentType = ActivityDataSubmissionEvidenceContentType;
44
+ ActivityDataSubmissionEvidenceContentType.PROPERTY_NAME = 'contentType';
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ActivityDataSubmissionEvidenceFileName = void 0;
4
+ const InvalidPropertyValueError_1 = require("../../../../shared/domain/exceptions/InvalidPropertyValueError");
5
+ const String_1 = require("../../../../shared/domain/value-objects/String");
6
+ /**
7
+ * Name of the evidence file as the user uploaded it (AUD-D21), shown in the list and used for the
8
+ * download. A name, not a path: up to 255 characters, without `/` or `\`.
9
+ */
10
+ class ActivityDataSubmissionEvidenceFileName extends String_1.String {
11
+ constructor(value, skipDomainValidation) {
12
+ super(value, skipDomainValidation, ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME);
13
+ }
14
+ static create(value) {
15
+ String_1.String.guardAgainstEmptyValue(value, ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME);
16
+ String_1.String.guardAgainstInvalidType(value, ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME);
17
+ const trimmed = value.trim();
18
+ if (trimmed.length > ActivityDataSubmissionEvidenceFileName.MAX_LENGTH) {
19
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME, `up to ${ActivityDataSubmissionEvidenceFileName.MAX_LENGTH} characters`, `${trimmed.length} characters`);
20
+ }
21
+ if (ActivityDataSubmissionEvidenceFileName.PATH_SEPARATOR_REGEX.test(trimmed)) {
22
+ throw InvalidPropertyValueError_1.InvalidPropertyValueError.create(ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME, 'a file name without path separators', trimmed);
23
+ }
24
+ return new ActivityDataSubmissionEvidenceFileName(trimmed, false);
25
+ }
26
+ static fromPrimitives(primitive) {
27
+ return new ActivityDataSubmissionEvidenceFileName(primitive, true);
28
+ }
29
+ toPrimitives() {
30
+ return this.value;
31
+ }
32
+ }
33
+ exports.ActivityDataSubmissionEvidenceFileName = ActivityDataSubmissionEvidenceFileName;
34
+ ActivityDataSubmissionEvidenceFileName.PROPERTY_NAME = 'fileName';
35
+ ActivityDataSubmissionEvidenceFileName.MAX_LENGTH = 255;
36
+ ActivityDataSubmissionEvidenceFileName.PATH_SEPARATOR_REGEX = /[/\\]/;