clarion-shared-types 1.0.88 → 1.0.90

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 (29) hide show
  1. package/dist/cjs/modules/partner/enums/partner-enums.js +95 -1
  2. package/dist/cjs/modules/partner/enums/partner-enums.js.map +1 -1
  3. package/dist/cjs/modules/partner/index.js +1 -0
  4. package/dist/cjs/modules/partner/index.js.map +1 -1
  5. package/dist/cjs/modules/partner/interfaces/partner-membership.dto.js +3 -0
  6. package/dist/cjs/modules/partner/interfaces/partner-membership.dto.js.map +1 -0
  7. package/dist/cjs/modules/partner/utils/partner-display.util.js +151 -1
  8. package/dist/cjs/modules/partner/utils/partner-display.util.js.map +1 -1
  9. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +13 -0
  10. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  11. package/dist/esm/modules/partner/enums/partner-enums.js +94 -0
  12. package/dist/esm/modules/partner/enums/partner-enums.js.map +1 -1
  13. package/dist/esm/modules/partner/index.js +1 -0
  14. package/dist/esm/modules/partner/index.js.map +1 -1
  15. package/dist/esm/modules/partner/interfaces/partner-membership.dto.js +2 -0
  16. package/dist/esm/modules/partner/interfaces/partner-membership.dto.js.map +1 -0
  17. package/dist/esm/modules/partner/utils/partner-display.util.js +148 -1
  18. package/dist/esm/modules/partner/utils/partner-display.util.js.map +1 -1
  19. package/dist/esm/modules/permission/enums/permission-actions.enum.js +13 -0
  20. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  21. package/dist/types/modules/common/interfaces/pagination.d.ts +8 -0
  22. package/dist/types/modules/partner/enums/partner-enums.d.ts +86 -0
  23. package/dist/types/modules/partner/index.d.ts +1 -0
  24. package/dist/types/modules/partner/interfaces/partner-integration.dto.d.ts +24 -1
  25. package/dist/types/modules/partner/interfaces/partner-membership.dto.d.ts +176 -0
  26. package/dist/types/modules/partner/interfaces/partner-provider.dto.d.ts +10 -0
  27. package/dist/types/modules/partner/utils/partner-display.util.d.ts +51 -1
  28. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +7 -0
  29. package/package.json +1 -1
@@ -9,7 +9,7 @@
9
9
  * compile error.
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PartnerDispatchScope = exports.IncidentPartnerRoutingStatus = exports.PartnerAdapterOperation = exports.PartnerLocationProvider = exports.PartnerDispatchFailureReason = exports.PartnerEngagementState = exports.PartnerDispatchStatus = exports.PartnerCoverageMatchType = exports.PartnerIntegrationStatus = exports.PartnerIntegrationEnvironment = exports.PartnerRoutingMode = exports.PartnerServiceCapability = exports.PartnerProviderCode = void 0;
12
+ exports.PartnerMemberProfileField = exports.PartnerMemberDocumentType = exports.PartnerMemberGender = exports.PartnerMembershipPackageScope = exports.PartnerMemberState = exports.PartnerMembershipSubjectType = exports.PartnerMembershipStatus = exports.PartnerDispatchScope = exports.IncidentPartnerRoutingStatus = exports.PartnerAdapterOperation = exports.PartnerLocationProvider = exports.PartnerDispatchFailureReason = exports.PartnerEngagementState = exports.PartnerDispatchStatus = exports.PartnerCoverageMatchType = exports.PartnerIntegrationStatus = exports.PartnerIntegrationEnvironment = exports.PartnerRoutingMode = exports.PartnerServiceCapability = exports.PartnerProviderCode = void 0;
13
13
  /** The third-party partner behind a partnership. */
14
14
  var PartnerProviderCode;
15
15
  (function (PartnerProviderCode) {
@@ -168,4 +168,98 @@ var PartnerDispatchScope;
168
168
  PartnerDispatchScope["FAILED"] = "FAILED";
169
169
  PartnerDispatchScope["NOT_ROUTED"] = "NOT_ROUTED";
170
170
  })(PartnerDispatchScope || (exports.PartnerDispatchScope = PartnerDispatchScope = {}));
171
+ // --- memberships ---------------------------------------------------------
172
+ /**
173
+ * Where one subscriber's registration with one partner has got to.
174
+ *
175
+ * A membership is an ENRICHMENT and never a gate: nothing in this lifecycle can
176
+ * stop an emergency reaching a partner. A subscriber whose membership is
177
+ * INCOMPLETE_PROFILE or FAILED still has an SOS raised for them, just without a
178
+ * member id attached.
179
+ */
180
+ var PartnerMembershipStatus;
181
+ (function (PartnerMembershipStatus) {
182
+ /** Decided that this person needs registering; not yet created at the partner. */
183
+ PartnerMembershipStatus["PENDING"] = "PENDING";
184
+ /** Blocked on personal details the partner requires and the platform lacks. */
185
+ PartnerMembershipStatus["INCOMPLETE_PROFILE"] = "INCOMPLETE_PROFILE";
186
+ /** A registration call is in flight at the partner. */
187
+ PartnerMembershipStatus["PROVISIONING"] = "PROVISIONING";
188
+ /** The partner has issued a member id. */
189
+ PartnerMembershipStatus["ACTIVE"] = "ACTIVE";
190
+ /** Every attempt failed for a reason retrying cannot fix. */
191
+ PartnerMembershipStatus["FAILED"] = "FAILED";
192
+ /**
193
+ * A registration was made and its outcome is UNKNOWN - the reply was lost.
194
+ * Deliberately a dead end: retrying a call that may have succeeded is how
195
+ * one person acquires two memberships, and a duplicate cannot be undone at
196
+ * the partner.
197
+ */
198
+ PartnerMembershipStatus["NEEDS_REVIEW"] = "NEEDS_REVIEW";
199
+ /** The subscription behind it ended. The member is left in place at the partner. */
200
+ PartnerMembershipStatus["CANCELLED"] = "CANCELLED";
201
+ })(PartnerMembershipStatus || (exports.PartnerMembershipStatus = PartnerMembershipStatus = {}));
202
+ /** Who a membership belongs to, in Clarion's own vocabulary. */
203
+ var PartnerMembershipSubjectType;
204
+ (function (PartnerMembershipSubjectType) {
205
+ PartnerMembershipSubjectType["INDIVIDUAL_SUBSCRIBER"] = "INDIVIDUAL_SUBSCRIBER";
206
+ PartnerMembershipSubjectType["CORPORATE_MEMBER"] = "CORPORATE_MEMBER";
207
+ })(PartnerMembershipSubjectType || (exports.PartnerMembershipSubjectType = PartnerMembershipSubjectType = {}));
208
+ /**
209
+ * A member's standing with the partner, reduced to something every screen can
210
+ * rely on without learning any partner's vocabulary.
211
+ *
212
+ * PENDING_ACTIVATION is the one that matters: a member can exist, hold a real
213
+ * member id, and still not be covered - Rescue.co returns a brand-new member as
214
+ * `waitingPeriod`. A screen that collapses the two tells a subscriber they are
215
+ * covered on the day they paid.
216
+ */
217
+ var PartnerMemberState;
218
+ (function (PartnerMemberState) {
219
+ PartnerMemberState["PENDING_ACTIVATION"] = "PENDING_ACTIVATION";
220
+ PartnerMemberState["ACTIVE"] = "ACTIVE";
221
+ PartnerMemberState["SUSPENDED"] = "SUSPENDED";
222
+ PartnerMemberState["LAPSED"] = "LAPSED";
223
+ PartnerMemberState["UNKNOWN"] = "UNKNOWN";
224
+ })(PartnerMemberState || (exports.PartnerMemberState = PartnerMemberState = {}));
225
+ /** Which packages' subscribers a partnership registers. */
226
+ var PartnerMembershipPackageScope;
227
+ (function (PartnerMembershipPackageScope) {
228
+ PartnerMembershipPackageScope["ALL"] = "ALL";
229
+ PartnerMembershipPackageScope["SELECTED"] = "SELECTED";
230
+ })(PartnerMembershipPackageScope || (exports.PartnerMembershipPackageScope = PartnerMembershipPackageScope = {}));
231
+ /** Gender, in the platform's neutral vocabulary - never a partner's spelling. */
232
+ var PartnerMemberGender;
233
+ (function (PartnerMemberGender) {
234
+ PartnerMemberGender["MALE"] = "MALE";
235
+ PartnerMemberGender["FEMALE"] = "FEMALE";
236
+ PartnerMemberGender["OTHER"] = "OTHER";
237
+ PartnerMemberGender["UNSPECIFIED"] = "UNSPECIFIED";
238
+ })(PartnerMemberGender || (exports.PartnerMemberGender = PartnerMemberGender = {}));
239
+ /** The kind of identity document a partner membership records. */
240
+ var PartnerMemberDocumentType;
241
+ (function (PartnerMemberDocumentType) {
242
+ PartnerMemberDocumentType["PASSPORT"] = "PASSPORT";
243
+ PartnerMemberDocumentType["NATIONAL_ID"] = "NATIONAL_ID";
244
+ PartnerMemberDocumentType["DRIVING_LICENCE"] = "DRIVING_LICENCE";
245
+ PartnerMemberDocumentType["OTHER"] = "OTHER";
246
+ })(PartnerMemberDocumentType || (exports.PartnerMemberDocumentType = PartnerMemberDocumentType = {}));
247
+ /**
248
+ * The provider-neutral facts about a person a partner membership may need.
249
+ *
250
+ * The VALUES are the property names on `PartnerMemberProfileDto`, which is what
251
+ * lets "which of this partner's required fields are missing?" be a generic loop
252
+ * in the admin rather than a per-partner if-ladder.
253
+ */
254
+ var PartnerMemberProfileField;
255
+ (function (PartnerMemberProfileField) {
256
+ PartnerMemberProfileField["FULL_NAME"] = "fullName";
257
+ PartnerMemberProfileField["PHONE_NUMBER"] = "phoneNumber";
258
+ PartnerMemberProfileField["EMAIL"] = "email";
259
+ PartnerMemberProfileField["DATE_OF_BIRTH"] = "dateOfBirth";
260
+ PartnerMemberProfileField["GENDER"] = "gender";
261
+ PartnerMemberProfileField["DOCUMENT_TYPE"] = "documentType";
262
+ PartnerMemberProfileField["DOCUMENT_NUMBER"] = "documentNumber";
263
+ PartnerMemberProfileField["DOCUMENT_COUNTRY_CODE"] = "documentCountryCode";
264
+ })(PartnerMemberProfileField || (exports.PartnerMemberProfileField = PartnerMemberProfileField = {}));
171
265
  //# sourceMappingURL=partner-enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-enums.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-enums.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partner-enums.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-enums.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,7 @@ __exportStar(require("./interfaces/partner-coverage-rule.dto"), exports);
23
23
  __exportStar(require("./interfaces/partner-dispatch-progress.dto"), exports);
24
24
  __exportStar(require("./interfaces/partner-dispatch.dto"), exports);
25
25
  __exportStar(require("./interfaces/incident-partner-routing.dto"), exports);
26
+ __exportStar(require("./interfaces/partner-membership.dto"), exports);
26
27
  // Utilities
27
28
  __exportStar(require("./utils/partner-display.util"), exports);
28
29
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,wDAAsC;AAEtC,oBAAoB;AACpB,oEAAkD;AAClD,uEAAqD;AACrD,yEAAuD;AACvD,6EAA2D;AAC3D,oEAAkD;AAClD,4EAA0D;AAE1D,YAAY;AACZ,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,wDAAsC;AAEtC,oBAAoB;AACpB,oEAAkD;AAClD,uEAAqD;AACrD,yEAAuD;AACvD,6EAA2D;AAC3D,oEAAkD;AAClD,4EAA0D;AAC1D,sEAAoD;AAEpD,YAAY;AACZ,+DAA6C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=partner-membership.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner-membership.dto.js","sourceRoot":"","sources":["../../../../../src/modules/partner/interfaces/partner-membership.dto.ts"],"names":[],"mappings":""}
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PARTNER_COVERAGE_MATCH_TYPE_LABELS = exports.PARTNER_CAPABILITY_LABELS = exports.PARTNER_INTEGRATION_STATUS_LABELS = exports.PARTNER_ROUTING_MODE_LABELS = exports.INCIDENT_PARTNER_ROUTING_STATUS_LABELS = exports.PARTNER_ENGAGEMENT_STATE_LABELS = exports.PARTNER_DISPATCH_STATUS_LABELS = void 0;
3
+ exports.PARTNER_MEMBER_PROFILE_FIELD_LABELS = exports.PARTNER_MEMBER_DOCUMENT_TYPE_LABELS = exports.PARTNER_MEMBER_GENDER_LABELS = exports.PARTNER_MEMBERSHIP_PACKAGE_SCOPE_LABELS = exports.PARTNER_MEMBERSHIP_SUBJECT_TYPE_LABELS = exports.PARTNER_MEMBER_STATE_LABELS = exports.PARTNER_MEMBERSHIP_STATUS_LABELS = exports.PARTNER_COVERAGE_MATCH_TYPE_LABELS = exports.PARTNER_CAPABILITY_LABELS = exports.PARTNER_INTEGRATION_STATUS_LABELS = exports.PARTNER_ROUTING_MODE_LABELS = exports.INCIDENT_PARTNER_ROUTING_STATUS_LABELS = exports.PARTNER_ENGAGEMENT_STATE_LABELS = exports.PARTNER_DISPATCH_STATUS_LABELS = void 0;
4
4
  exports.partnerDispatchStatusTone = partnerDispatchStatusTone;
5
5
  exports.incidentPartnerRoutingTone = incidentPartnerRoutingTone;
6
6
  exports.partnerDispatchActions = partnerDispatchActions;
7
+ exports.partnerMembershipStatusTone = partnerMembershipStatusTone;
8
+ exports.describeMembershipAttention = describeMembershipAttention;
9
+ exports.describeMembershipCover = describeMembershipCover;
7
10
  const partner_enums_1 = require("../enums/partner-enums");
8
11
  /**
9
12
  * Human labels for the partner enums.
@@ -137,4 +140,151 @@ function partnerDispatchActions(status, capabilities = {}) {
137
140
  status === partner_enums_1.PartnerDispatchStatus.EXPIRED,
138
141
  };
139
142
  }
143
+ // --- memberships ---------------------------------------------------------
144
+ /**
145
+ * How a membership's own lifecycle reads on screen.
146
+ *
147
+ * Worded as what an operator should DO, not as an internal state name. Nobody
148
+ * has to know what PROVISIONING means; they have to know whether somebody is
149
+ * waiting on them.
150
+ */
151
+ exports.PARTNER_MEMBERSHIP_STATUS_LABELS = {
152
+ [partner_enums_1.PartnerMembershipStatus.PENDING]: 'Waiting to register',
153
+ [partner_enums_1.PartnerMembershipStatus.INCOMPLETE_PROFILE]: 'Details needed',
154
+ [partner_enums_1.PartnerMembershipStatus.PROVISIONING]: 'Registering',
155
+ [partner_enums_1.PartnerMembershipStatus.ACTIVE]: 'Registered',
156
+ [partner_enums_1.PartnerMembershipStatus.FAILED]: 'Registration failed',
157
+ [partner_enums_1.PartnerMembershipStatus.NEEDS_REVIEW]: 'Check with partner',
158
+ [partner_enums_1.PartnerMembershipStatus.CANCELLED]: 'No longer covered',
159
+ };
160
+ /**
161
+ * How the PARTNER's own view of a member reads.
162
+ *
163
+ * Kept apart from the status above because the two answer different questions,
164
+ * and collapsing them is how somebody gets told they are covered on the day
165
+ * they paid: "Registered" means the partner has issued a member id, and
166
+ * "Waiting period" means their cover has not started.
167
+ */
168
+ exports.PARTNER_MEMBER_STATE_LABELS = {
169
+ [partner_enums_1.PartnerMemberState.PENDING_ACTIVATION]: 'Waiting period',
170
+ [partner_enums_1.PartnerMemberState.ACTIVE]: 'Cover active',
171
+ [partner_enums_1.PartnerMemberState.SUSPENDED]: 'Suspended by partner',
172
+ [partner_enums_1.PartnerMemberState.LAPSED]: 'Ended',
173
+ [partner_enums_1.PartnerMemberState.UNKNOWN]: 'Unknown',
174
+ };
175
+ exports.PARTNER_MEMBERSHIP_SUBJECT_TYPE_LABELS = {
176
+ [partner_enums_1.PartnerMembershipSubjectType.INDIVIDUAL_SUBSCRIBER]: 'Individual subscriber',
177
+ [partner_enums_1.PartnerMembershipSubjectType.CORPORATE_MEMBER]: 'Corporate member',
178
+ };
179
+ exports.PARTNER_MEMBERSHIP_PACKAGE_SCOPE_LABELS = {
180
+ [partner_enums_1.PartnerMembershipPackageScope.ALL]: 'Every package',
181
+ [partner_enums_1.PartnerMembershipPackageScope.SELECTED]: 'Selected packages only',
182
+ };
183
+ exports.PARTNER_MEMBER_GENDER_LABELS = {
184
+ [partner_enums_1.PartnerMemberGender.MALE]: 'Male',
185
+ [partner_enums_1.PartnerMemberGender.FEMALE]: 'Female',
186
+ [partner_enums_1.PartnerMemberGender.OTHER]: 'Other',
187
+ [partner_enums_1.PartnerMemberGender.UNSPECIFIED]: 'Prefer not to say',
188
+ };
189
+ exports.PARTNER_MEMBER_DOCUMENT_TYPE_LABELS = {
190
+ [partner_enums_1.PartnerMemberDocumentType.PASSPORT]: 'Passport',
191
+ [partner_enums_1.PartnerMemberDocumentType.NATIONAL_ID]: 'National ID',
192
+ [partner_enums_1.PartnerMemberDocumentType.DRIVING_LICENCE]: 'Driving licence',
193
+ [partner_enums_1.PartnerMemberDocumentType.OTHER]: 'Other document',
194
+ };
195
+ /** The provider-neutral profile fields, named for a person to read. */
196
+ exports.PARTNER_MEMBER_PROFILE_FIELD_LABELS = {
197
+ [partner_enums_1.PartnerMemberProfileField.FULL_NAME]: 'Full name',
198
+ [partner_enums_1.PartnerMemberProfileField.PHONE_NUMBER]: 'Telephone number',
199
+ [partner_enums_1.PartnerMemberProfileField.EMAIL]: 'Email address',
200
+ [partner_enums_1.PartnerMemberProfileField.DATE_OF_BIRTH]: 'Date of birth',
201
+ [partner_enums_1.PartnerMemberProfileField.GENDER]: 'Gender',
202
+ [partner_enums_1.PartnerMemberProfileField.DOCUMENT_TYPE]: 'Identity document type',
203
+ [partner_enums_1.PartnerMemberProfileField.DOCUMENT_NUMBER]: 'Identity document number',
204
+ [partner_enums_1.PartnerMemberProfileField.DOCUMENT_COUNTRY_CODE]: 'Document country',
205
+ };
206
+ function partnerMembershipStatusTone(status) {
207
+ switch (status) {
208
+ case partner_enums_1.PartnerMembershipStatus.ACTIVE:
209
+ return 'success';
210
+ // Both need a human, and both are the operator's to clear.
211
+ case partner_enums_1.PartnerMembershipStatus.INCOMPLETE_PROFILE:
212
+ case partner_enums_1.PartnerMembershipStatus.NEEDS_REVIEW:
213
+ return 'warn';
214
+ case partner_enums_1.PartnerMembershipStatus.FAILED:
215
+ return 'danger';
216
+ default:
217
+ return 'neutral';
218
+ }
219
+ }
220
+ /**
221
+ * One line saying what a membership is waiting on, or null when nothing is.
222
+ *
223
+ * The whole point of the membership screen. An operator should never have to
224
+ * open a record to find out whether it needs them, and should never be shown a
225
+ * partner's raw error where a plain sentence would do.
226
+ */
227
+ function describeMembershipAttention(membership) {
228
+ var _a, _b;
229
+ switch (membership.status) {
230
+ case partner_enums_1.PartnerMembershipStatus.INCOMPLETE_PROFILE: {
231
+ const fields = (_a = membership.unsatisfiedFields) !== null && _a !== void 0 ? _a : [];
232
+ if (fields.length === 0)
233
+ return 'Some details are still needed.';
234
+ const described = fields.map((entry) => {
235
+ var _a;
236
+ const label = (_a = exports.PARTNER_MEMBER_PROFILE_FIELD_LABELS[entry.field]) !== null && _a !== void 0 ? _a : entry.field;
237
+ // "Missing" and "not usable" are different jobs: one is
238
+ // collecting a fact, the other correcting one.
239
+ return entry.reason === 'MALFORMED'
240
+ ? `${label} is not usable`
241
+ : `${label} is missing`;
242
+ });
243
+ return `Cannot register yet: ${described.join(', ')}.`;
244
+ }
245
+ case partner_enums_1.PartnerMembershipStatus.NEEDS_REVIEW:
246
+ return ('A registration may already have reached the partner. Check with them before ' +
247
+ 'trying again, otherwise this person could be registered twice.');
248
+ case partner_enums_1.PartnerMembershipStatus.FAILED:
249
+ return (_b = membership.lastErrorMessage) !== null && _b !== void 0 ? _b : 'The partner refused this registration.';
250
+ default:
251
+ return null;
252
+ }
253
+ }
254
+ /**
255
+ * What the partner's cover actually says, in a sentence.
256
+ *
257
+ * Separate from the status chip because "registered" and "covered" are
258
+ * different facts, and a partner that starts a member on a waiting period would
259
+ * otherwise be reported as though cover began the day they paid.
260
+ */
261
+ function describeMembershipCover(membership) {
262
+ if (membership.status !== partner_enums_1.PartnerMembershipStatus.ACTIVE)
263
+ return null;
264
+ if (membership.coverActive)
265
+ return 'Cover is active with the partner.';
266
+ if (membership.memberState === partner_enums_1.PartnerMemberState.PENDING_ACTIVATION) {
267
+ return membership.coverageStartsAt
268
+ ? `Registered — partner cover starts ${formatCoverDate(membership.coverageStartsAt)}.`
269
+ : 'Registered — the partner has not started cover yet.';
270
+ }
271
+ if (membership.memberState === partner_enums_1.PartnerMemberState.LAPSED) {
272
+ return 'The partner has ended this membership.';
273
+ }
274
+ if (membership.memberState === partner_enums_1.PartnerMemberState.SUSPENDED) {
275
+ return 'The partner has suspended this membership.';
276
+ }
277
+ return 'Registered with the partner.';
278
+ }
279
+ /** A date a person can read, falling back to the raw value rather than blanking it. */
280
+ function formatCoverDate(value) {
281
+ const parsed = new Date(value);
282
+ if (Number.isNaN(parsed.getTime()))
283
+ return value;
284
+ return parsed.toLocaleDateString(undefined, {
285
+ day: 'numeric',
286
+ month: 'short',
287
+ year: 'numeric',
288
+ });
289
+ }
140
290
  //# sourceMappingURL=partner-display.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-display.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-display.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partner-display.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-display.util.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,19 @@ var PermissionActions;
13
13
  PermissionActions["READ_PARTNER"] = "read:partner";
14
14
  PermissionActions["UPDATE_PARTNER"] = "update:partner";
15
15
  PermissionActions["DELETE_PARTNER"] = "delete:partner";
16
+ // Acting on one routed emergency. These existed on the backend and were
17
+ // never mirrored here, so the admin could not gate on them at all.
18
+ PermissionActions["READ_PARTNER_DISPATCH"] = "read:partner-dispatch";
19
+ PermissionActions["APPROVE_PARTNER_DISPATCH"] = "approve:partner-dispatch";
20
+ PermissionActions["UPDATE_PARTNER_DISPATCH"] = "update:partner-dispatch";
21
+ PermissionActions["CANCEL_PARTNER_DISPATCH"] = "cancel:partner-dispatch";
22
+ PermissionActions["RESEND_PARTNER_DISPATCH"] = "resend:partner-dispatch";
23
+ // Registering a subscriber with a partner. Kept apart from the partnership
24
+ // CRUD actions because a membership record carries a person's date of birth
25
+ // and identity document, which is a materially different thing to be
26
+ // allowed to read than a base URL and a coverage rule.
27
+ PermissionActions["READ_PARTNER_MEMBERSHIP"] = "read:partner-membership";
28
+ PermissionActions["MANAGE_PARTNER_MEMBERSHIP"] = "manage:partner-membership";
16
29
  // Module: ControlCentre
17
30
  PermissionActions["CREATE_CONTROL_CENTRE"] = "create:control-centre";
18
31
  PermissionActions["READ_CONTROL_CENTRE"] = "read:control-centre";
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBA8CX;AA9CD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IAEjC,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;AACjD,CAAC,EA9CW,iBAAiB,iCAAjB,iBAAiB,QA8C5B"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBA2DX;AA3DD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;AACjD,CAAC,EA3DW,iBAAiB,iCAAjB,iBAAiB,QA2D5B"}
@@ -165,4 +165,98 @@ export var PartnerDispatchScope;
165
165
  PartnerDispatchScope["FAILED"] = "FAILED";
166
166
  PartnerDispatchScope["NOT_ROUTED"] = "NOT_ROUTED";
167
167
  })(PartnerDispatchScope || (PartnerDispatchScope = {}));
168
+ // --- memberships ---------------------------------------------------------
169
+ /**
170
+ * Where one subscriber's registration with one partner has got to.
171
+ *
172
+ * A membership is an ENRICHMENT and never a gate: nothing in this lifecycle can
173
+ * stop an emergency reaching a partner. A subscriber whose membership is
174
+ * INCOMPLETE_PROFILE or FAILED still has an SOS raised for them, just without a
175
+ * member id attached.
176
+ */
177
+ export var PartnerMembershipStatus;
178
+ (function (PartnerMembershipStatus) {
179
+ /** Decided that this person needs registering; not yet created at the partner. */
180
+ PartnerMembershipStatus["PENDING"] = "PENDING";
181
+ /** Blocked on personal details the partner requires and the platform lacks. */
182
+ PartnerMembershipStatus["INCOMPLETE_PROFILE"] = "INCOMPLETE_PROFILE";
183
+ /** A registration call is in flight at the partner. */
184
+ PartnerMembershipStatus["PROVISIONING"] = "PROVISIONING";
185
+ /** The partner has issued a member id. */
186
+ PartnerMembershipStatus["ACTIVE"] = "ACTIVE";
187
+ /** Every attempt failed for a reason retrying cannot fix. */
188
+ PartnerMembershipStatus["FAILED"] = "FAILED";
189
+ /**
190
+ * A registration was made and its outcome is UNKNOWN - the reply was lost.
191
+ * Deliberately a dead end: retrying a call that may have succeeded is how
192
+ * one person acquires two memberships, and a duplicate cannot be undone at
193
+ * the partner.
194
+ */
195
+ PartnerMembershipStatus["NEEDS_REVIEW"] = "NEEDS_REVIEW";
196
+ /** The subscription behind it ended. The member is left in place at the partner. */
197
+ PartnerMembershipStatus["CANCELLED"] = "CANCELLED";
198
+ })(PartnerMembershipStatus || (PartnerMembershipStatus = {}));
199
+ /** Who a membership belongs to, in Clarion's own vocabulary. */
200
+ export var PartnerMembershipSubjectType;
201
+ (function (PartnerMembershipSubjectType) {
202
+ PartnerMembershipSubjectType["INDIVIDUAL_SUBSCRIBER"] = "INDIVIDUAL_SUBSCRIBER";
203
+ PartnerMembershipSubjectType["CORPORATE_MEMBER"] = "CORPORATE_MEMBER";
204
+ })(PartnerMembershipSubjectType || (PartnerMembershipSubjectType = {}));
205
+ /**
206
+ * A member's standing with the partner, reduced to something every screen can
207
+ * rely on without learning any partner's vocabulary.
208
+ *
209
+ * PENDING_ACTIVATION is the one that matters: a member can exist, hold a real
210
+ * member id, and still not be covered - Rescue.co returns a brand-new member as
211
+ * `waitingPeriod`. A screen that collapses the two tells a subscriber they are
212
+ * covered on the day they paid.
213
+ */
214
+ export var PartnerMemberState;
215
+ (function (PartnerMemberState) {
216
+ PartnerMemberState["PENDING_ACTIVATION"] = "PENDING_ACTIVATION";
217
+ PartnerMemberState["ACTIVE"] = "ACTIVE";
218
+ PartnerMemberState["SUSPENDED"] = "SUSPENDED";
219
+ PartnerMemberState["LAPSED"] = "LAPSED";
220
+ PartnerMemberState["UNKNOWN"] = "UNKNOWN";
221
+ })(PartnerMemberState || (PartnerMemberState = {}));
222
+ /** Which packages' subscribers a partnership registers. */
223
+ export var PartnerMembershipPackageScope;
224
+ (function (PartnerMembershipPackageScope) {
225
+ PartnerMembershipPackageScope["ALL"] = "ALL";
226
+ PartnerMembershipPackageScope["SELECTED"] = "SELECTED";
227
+ })(PartnerMembershipPackageScope || (PartnerMembershipPackageScope = {}));
228
+ /** Gender, in the platform's neutral vocabulary - never a partner's spelling. */
229
+ export var PartnerMemberGender;
230
+ (function (PartnerMemberGender) {
231
+ PartnerMemberGender["MALE"] = "MALE";
232
+ PartnerMemberGender["FEMALE"] = "FEMALE";
233
+ PartnerMemberGender["OTHER"] = "OTHER";
234
+ PartnerMemberGender["UNSPECIFIED"] = "UNSPECIFIED";
235
+ })(PartnerMemberGender || (PartnerMemberGender = {}));
236
+ /** The kind of identity document a partner membership records. */
237
+ export var PartnerMemberDocumentType;
238
+ (function (PartnerMemberDocumentType) {
239
+ PartnerMemberDocumentType["PASSPORT"] = "PASSPORT";
240
+ PartnerMemberDocumentType["NATIONAL_ID"] = "NATIONAL_ID";
241
+ PartnerMemberDocumentType["DRIVING_LICENCE"] = "DRIVING_LICENCE";
242
+ PartnerMemberDocumentType["OTHER"] = "OTHER";
243
+ })(PartnerMemberDocumentType || (PartnerMemberDocumentType = {}));
244
+ /**
245
+ * The provider-neutral facts about a person a partner membership may need.
246
+ *
247
+ * The VALUES are the property names on `PartnerMemberProfileDto`, which is what
248
+ * lets "which of this partner's required fields are missing?" be a generic loop
249
+ * in the admin rather than a per-partner if-ladder.
250
+ */
251
+ export var PartnerMemberProfileField;
252
+ (function (PartnerMemberProfileField) {
253
+ PartnerMemberProfileField["FULL_NAME"] = "fullName";
254
+ PartnerMemberProfileField["PHONE_NUMBER"] = "phoneNumber";
255
+ PartnerMemberProfileField["EMAIL"] = "email";
256
+ PartnerMemberProfileField["DATE_OF_BIRTH"] = "dateOfBirth";
257
+ PartnerMemberProfileField["GENDER"] = "gender";
258
+ PartnerMemberProfileField["DOCUMENT_TYPE"] = "documentType";
259
+ PartnerMemberProfileField["DOCUMENT_NUMBER"] = "documentNumber";
260
+ PartnerMemberProfileField["DOCUMENT_COUNTRY_CODE"] = "documentCountryCode";
261
+ })(PartnerMemberProfileField || (PartnerMemberProfileField = {}));
168
262
  //# sourceMappingURL=partner-enums.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-enums.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-enums.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partner-enums.js","sourceRoot":"","sources":["../../../../../src/modules/partner/enums/partner-enums.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export * from './interfaces/partner-coverage-rule.dto';
7
7
  export * from './interfaces/partner-dispatch-progress.dto';
8
8
  export * from './interfaces/partner-dispatch.dto';
9
9
  export * from './interfaces/incident-partner-routing.dto';
10
+ export * from './interfaces/partner-membership.dto';
10
11
  // Utilities
11
12
  export * from './utils/partner-display.util';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,uBAAuB,CAAC;AAEtC,oBAAoB;AACpB,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAE1D,YAAY;AACZ,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/partner/index.ts"],"names":[],"mappings":"AAAA,QAAQ;AACR,cAAc,uBAAuB,CAAC;AAEtC,oBAAoB;AACpB,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,qCAAqC,CAAC;AAEpD,YAAY;AACZ,cAAc,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=partner-membership.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partner-membership.dto.js","sourceRoot":"","sources":["../../../../../src/modules/partner/interfaces/partner-membership.dto.ts"],"names":[],"mappings":""}
@@ -1,4 +1,4 @@
1
- import { IncidentPartnerRoutingStatus, PartnerEngagementState, PartnerCoverageMatchType, PartnerDispatchStatus, PartnerIntegrationStatus, PartnerRoutingMode, PartnerServiceCapability, } from '../enums/partner-enums';
1
+ import { IncidentPartnerRoutingStatus, PartnerEngagementState, PartnerCoverageMatchType, PartnerDispatchStatus, PartnerIntegrationStatus, PartnerMemberDocumentType, PartnerMemberGender, PartnerMemberProfileField, PartnerMemberState, PartnerMembershipPackageScope, PartnerMembershipStatus, PartnerMembershipSubjectType, PartnerRoutingMode, PartnerServiceCapability, } from '../enums/partner-enums';
2
2
  /**
3
3
  * Human labels for the partner enums.
4
4
  *
@@ -131,4 +131,151 @@ export function partnerDispatchActions(status, capabilities = {}) {
131
131
  status === PartnerDispatchStatus.EXPIRED,
132
132
  };
133
133
  }
134
+ // --- memberships ---------------------------------------------------------
135
+ /**
136
+ * How a membership's own lifecycle reads on screen.
137
+ *
138
+ * Worded as what an operator should DO, not as an internal state name. Nobody
139
+ * has to know what PROVISIONING means; they have to know whether somebody is
140
+ * waiting on them.
141
+ */
142
+ export const PARTNER_MEMBERSHIP_STATUS_LABELS = {
143
+ [PartnerMembershipStatus.PENDING]: 'Waiting to register',
144
+ [PartnerMembershipStatus.INCOMPLETE_PROFILE]: 'Details needed',
145
+ [PartnerMembershipStatus.PROVISIONING]: 'Registering',
146
+ [PartnerMembershipStatus.ACTIVE]: 'Registered',
147
+ [PartnerMembershipStatus.FAILED]: 'Registration failed',
148
+ [PartnerMembershipStatus.NEEDS_REVIEW]: 'Check with partner',
149
+ [PartnerMembershipStatus.CANCELLED]: 'No longer covered',
150
+ };
151
+ /**
152
+ * How the PARTNER's own view of a member reads.
153
+ *
154
+ * Kept apart from the status above because the two answer different questions,
155
+ * and collapsing them is how somebody gets told they are covered on the day
156
+ * they paid: "Registered" means the partner has issued a member id, and
157
+ * "Waiting period" means their cover has not started.
158
+ */
159
+ export const PARTNER_MEMBER_STATE_LABELS = {
160
+ [PartnerMemberState.PENDING_ACTIVATION]: 'Waiting period',
161
+ [PartnerMemberState.ACTIVE]: 'Cover active',
162
+ [PartnerMemberState.SUSPENDED]: 'Suspended by partner',
163
+ [PartnerMemberState.LAPSED]: 'Ended',
164
+ [PartnerMemberState.UNKNOWN]: 'Unknown',
165
+ };
166
+ export const PARTNER_MEMBERSHIP_SUBJECT_TYPE_LABELS = {
167
+ [PartnerMembershipSubjectType.INDIVIDUAL_SUBSCRIBER]: 'Individual subscriber',
168
+ [PartnerMembershipSubjectType.CORPORATE_MEMBER]: 'Corporate member',
169
+ };
170
+ export const PARTNER_MEMBERSHIP_PACKAGE_SCOPE_LABELS = {
171
+ [PartnerMembershipPackageScope.ALL]: 'Every package',
172
+ [PartnerMembershipPackageScope.SELECTED]: 'Selected packages only',
173
+ };
174
+ export const PARTNER_MEMBER_GENDER_LABELS = {
175
+ [PartnerMemberGender.MALE]: 'Male',
176
+ [PartnerMemberGender.FEMALE]: 'Female',
177
+ [PartnerMemberGender.OTHER]: 'Other',
178
+ [PartnerMemberGender.UNSPECIFIED]: 'Prefer not to say',
179
+ };
180
+ export const PARTNER_MEMBER_DOCUMENT_TYPE_LABELS = {
181
+ [PartnerMemberDocumentType.PASSPORT]: 'Passport',
182
+ [PartnerMemberDocumentType.NATIONAL_ID]: 'National ID',
183
+ [PartnerMemberDocumentType.DRIVING_LICENCE]: 'Driving licence',
184
+ [PartnerMemberDocumentType.OTHER]: 'Other document',
185
+ };
186
+ /** The provider-neutral profile fields, named for a person to read. */
187
+ export const PARTNER_MEMBER_PROFILE_FIELD_LABELS = {
188
+ [PartnerMemberProfileField.FULL_NAME]: 'Full name',
189
+ [PartnerMemberProfileField.PHONE_NUMBER]: 'Telephone number',
190
+ [PartnerMemberProfileField.EMAIL]: 'Email address',
191
+ [PartnerMemberProfileField.DATE_OF_BIRTH]: 'Date of birth',
192
+ [PartnerMemberProfileField.GENDER]: 'Gender',
193
+ [PartnerMemberProfileField.DOCUMENT_TYPE]: 'Identity document type',
194
+ [PartnerMemberProfileField.DOCUMENT_NUMBER]: 'Identity document number',
195
+ [PartnerMemberProfileField.DOCUMENT_COUNTRY_CODE]: 'Document country',
196
+ };
197
+ export function partnerMembershipStatusTone(status) {
198
+ switch (status) {
199
+ case PartnerMembershipStatus.ACTIVE:
200
+ return 'success';
201
+ // Both need a human, and both are the operator's to clear.
202
+ case PartnerMembershipStatus.INCOMPLETE_PROFILE:
203
+ case PartnerMembershipStatus.NEEDS_REVIEW:
204
+ return 'warn';
205
+ case PartnerMembershipStatus.FAILED:
206
+ return 'danger';
207
+ default:
208
+ return 'neutral';
209
+ }
210
+ }
211
+ /**
212
+ * One line saying what a membership is waiting on, or null when nothing is.
213
+ *
214
+ * The whole point of the membership screen. An operator should never have to
215
+ * open a record to find out whether it needs them, and should never be shown a
216
+ * partner's raw error where a plain sentence would do.
217
+ */
218
+ export function describeMembershipAttention(membership) {
219
+ var _a, _b;
220
+ switch (membership.status) {
221
+ case PartnerMembershipStatus.INCOMPLETE_PROFILE: {
222
+ const fields = (_a = membership.unsatisfiedFields) !== null && _a !== void 0 ? _a : [];
223
+ if (fields.length === 0)
224
+ return 'Some details are still needed.';
225
+ const described = fields.map((entry) => {
226
+ var _a;
227
+ const label = (_a = PARTNER_MEMBER_PROFILE_FIELD_LABELS[entry.field]) !== null && _a !== void 0 ? _a : entry.field;
228
+ // "Missing" and "not usable" are different jobs: one is
229
+ // collecting a fact, the other correcting one.
230
+ return entry.reason === 'MALFORMED'
231
+ ? `${label} is not usable`
232
+ : `${label} is missing`;
233
+ });
234
+ return `Cannot register yet: ${described.join(', ')}.`;
235
+ }
236
+ case PartnerMembershipStatus.NEEDS_REVIEW:
237
+ return ('A registration may already have reached the partner. Check with them before ' +
238
+ 'trying again, otherwise this person could be registered twice.');
239
+ case PartnerMembershipStatus.FAILED:
240
+ return (_b = membership.lastErrorMessage) !== null && _b !== void 0 ? _b : 'The partner refused this registration.';
241
+ default:
242
+ return null;
243
+ }
244
+ }
245
+ /**
246
+ * What the partner's cover actually says, in a sentence.
247
+ *
248
+ * Separate from the status chip because "registered" and "covered" are
249
+ * different facts, and a partner that starts a member on a waiting period would
250
+ * otherwise be reported as though cover began the day they paid.
251
+ */
252
+ export function describeMembershipCover(membership) {
253
+ if (membership.status !== PartnerMembershipStatus.ACTIVE)
254
+ return null;
255
+ if (membership.coverActive)
256
+ return 'Cover is active with the partner.';
257
+ if (membership.memberState === PartnerMemberState.PENDING_ACTIVATION) {
258
+ return membership.coverageStartsAt
259
+ ? `Registered — partner cover starts ${formatCoverDate(membership.coverageStartsAt)}.`
260
+ : 'Registered — the partner has not started cover yet.';
261
+ }
262
+ if (membership.memberState === PartnerMemberState.LAPSED) {
263
+ return 'The partner has ended this membership.';
264
+ }
265
+ if (membership.memberState === PartnerMemberState.SUSPENDED) {
266
+ return 'The partner has suspended this membership.';
267
+ }
268
+ return 'Registered with the partner.';
269
+ }
270
+ /** A date a person can read, falling back to the raw value rather than blanking it. */
271
+ function formatCoverDate(value) {
272
+ const parsed = new Date(value);
273
+ if (Number.isNaN(parsed.getTime()))
274
+ return value;
275
+ return parsed.toLocaleDateString(undefined, {
276
+ day: 'numeric',
277
+ month: 'short',
278
+ year: 'numeric',
279
+ });
280
+ }
134
281
  //# sourceMappingURL=partner-display.util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"partner-display.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-display.util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"partner-display.util.js","sourceRoot":"","sources":["../../../../../src/modules/partner/utils/partner-display.util.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,EAClB,wBAAwB,GAC3B,MAAM,wBAAwB,CAAC;AAGhC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAoD;IAC3F,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,0BAA0B;IACpE,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACxC,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS;IAC1C,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,iBAAiB;IAC/C,CAAC,qBAAqB,CAAC,YAAY,CAAC,EAAE,oBAAoB;IAC1D,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,mBAAmB;IACtD,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACxC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,UAAU;IAC5C,sEAAsE;IACtE,4EAA4E;IAC5E,2BAA2B;IAC3B,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,0BAA0B;IAC7D,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,YAAY;IAC/C,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,SAAS;CAC7C,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,+BAA+B,GAExC;IACA,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,aAAa;IAC9C,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACzC,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE,SAAS;CAC9C,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAE/C;IACA,CAAC,4BAA4B,CAAC,UAAU,CAAC,EAAE,YAAY;IACvD,CAAC,4BAA4B,CAAC,OAAO,CAAC,EAAE,oBAAoB;IAC5D,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,EAAE,0BAA0B;IAC5E,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,kBAAkB;IACzD,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,EAAE,iBAAiB;IAClE,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,qBAAqB;IAC5D,CAAC,4BAA4B,CAAC,QAAQ,CAAC,EAAE,UAAU;CACtD,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAiD;IACrF,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,WAAW;IACtC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,oBAAoB;IACjD,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,aAAa;CAC/C,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAE1C;IACA,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,YAAY;IAChD,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,SAAS;IAC7C,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAE,UAAU;IAC/C,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,aAAa;CACxD,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAuD;IACzF,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,WAAW;IACjD,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,EAAE,oBAAoB;IACnE,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,eAAe;IACzD,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE,mBAAmB;IACjE,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,EAAE,qBAAqB;IACrE,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC3C,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO;CAC5C,CAAC;AAEF,MAAM,CAAC,MAAM,kCAAkC,GAE3C;IACA,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,gBAAgB;IAChD,CAAC,wBAAwB,CAAC,aAAa,CAAC,EAAE,eAAe;IACzD,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,EAAE,mBAAmB;IACjE,CAAC,wBAAwB,CAAC,cAAc,CAAC,EAAE,0BAA0B;CACxE,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACrC,MAA6B;IAE7B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,qBAAqB,CAAC,IAAI,CAAC;QAChC,KAAK,qBAAqB,CAAC,YAAY,CAAC;QACxC,KAAK,qBAAqB,CAAC,SAAS;YAChC,OAAO,SAAS,CAAC;QACrB,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;QAC5C,KAAK,qBAAqB,CAAC,MAAM,CAAC;QAClC,KAAK,qBAAqB,CAAC,OAAO;YAC9B,OAAO,MAAM,CAAC;QAClB,KAAK,qBAAqB,CAAC,MAAM,CAAC;QAClC,KAAK,qBAAqB,CAAC,OAAO;YAC9B,OAAO,QAAQ,CAAC;QACpB;YACI,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,0BAA0B,CACtC,MAAoC;IAEpC,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,4BAA4B,CAAC,MAAM;YACpC,OAAO,SAAS,CAAC;QACrB,KAAK,4BAA4B,CAAC,OAAO,CAAC;QAC1C,KAAK,4BAA4B,CAAC,iBAAiB,CAAC;QACpD,KAAK,4BAA4B,CAAC,gBAAgB;YAC9C,OAAO,MAAM,CAAC;QAClB,KAAK,4BAA4B,CAAC,MAAM;YACpC,OAAO,QAAQ,CAAC;QACpB;YACI,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAClC,MAA6B,EAC7B,eAA0C,EAAE;IAS5C,MAAM,OAAO,GAAG,MAAM,KAAK,qBAAqB,CAAC,gBAAgB,CAAC;IAClE,MAAM,WAAW,GACb,MAAM,KAAK,qBAAqB,CAAC,IAAI;QACrC,MAAM,KAAK,qBAAqB,CAAC,YAAY,CAAC;IAElD,OAAO;QACH,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,OAAO;QAClB,gEAAgE;QAChE,SAAS,EAAE,OAAO,IAAI,MAAM,KAAK,qBAAqB,CAAC,MAAM;QAC7D;;;;;WAKG;QACH,YAAY,EAAE,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,kBAAkB;QAC9D,QAAQ,EAAE,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,iBAAiB;QACzD,SAAS,EACL,MAAM,KAAK,qBAAqB,CAAC,MAAM;YACvC,MAAM,KAAK,qBAAqB,CAAC,OAAO;KAC/C,CAAC;AACN,CAAC;AAWD,4EAA4E;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAEzC;IACA,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,qBAAqB;IACxD,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,gBAAgB;IAC9D,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,aAAa;IACrD,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,YAAY;IAC9C,CAAC,uBAAuB,CAAC,MAAM,CAAC,EAAE,qBAAqB;IACvD,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,oBAAoB;IAC5D,CAAC,uBAAuB,CAAC,SAAS,CAAC,EAAE,mBAAmB;CAC3D,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAiD;IACrF,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,gBAAgB;IACzD,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,cAAc;IAC3C,CAAC,kBAAkB,CAAC,SAAS,CAAC,EAAE,sBAAsB;IACtD,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,OAAO;IACpC,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,SAAS;CAC1C,CAAC;AAEF,MAAM,CAAC,MAAM,sCAAsC,GAE/C;IACA,CAAC,4BAA4B,CAAC,qBAAqB,CAAC,EAAE,uBAAuB;IAC7E,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,EAAE,kBAAkB;CACtE,CAAC;AAEF,MAAM,CAAC,MAAM,uCAAuC,GAEhD;IACA,CAAC,6BAA6B,CAAC,GAAG,CAAC,EAAE,eAAe;IACpD,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,wBAAwB;CACrE,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAkD;IACvF,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM;IAClC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,QAAQ;IACtC,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,OAAO;IACpC,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,mBAAmB;CACzD,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAE5C;IACA,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,UAAU;IAChD,CAAC,yBAAyB,CAAC,WAAW,CAAC,EAAE,aAAa;IACtD,CAAC,yBAAyB,CAAC,eAAe,CAAC,EAAE,iBAAiB;IAC9D,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,gBAAgB;CACtD,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,mCAAmC,GAE5C;IACA,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE,WAAW;IAClD,CAAC,yBAAyB,CAAC,YAAY,CAAC,EAAE,kBAAkB;IAC5D,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,eAAe;IAClD,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,eAAe;IAC1D,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,QAAQ;IAC5C,CAAC,yBAAyB,CAAC,aAAa,CAAC,EAAE,wBAAwB;IACnE,CAAC,yBAAyB,CAAC,eAAe,CAAC,EAAE,0BAA0B;IACvE,CAAC,yBAAyB,CAAC,qBAAqB,CAAC,EAAE,kBAAkB;CACxE,CAAC;AAEF,MAAM,UAAU,2BAA2B,CACvC,MAA+B;IAE/B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,uBAAuB,CAAC,MAAM;YAC/B,OAAO,SAAS,CAAC;QACrB,2DAA2D;QAC3D,KAAK,uBAAuB,CAAC,kBAAkB,CAAC;QAChD,KAAK,uBAAuB,CAAC,YAAY;YACrC,OAAO,MAAM,CAAC;QAClB,KAAK,uBAAuB,CAAC,MAAM;YAC/B,OAAO,QAAQ,CAAC;QACpB;YACI,OAAO,SAAS,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,UAI3C;;IACG,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,uBAAuB,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAA,UAAU,CAAC,iBAAiB,mCAAI,EAAE,CAAC;YAClD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,gCAAgC,CAAC;YACjE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;;gBACnC,MAAM,KAAK,GACP,MAAA,mCAAmC,CACnC,KAAK,CAAC,KAAkC,CACvC,mCAAI,KAAK,CAAC,KAAK,CAAC;gBACrB,wDAAwD;gBACxD,+CAA+C;gBAC/C,OAAO,KAAK,CAAC,MAAM,KAAK,WAAW;oBAC/B,CAAC,CAAC,GAAG,KAAK,gBAAgB;oBAC1B,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC;YAChC,CAAC,CAAC,CAAC;YACH,OAAO,wBAAwB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3D,CAAC;QACD,KAAK,uBAAuB,CAAC,YAAY;YACrC,OAAO,CACH,8EAA8E;gBAC9E,gEAAgE,CACnE,CAAC;QACN,KAAK,uBAAuB,CAAC,MAAM;YAC/B,OAAO,MAAA,UAAU,CAAC,gBAAgB,mCAAI,wCAAwC,CAAC;QACnF;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAKvC;IACG,IAAI,UAAU,CAAC,MAAM,KAAK,uBAAuB,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,UAAU,CAAC,WAAW;QAAE,OAAO,mCAAmC,CAAC;IACvE,IAAI,UAAU,CAAC,WAAW,KAAK,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QACnE,OAAO,UAAU,CAAC,gBAAgB;YAC9B,CAAC,CAAC,qCAAqC,eAAe,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG;YACtF,CAAC,CAAC,qDAAqD,CAAC;IAChE,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QACvD,OAAO,wCAAwC,CAAC;IACpD,CAAC;IACD,IAAI,UAAU,CAAC,WAAW,KAAK,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAC1D,OAAO,4CAA4C,CAAC;IACxD,CAAC;IACD,OAAO,8BAA8B,CAAC;AAC1C,CAAC;AAED,uFAAuF;AACvF,SAAS,eAAe,CAAC,KAAa;IAClC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,OAAO,MAAM,CAAC,kBAAkB,CAAC,SAAS,EAAE;QACxC,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,SAAS;KAClB,CAAC,CAAC;AACP,CAAC"}
@@ -10,6 +10,19 @@ export var PermissionActions;
10
10
  PermissionActions["READ_PARTNER"] = "read:partner";
11
11
  PermissionActions["UPDATE_PARTNER"] = "update:partner";
12
12
  PermissionActions["DELETE_PARTNER"] = "delete:partner";
13
+ // Acting on one routed emergency. These existed on the backend and were
14
+ // never mirrored here, so the admin could not gate on them at all.
15
+ PermissionActions["READ_PARTNER_DISPATCH"] = "read:partner-dispatch";
16
+ PermissionActions["APPROVE_PARTNER_DISPATCH"] = "approve:partner-dispatch";
17
+ PermissionActions["UPDATE_PARTNER_DISPATCH"] = "update:partner-dispatch";
18
+ PermissionActions["CANCEL_PARTNER_DISPATCH"] = "cancel:partner-dispatch";
19
+ PermissionActions["RESEND_PARTNER_DISPATCH"] = "resend:partner-dispatch";
20
+ // Registering a subscriber with a partner. Kept apart from the partnership
21
+ // CRUD actions because a membership record carries a person's date of birth
22
+ // and identity document, which is a materially different thing to be
23
+ // allowed to read than a base URL and a coverage rule.
24
+ PermissionActions["READ_PARTNER_MEMBERSHIP"] = "read:partner-membership";
25
+ PermissionActions["MANAGE_PARTNER_MEMBERSHIP"] = "manage:partner-membership";
13
26
  // Module: ControlCentre
14
27
  PermissionActions["CREATE_CONTROL_CENTRE"] = "create:control-centre";
15
28
  PermissionActions["READ_CONTROL_CENTRE"] = "read:control-centre";
@@ -1 +1 @@
1
- {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBA8CX;AA9CD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IAEjC,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;AACjD,CAAC,EA9CW,iBAAiB,KAAjB,iBAAiB,QA8C5B"}
1
+ {"version":3,"file":"permission-actions.enum.js","sourceRoot":"","sources":["../../../../../src/modules/permission/enums/permission-actions.enum.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBA2DX;AA3DD,WAAY,iBAAiB;IACzB,uBAAuB;IACvB,gEAA2C,CAAA;IAC3C,4DAAuC,CAAA;IACvC,gEAA2C,CAAA;IAC3C,gEAA2C,CAAA;IAE3C,kBAAkB;IAClB,sDAAiC,CAAA;IACjC,kDAA6B,CAAA;IAC7B,sDAAiC,CAAA;IACjC,sDAAiC,CAAA;IACjC,wEAAwE;IACxE,mEAAmE;IACnE,oEAA+C,CAAA;IAC/C,0EAAqD,CAAA;IACrD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,wEAAmD,CAAA;IACnD,2EAA2E;IAC3E,4EAA4E;IAC5E,qEAAqE;IACrE,uDAAuD;IACvD,wEAAmD,CAAA;IACnD,4EAAuD,CAAA;IAEvD,wBAAwB;IACxB,oEAA+C,CAAA;IAC/C,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,oEAA+C,CAAA;IAE/C,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,eAAe;IACf,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,gDAA2B,CAAA;IAE3B,mBAAmB;IACnB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,wDAAmC,CAAA;IACnC,wDAAmC,CAAA;IACnC,oFAA+D,CAAA;IAC/D,gFAA2D,CAAA;IAC3D,oFAA+D,CAAA;IAC/D,oFAA+D,CAAA;IAE/D,uBAAuB;IACvB,kEAA6C,CAAA;IAC7C,8DAAyC,CAAA;IACzC,kEAA6C,CAAA;IAC7C,kEAA6C,CAAA;AACjD,CAAC,EA3DW,iBAAiB,KAAjB,iBAAiB,QA2D5B"}
@@ -6,6 +6,7 @@ import { ResponseUnit } from "../../response-unit";
6
6
  import { User } from "../../user";
7
7
  import { WebNotification } from "../../web-notification";
8
8
  import { IncidentEntitlementScope } from "../../entitlement/enums/incident-entitlement-scope.enum";
9
+ import { IncidentPartnerRoutingStatus } from "../../partner/enums/partner-enums";
9
10
  import { IncidentDispatchScope } from "../../alert-dispatch/enums/incident-dispatch-scope.enum";
10
11
  export interface PaginationParams {
11
12
  page?: number;
@@ -29,6 +30,13 @@ export interface IncidentQueryParams extends PaginationParams {
29
30
  * for `ENTITLED` + `SUPPRESSED`. Omitting it applies no dispatch filter.
30
31
  */
31
32
  dispatchScope?: IncidentDispatchScope;
33
+ /**
34
+ * Narrows to incidents by how their third-party routing went - "show me
35
+ * everything an ambulance firm was asked for", or the far more urgent
36
+ * "show me everything where asking one FAILED". Omitting it applies no
37
+ * partner filter.
38
+ */
39
+ partnerRoutingStatus?: IncidentPartnerRoutingStatus;
32
40
  }
33
41
  export interface PaginatedResponse<T> {
34
42
  data: T[];
@@ -152,3 +152,89 @@ export declare enum PartnerDispatchScope {
152
152
  FAILED = "FAILED",
153
153
  NOT_ROUTED = "NOT_ROUTED"
154
154
  }
155
+ /**
156
+ * Where one subscriber's registration with one partner has got to.
157
+ *
158
+ * A membership is an ENRICHMENT and never a gate: nothing in this lifecycle can
159
+ * stop an emergency reaching a partner. A subscriber whose membership is
160
+ * INCOMPLETE_PROFILE or FAILED still has an SOS raised for them, just without a
161
+ * member id attached.
162
+ */
163
+ export declare enum PartnerMembershipStatus {
164
+ /** Decided that this person needs registering; not yet created at the partner. */
165
+ PENDING = "PENDING",
166
+ /** Blocked on personal details the partner requires and the platform lacks. */
167
+ INCOMPLETE_PROFILE = "INCOMPLETE_PROFILE",
168
+ /** A registration call is in flight at the partner. */
169
+ PROVISIONING = "PROVISIONING",
170
+ /** The partner has issued a member id. */
171
+ ACTIVE = "ACTIVE",
172
+ /** Every attempt failed for a reason retrying cannot fix. */
173
+ FAILED = "FAILED",
174
+ /**
175
+ * A registration was made and its outcome is UNKNOWN - the reply was lost.
176
+ * Deliberately a dead end: retrying a call that may have succeeded is how
177
+ * one person acquires two memberships, and a duplicate cannot be undone at
178
+ * the partner.
179
+ */
180
+ NEEDS_REVIEW = "NEEDS_REVIEW",
181
+ /** The subscription behind it ended. The member is left in place at the partner. */
182
+ CANCELLED = "CANCELLED"
183
+ }
184
+ /** Who a membership belongs to, in Clarion's own vocabulary. */
185
+ export declare enum PartnerMembershipSubjectType {
186
+ INDIVIDUAL_SUBSCRIBER = "INDIVIDUAL_SUBSCRIBER",
187
+ CORPORATE_MEMBER = "CORPORATE_MEMBER"
188
+ }
189
+ /**
190
+ * A member's standing with the partner, reduced to something every screen can
191
+ * rely on without learning any partner's vocabulary.
192
+ *
193
+ * PENDING_ACTIVATION is the one that matters: a member can exist, hold a real
194
+ * member id, and still not be covered - Rescue.co returns a brand-new member as
195
+ * `waitingPeriod`. A screen that collapses the two tells a subscriber they are
196
+ * covered on the day they paid.
197
+ */
198
+ export declare enum PartnerMemberState {
199
+ PENDING_ACTIVATION = "PENDING_ACTIVATION",
200
+ ACTIVE = "ACTIVE",
201
+ SUSPENDED = "SUSPENDED",
202
+ LAPSED = "LAPSED",
203
+ UNKNOWN = "UNKNOWN"
204
+ }
205
+ /** Which packages' subscribers a partnership registers. */
206
+ export declare enum PartnerMembershipPackageScope {
207
+ ALL = "ALL",
208
+ SELECTED = "SELECTED"
209
+ }
210
+ /** Gender, in the platform's neutral vocabulary - never a partner's spelling. */
211
+ export declare enum PartnerMemberGender {
212
+ MALE = "MALE",
213
+ FEMALE = "FEMALE",
214
+ OTHER = "OTHER",
215
+ UNSPECIFIED = "UNSPECIFIED"
216
+ }
217
+ /** The kind of identity document a partner membership records. */
218
+ export declare enum PartnerMemberDocumentType {
219
+ PASSPORT = "PASSPORT",
220
+ NATIONAL_ID = "NATIONAL_ID",
221
+ DRIVING_LICENCE = "DRIVING_LICENCE",
222
+ OTHER = "OTHER"
223
+ }
224
+ /**
225
+ * The provider-neutral facts about a person a partner membership may need.
226
+ *
227
+ * The VALUES are the property names on `PartnerMemberProfileDto`, which is what
228
+ * lets "which of this partner's required fields are missing?" be a generic loop
229
+ * in the admin rather than a per-partner if-ladder.
230
+ */
231
+ export declare enum PartnerMemberProfileField {
232
+ FULL_NAME = "fullName",
233
+ PHONE_NUMBER = "phoneNumber",
234
+ EMAIL = "email",
235
+ DATE_OF_BIRTH = "dateOfBirth",
236
+ GENDER = "gender",
237
+ DOCUMENT_TYPE = "documentType",
238
+ DOCUMENT_NUMBER = "documentNumber",
239
+ DOCUMENT_COUNTRY_CODE = "documentCountryCode"
240
+ }
@@ -5,4 +5,5 @@ export * from './interfaces/partner-coverage-rule.dto';
5
5
  export * from './interfaces/partner-dispatch-progress.dto';
6
6
  export * from './interfaces/partner-dispatch.dto';
7
7
  export * from './interfaces/incident-partner-routing.dto';
8
+ export * from './interfaces/partner-membership.dto';
8
9
  export * from './utils/partner-display.util';
@@ -1,5 +1,5 @@
1
1
  import { CountryCode } from '../../country/enums/country-code.enum';
2
- import { PartnerIntegrationEnvironment, PartnerIntegrationStatus, PartnerProviderCode, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
2
+ import { PartnerIntegrationEnvironment, PartnerIntegrationStatus, PartnerMembershipPackageScope, PartnerProviderCode, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
3
3
  import { PartnerCoverageRuleDto } from './partner-coverage-rule.dto';
4
4
  /**
5
5
  * Frontend view of an organization's partnership with a third-party service
@@ -24,6 +24,26 @@ export interface PartnerIntegrationDto {
24
24
  approvalWindowMinutes: number | null;
25
25
  enabled: boolean;
26
26
  priority: number;
27
+ /**
28
+ * Whether subscribers are registered with this partner as members ahead of
29
+ * any emergency.
30
+ *
31
+ * Off by default, deliberately: registering somebody with a third party
32
+ * sends their name, telephone number and date of birth outside the
33
+ * platform, which an organization decides on purpose rather than by saving
34
+ * a form.
35
+ */
36
+ membershipEnabled: boolean;
37
+ /** Which packages' subscribers are registered. */
38
+ membershipPackageScope: PartnerMembershipPackageScope;
39
+ /** Packages to register, when the scope is SELECTED. */
40
+ membershipPackageIds: number[];
41
+ /**
42
+ * True when the registered adapter can create members for this provider at
43
+ * all. Served from the adapter, not stored - so the admin hides the
44
+ * membership settings for a partner that cannot do it.
45
+ */
46
+ membershipSupported?: boolean;
27
47
  countryCode: CountryCode;
28
48
  status: PartnerIntegrationStatus;
29
49
  partnerContactName: string | null;
@@ -59,6 +79,9 @@ export interface CreatePartnerIntegrationDto {
59
79
  approvalWindowMinutes?: number;
60
80
  enabled?: boolean;
61
81
  priority?: number;
82
+ membershipEnabled?: boolean;
83
+ membershipPackageScope?: PartnerMembershipPackageScope;
84
+ membershipPackageIds?: number[];
62
85
  countryCode?: CountryCode;
63
86
  partnerContactName?: string;
64
87
  partnerContactPhone?: string;
@@ -0,0 +1,176 @@
1
+ import { PartnerMemberDocumentType, PartnerMemberGender, PartnerMemberProfileField, PartnerMemberState, PartnerMembershipStatus, PartnerMembershipSubjectType, PartnerProviderCode } from '../enums/partner-enums';
2
+ /**
3
+ * A person, as a partner membership records them.
4
+ *
5
+ * Deliberately NOT a Clarion user, a billing client or a beneficiary: those are
6
+ * three rows in three services, and a partner cares about none of that
7
+ * distinction. It wants a name, a number and enough identity to tell two people
8
+ * apart.
9
+ */
10
+ export interface PartnerMemberProfileDto {
11
+ fullName: string;
12
+ /** E.164, e.g. `+254712345678`. */
13
+ phoneNumber?: string | null;
14
+ email?: string | null;
15
+ /** `YYYY-MM-DD`. A calendar date, never a timestamp. */
16
+ dateOfBirth?: string | null;
17
+ gender?: PartnerMemberGender | null;
18
+ documentType?: PartnerMemberDocumentType | null;
19
+ /**
20
+ * ALWAYS masked by the API - `***67`, never the whole number.
21
+ *
22
+ * An identity document cannot be rotated and outlives any credential, and
23
+ * an operator does not need it in order to act. Treat this as display-only.
24
+ */
25
+ documentNumber?: string | null;
26
+ documentCountryCode?: string | null;
27
+ /** Partner-declared extras, keyed by that partner's descriptor field keys. */
28
+ attributes?: Record<string, string> | null;
29
+ }
30
+ /**
31
+ * Why a partner cannot yet be told about somebody.
32
+ *
33
+ * MISSING and MALFORMED are not the same problem and do not have the same
34
+ * remedy: one needs the fact collected, the other needs it corrected. An
35
+ * operator staring at a filled-in date of birth the platform calls "missing"
36
+ * has nothing to do.
37
+ */
38
+ export interface UnsatisfiedMemberProfileFieldDto {
39
+ field: string;
40
+ reason: 'MISSING' | 'MALFORMED';
41
+ detail?: string;
42
+ }
43
+ /** One dependent carried on somebody else's membership. */
44
+ export interface PartnerMembershipDependentDto {
45
+ dependentReference: string;
46
+ userId?: number | null;
47
+ /** The partner's own id. Absent means the partner has NOT accepted them. */
48
+ partnerDependentId?: string | null;
49
+ name: string;
50
+ /** The name the partner accepted, which many partners will not let change. */
51
+ partnerName?: string | null;
52
+ synced: boolean;
53
+ /**
54
+ * True when Clarion has stopped covering them but the partner will only
55
+ * drop them at the end of the term - a real, dated divergence rather than
56
+ * something to hide.
57
+ */
58
+ pendingRemovalAtTermEnd?: boolean;
59
+ lastErrorMessage?: string | null;
60
+ syncedAt?: string | null;
61
+ }
62
+ /** One subscriber's registration with one partner, as the API returns it. */
63
+ export interface PartnerMembershipDto {
64
+ id: number;
65
+ membershipReference: string;
66
+ organizationId: number;
67
+ integrationId: number;
68
+ providerCode: PartnerProviderCode;
69
+ subjectType: PartnerMembershipSubjectType;
70
+ subjectReference: string;
71
+ userId?: number | null;
72
+ subscriptionId?: number | null;
73
+ packageId?: number | null;
74
+ membershipLabel?: string | null;
75
+ status: PartnerMembershipStatus;
76
+ /** Present only once the partner has issued one. */
77
+ partnerMemberId?: string | null;
78
+ /** The partner's own status word, verbatim, e.g. `waitingPeriod`. */
79
+ partnerStatus?: string | null;
80
+ memberState?: PartnerMemberState | null;
81
+ /**
82
+ * When the partner's cover actually begins and ends.
83
+ *
84
+ * Distinct from the membership being ACTIVE. A member can be registered,
85
+ * hold a real member id, and not be covered yet.
86
+ */
87
+ coverageStartsAt?: string | null;
88
+ coverageEndsAt?: string | null;
89
+ /** True when the partner has confirmed cover is in force right now. */
90
+ coverActive?: boolean;
91
+ partnerSeats?: number | null;
92
+ /** The member's name. The LIST carries this and nothing else personal. */
93
+ memberName?: string | null;
94
+ /** Present on the detail endpoint only, with the document number masked. */
95
+ profile?: PartnerMemberProfileDto | null;
96
+ unsatisfiedFields: UnsatisfiedMemberProfileFieldDto[];
97
+ dependents: PartnerMembershipDependentDto[];
98
+ attemptCount: number;
99
+ maxAttempts: number;
100
+ nextAttemptAt?: string | null;
101
+ failureReason?: string | null;
102
+ lastErrorCode?: string | null;
103
+ lastErrorMessage?: string | null;
104
+ countryCode: string;
105
+ provisionedAt?: string | null;
106
+ lastSyncedAt?: string | null;
107
+ createdAt: string;
108
+ updatedAt: string;
109
+ }
110
+ /** Filters for the membership list. */
111
+ export interface PartnerMembershipQueryDto {
112
+ integrationId?: number;
113
+ status?: PartnerMembershipStatus;
114
+ subjectType?: PartnerMembershipSubjectType;
115
+ userId?: number;
116
+ subscriptionId?: number;
117
+ search?: string;
118
+ /** Narrow to the memberships an operator can actually unblock. */
119
+ needsAttention?: boolean;
120
+ page?: number;
121
+ limit?: number;
122
+ }
123
+ /** An operator filling in or correcting what a partner is waiting for. */
124
+ export interface UpdatePartnerMembershipDto {
125
+ profile?: Partial<PartnerMemberProfileDto>;
126
+ /** Queue another attempt straight away, rather than waiting for the worker. */
127
+ retryNow?: boolean;
128
+ }
129
+ /**
130
+ * One thing a partner needs to know about a person, described so the admin can
131
+ * render a form for it without knowing which partner it is.
132
+ *
133
+ * The same shape as a partnership's `configFields`, and for the same reason: a
134
+ * partner that starts wanting a policy number costs a descriptor change and
135
+ * nothing else.
136
+ */
137
+ export interface PartnerMemberProfileFieldDescriptorDto {
138
+ key: string;
139
+ label: string;
140
+ description?: string;
141
+ required: boolean;
142
+ type: 'string' | 'number' | 'boolean' | 'enum' | 'date';
143
+ allowedValues?: string[];
144
+ pattern?: string;
145
+ maxLength?: number;
146
+ /** Where an operator is likely to find this, shown as help text. */
147
+ sourceHint?: string;
148
+ }
149
+ /** What one partner needs before it will register a member. */
150
+ export interface PartnerMembershipDescriptorDto {
151
+ profileFields: PartnerMemberProfileFieldDescriptorDto[];
152
+ requiredProfileFields: PartnerMemberProfileField[];
153
+ optionalProfileFields: PartnerMemberProfileField[];
154
+ supportsDependents: boolean;
155
+ maxDependents: number | null;
156
+ quotesMemberOnDispatch: boolean;
157
+ quotableStates?: PartnerMemberState[];
158
+ identityDocumentOptional: boolean;
159
+ /**
160
+ * Shown beside the membership settings - e.g. that a new member serves a
161
+ * waiting period before cover begins. Operators need to know that, and it
162
+ * is not inferable from anything else on screen.
163
+ */
164
+ notes?: string;
165
+ }
166
+ /** The demographic details captured against a person, for a partner to use. */
167
+ export interface UpsertMemberProfileDto {
168
+ userId?: number;
169
+ corporateClientMemberId?: number;
170
+ dateOfBirth?: string;
171
+ gender?: PartnerMemberGender;
172
+ documentType?: PartnerMemberDocumentType;
173
+ documentNumber?: string;
174
+ documentCountryCode?: string;
175
+ attributes?: Record<string, string>;
176
+ }
@@ -1,4 +1,5 @@
1
1
  import { PartnerIntegrationEnvironment, PartnerProviderCode, PartnerServiceCapability } from '../enums/partner-enums';
2
+ import { PartnerMembershipDescriptorDto } from './partner-membership.dto';
2
3
  /** A credential a partnership must supply, described by the backend adapter. */
3
4
  export interface PartnerProviderCredentialFieldDto {
4
5
  key: string;
@@ -53,6 +54,15 @@ export interface PartnerProviderDescriptorDto {
53
54
  supportsAmendment: boolean;
54
55
  /** True when the partner can be asked whether a request already exists. */
55
56
  supportsDuplicateDetection: boolean;
57
+ /**
58
+ * True when this partner registers people as MEMBERS ahead of an emergency.
59
+ *
60
+ * When false the admin must not offer membership settings at all: a toggle
61
+ * that provisions nothing is worse than no toggle.
62
+ */
63
+ supportsMembership: boolean;
64
+ /** What this partner needs to register a member. Present when the flag is true. */
65
+ membership?: PartnerMembershipDescriptorDto;
56
66
  available: boolean;
57
67
  }
58
68
  /** Result of the admin's "test connection" button. Never creates an emergency. */
@@ -1,4 +1,5 @@
1
- import { IncidentPartnerRoutingStatus, PartnerEngagementState, PartnerCoverageMatchType, PartnerDispatchStatus, PartnerIntegrationStatus, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
1
+ import { IncidentPartnerRoutingStatus, PartnerEngagementState, PartnerCoverageMatchType, PartnerDispatchStatus, PartnerIntegrationStatus, PartnerMemberDocumentType, PartnerMemberGender, PartnerMemberProfileField, PartnerMemberState, PartnerMembershipPackageScope, PartnerMembershipStatus, PartnerMembershipSubjectType, PartnerRoutingMode, PartnerServiceCapability } from '../enums/partner-enums';
2
+ import { UnsatisfiedMemberProfileFieldDto } from '../interfaces/partner-membership.dto';
2
3
  /**
3
4
  * Human labels for the partner enums.
4
5
  *
@@ -48,3 +49,52 @@ export interface PartnerActionCapabilities {
48
49
  supportsWithdrawal?: boolean;
49
50
  supportsAmendment?: boolean;
50
51
  }
52
+ /**
53
+ * How a membership's own lifecycle reads on screen.
54
+ *
55
+ * Worded as what an operator should DO, not as an internal state name. Nobody
56
+ * has to know what PROVISIONING means; they have to know whether somebody is
57
+ * waiting on them.
58
+ */
59
+ export declare const PARTNER_MEMBERSHIP_STATUS_LABELS: Readonly<Record<PartnerMembershipStatus, string>>;
60
+ /**
61
+ * How the PARTNER's own view of a member reads.
62
+ *
63
+ * Kept apart from the status above because the two answer different questions,
64
+ * and collapsing them is how somebody gets told they are covered on the day
65
+ * they paid: "Registered" means the partner has issued a member id, and
66
+ * "Waiting period" means their cover has not started.
67
+ */
68
+ export declare const PARTNER_MEMBER_STATE_LABELS: Readonly<Record<PartnerMemberState, string>>;
69
+ export declare const PARTNER_MEMBERSHIP_SUBJECT_TYPE_LABELS: Readonly<Record<PartnerMembershipSubjectType, string>>;
70
+ export declare const PARTNER_MEMBERSHIP_PACKAGE_SCOPE_LABELS: Readonly<Record<PartnerMembershipPackageScope, string>>;
71
+ export declare const PARTNER_MEMBER_GENDER_LABELS: Readonly<Record<PartnerMemberGender, string>>;
72
+ export declare const PARTNER_MEMBER_DOCUMENT_TYPE_LABELS: Readonly<Record<PartnerMemberDocumentType, string>>;
73
+ /** The provider-neutral profile fields, named for a person to read. */
74
+ export declare const PARTNER_MEMBER_PROFILE_FIELD_LABELS: Readonly<Record<PartnerMemberProfileField, string>>;
75
+ export declare function partnerMembershipStatusTone(status: PartnerMembershipStatus): 'success' | 'warn' | 'danger' | 'neutral';
76
+ /**
77
+ * One line saying what a membership is waiting on, or null when nothing is.
78
+ *
79
+ * The whole point of the membership screen. An operator should never have to
80
+ * open a record to find out whether it needs them, and should never be shown a
81
+ * partner's raw error where a plain sentence would do.
82
+ */
83
+ export declare function describeMembershipAttention(membership: {
84
+ status: PartnerMembershipStatus;
85
+ unsatisfiedFields?: UnsatisfiedMemberProfileFieldDto[];
86
+ lastErrorMessage?: string | null;
87
+ }): string | null;
88
+ /**
89
+ * What the partner's cover actually says, in a sentence.
90
+ *
91
+ * Separate from the status chip because "registered" and "covered" are
92
+ * different facts, and a partner that starts a member on a waiting period would
93
+ * otherwise be reported as though cover began the day they paid.
94
+ */
95
+ export declare function describeMembershipCover(membership: {
96
+ status: PartnerMembershipStatus;
97
+ memberState?: PartnerMemberState | null;
98
+ coverActive?: boolean;
99
+ coverageStartsAt?: string | null;
100
+ }): string | null;
@@ -7,6 +7,13 @@ export declare enum PermissionActions {
7
7
  READ_PARTNER = "read:partner",
8
8
  UPDATE_PARTNER = "update:partner",
9
9
  DELETE_PARTNER = "delete:partner",
10
+ READ_PARTNER_DISPATCH = "read:partner-dispatch",
11
+ APPROVE_PARTNER_DISPATCH = "approve:partner-dispatch",
12
+ UPDATE_PARTNER_DISPATCH = "update:partner-dispatch",
13
+ CANCEL_PARTNER_DISPATCH = "cancel:partner-dispatch",
14
+ RESEND_PARTNER_DISPATCH = "resend:partner-dispatch",
15
+ READ_PARTNER_MEMBERSHIP = "read:partner-membership",
16
+ MANAGE_PARTNER_MEMBERSHIP = "manage:partner-membership",
10
17
  CREATE_CONTROL_CENTRE = "create:control-centre",
11
18
  READ_CONTROL_CENTRE = "read:control-centre",
12
19
  UPDATE_CONTROL_CENTRE = "update:control-centre",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clarion-shared-types",
3
- "version": "1.0.88",
3
+ "version": "1.0.90",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",