@hmcts/ccd-case-ui-toolkit 7.0.39-case-consolidated-link → 7.0.39-task-event-completion-fix

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.
@@ -9159,17 +9159,26 @@ class CaseEditComponent {
9159
9159
  // We have to run the event completion checks if task in session storage
9160
9160
  // and if the task is in session storage, then is it associated to the case
9161
9161
  let taskInSessionStorage;
9162
+ let taskEventInSessionStorage;
9162
9163
  const taskStr = this.sessionStorageService.getItem('taskToComplete');
9164
+ const taskEventStr = this.sessionStorageService.getItem('taskEvent');
9163
9165
  if (taskStr) {
9164
9166
  taskInSessionStorage = JSON.parse(taskStr);
9165
9167
  }
9166
- if (taskInSessionStorage && taskInSessionStorage.case_id === this.getCaseId(caseDetails)) {
9168
+ if (taskEventStr) {
9169
+ taskEventInSessionStorage = JSON.parse(taskEventStr);
9170
+ }
9171
+ const eventId = this.getEventId(form);
9172
+ const caseId = this.getCaseId(caseDetails);
9173
+ if (this.taskExistsForThisEventAndCase(taskInSessionStorage, taskEventInSessionStorage, eventId, caseId)) {
9167
9174
  // Show event completion component to perform event completion checks
9168
9175
  this.eventCompletionParams = ({
9169
9176
  caseId: this.getCaseId(caseDetails),
9170
- eventId: this.getEventId(form),
9177
+ eventId,
9171
9178
  task: taskInSessionStorage
9172
9179
  });
9180
+ const taskEvent = { eventId, taskId: taskInSessionStorage.id };
9181
+ this.sessionStorageService.setItem('taskEvent', JSON.stringify(taskEvent));
9173
9182
  this.isEventCompletionChecksRequired = true;
9174
9183
  }
9175
9184
  else {
@@ -9334,6 +9343,9 @@ class CaseEditComponent {
9334
9343
  return this.postCompleteTaskIfRequired();
9335
9344
  }), finalize(() => {
9336
9345
  this.loadingService.unregister(loadingSpinnerToken);
9346
+ // on event completion ensure the previous event taskToComplete/taskEvent removed
9347
+ this.sessionStorageService.removeItem('taskToComplete');
9348
+ this.sessionStorageService.removeItem('taskEvent');
9337
9349
  }))
9338
9350
  .subscribe(() => {
9339
9351
  this.finishEventCompletionLogic(eventResponse);
@@ -9392,6 +9404,25 @@ class CaseEditComponent {
9392
9404
  return null;
9393
9405
  }
9394
9406
  }
9407
+ // checks whether current taskToComplete relevant for the event
9408
+ taskExistsForThisEventAndCase(taskInSessionStorage, taskEvent, eventId, caseId) {
9409
+ if (!taskInSessionStorage || taskInSessionStorage.case_id !== caseId) {
9410
+ return false;
9411
+ }
9412
+ if (!taskEvent) {
9413
+ // if no task event present then there is no task to complete from previous event present
9414
+ return true;
9415
+ }
9416
+ else {
9417
+ if (taskEvent.taskId === taskInSessionStorage.id && taskEvent.eventId !== eventId) {
9418
+ // if the session storage not related to event, ignore it and remove
9419
+ this.sessionStorageService.removeItem('taskToComplete');
9420
+ this.sessionStorageService.removeItem('taskEvent');
9421
+ return false;
9422
+ }
9423
+ return true;
9424
+ }
9425
+ }
9395
9426
  onEventCanBeCompleted({ eventTrigger, eventCanBeCompleted, caseDetails, form, submit }) {
9396
9427
  if (eventCanBeCompleted) {
9397
9428
  // Submit
@@ -17048,52 +17079,24 @@ function LinkedCasesFromTableComponent_a_0_Template(rf, ctx) {
17048
17079
  i0.ɵɵtextInterpolate(ctx_r0.showHideLinkText);
17049
17080
  }
17050
17081
  }
17051
- function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_a_4_Template(rf, ctx) {
17052
- if (rf & 1) {
17053
- i0.ɵɵelementStart(0, "a", 20);
17054
- i0.ɵɵtext(1);
17055
- i0.ɵɵelementEnd();
17056
- }
17057
- if (rf & 2) {
17058
- const case_r7 = i0.ɵɵnextContext(3).$implicit;
17059
- const ctx_r14 = i0.ɵɵnextContext(3);
17060
- i0.ɵɵpropertyInterpolate1("href", "cases/case-details/", case_r7.caseReference, "", i0.ɵɵsanitizeUrl);
17061
- i0.ɵɵadvance(1);
17062
- i0.ɵɵtextInterpolate(ctx_r14.getCaseReferenceLink(case_r7.caseReference));
17063
- }
17064
- }
17065
- function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_br_5_Template(rf, ctx) {
17066
- if (rf & 1) {
17067
- i0.ɵɵelement(0, "br");
17068
- }
17069
- }
17070
17082
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template(rf, ctx) {
17071
17083
  if (rf & 1) {
17072
17084
  i0.ɵɵelementStart(0, "span");
17073
17085
  i0.ɵɵtext(1);
17074
17086
  i0.ɵɵpipe(2, "ccdLinkCasesFromReasonValue");
17075
- i0.ɵɵelementStart(3, "span");
17076
- i0.ɵɵtemplate(4, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_a_4_Template, 2, 2, "a", 18);
17077
- i0.ɵɵelementEnd();
17078
- i0.ɵɵtemplate(5, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_br_5_Template, 1, 0, "br", 19);
17087
+ i0.ɵɵelement(3, "br");
17079
17088
  i0.ɵɵelementEnd();
17080
17089
  }
17081
17090
  if (rf & 2) {
17082
17091
  const reason_r11 = ctx.$implicit;
17083
- const isLast_r13 = ctx.last;
17084
- const ctx_r10 = i0.ɵɵnextContext(5);
17085
- i0.ɵɵadvance(1);
17086
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, reason_r11), "");
17087
- i0.ɵɵadvance(3);
17088
- i0.ɵɵproperty("ngIf", ctx_r10.hasLeadCaseOrConsolidated(reason_r11.reasonCode));
17089
17092
  i0.ɵɵadvance(1);
17090
- i0.ɵɵproperty("ngIf", !isLast_r13);
17093
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, reason_r11), " ");
17091
17094
  }
17092
17095
  }
17093
17096
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_Template(rf, ctx) {
17094
17097
  if (rf & 1) {
17095
17098
  i0.ɵɵelementStart(0, "td", 14);
17096
- i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template, 6, 5, "span", 17);
17099
+ i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template, 4, 3, "span", 17);
17097
17100
  i0.ɵɵelementEnd();
17098
17101
  }
17099
17102
  if (rf & 2) {
@@ -17146,7 +17149,7 @@ function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_Template(rf, ctx) {
17146
17149
  }
17147
17150
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_2_Template(rf, ctx) {
17148
17151
  if (rf & 1) {
17149
- i0.ɵɵelementStart(0, "tr", 5)(1, "td", 21);
17152
+ i0.ɵɵelementStart(0, "tr", 5)(1, "td", 18);
17150
17153
  i0.ɵɵtext(2, " None ");
17151
17154
  i0.ɵɵelementEnd()();
17152
17155
  }
@@ -17243,13 +17246,6 @@ class LinkedCasesFromTableComponent {
17243
17246
  mapLookupIDToValueFromJurisdictions(fieldName, fieldValue) {
17244
17247
  return this.linkedCasesService.mapLookupIDToValueFromJurisdictions(fieldName, fieldValue);
17245
17248
  }
17246
- getCaseReferenceLink(caseRef) {
17247
- return caseRef.slice(this.caseId.length - 4);
17248
- }
17249
- hasLeadCaseOrConsolidated(reasonCode) {
17250
- return reasonCode === LinkedCasesFromTableComponent.CASE_PROGRESS_REASON_CODE ||
17251
- reasonCode === LinkedCasesFromTableComponent.CASE_CONSOLIDATED_REASON_CODE;
17252
- }
17253
17249
  onClick() {
17254
17250
  this.showHideLinkText = this.showHideLinkText === 'Show'
17255
17251
  ? 'Hide'
@@ -17257,10 +17253,8 @@ class LinkedCasesFromTableComponent {
17257
17253
  }
17258
17254
  }
17259
17255
  LinkedCasesFromTableComponent.CASE_NAME_MISSING_TEXT = 'Case name missing';
17260
- LinkedCasesFromTableComponent.CASE_CONSOLIDATED_REASON_CODE = 'CLRC015';
17261
- LinkedCasesFromTableComponent.CASE_PROGRESS_REASON_CODE = 'CLRC016';
17262
17256
  LinkedCasesFromTableComponent.ɵfac = function LinkedCasesFromTableComponent_Factory(t) { return new (t || LinkedCasesFromTableComponent)(i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(CasesService), i0.ɵɵdirectiveInject(LinkedCasesService)); };
17263
- LinkedCasesFromTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LinkedCasesFromTableComponent, selectors: [["ccd-linked-cases-from-table"]], inputs: { caseField: "caseField" }, outputs: { notifyAPIFailure: "notifyAPIFailure" }, decls: 2, vars: 2, consts: [["id", "show-hide-link", "class", "govuk-link", "href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "table to display cases linked from", 4, "ngIf"], ["id", "show-hide-link", "href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["aria-describedby", "table to display cases linked from"], [1, "govuk-table__head"], [1, "govuk-table__row"], ["scope", "col", "width", "20%", 1, "govuk-table__header", "case-table-column"], ["class", "govuk-table__body", 4, "ngIf"], [1, "govuk-table__body"], ["class", "govuk-table__row", 4, "ngFor", "ngForOf"], ["class", "govuk-table__row", 4, "ngIf"], [1, "govuk-table__header", "case-table-column", "width-20"], [1, "govuk-body"], ["target", "_blank", "rel", "noopener", 1, "govuk-link", 3, "href"], [1, "case-table-column"], [3, "title"], ["class", "case-table-column", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["class", "govuk-!-padding-left-1", 3, "href", 4, "ngIf"], [4, "ngIf"], [1, "govuk-!-padding-left-1", 3, "href"], ["colspan", "5", 1, "govuk-table__cell"]], template: function LinkedCasesFromTableComponent_Template(rf, ctx) {
17257
+ LinkedCasesFromTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LinkedCasesFromTableComponent, selectors: [["ccd-linked-cases-from-table"]], inputs: { caseField: "caseField" }, outputs: { notifyAPIFailure: "notifyAPIFailure" }, decls: 2, vars: 2, consts: [["id", "show-hide-link", "class", "govuk-link", "href", "javascript:void(0)", 3, "click", 4, "ngIf"], ["aria-describedby", "table to display cases linked from", 4, "ngIf"], ["id", "show-hide-link", "href", "javascript:void(0)", 1, "govuk-link", 3, "click"], ["aria-describedby", "table to display cases linked from"], [1, "govuk-table__head"], [1, "govuk-table__row"], ["scope", "col", "width", "20%", 1, "govuk-table__header", "case-table-column"], ["class", "govuk-table__body", 4, "ngIf"], [1, "govuk-table__body"], ["class", "govuk-table__row", 4, "ngFor", "ngForOf"], ["class", "govuk-table__row", 4, "ngIf"], [1, "govuk-table__header", "case-table-column", "width-20"], [1, "govuk-body"], ["target", "_blank", "rel", "noopener", 1, "govuk-link", 3, "href"], [1, "case-table-column"], [3, "title"], ["class", "case-table-column", 4, "ngFor", "ngForOf"], [4, "ngFor", "ngForOf"], ["colspan", "5", 1, "govuk-table__cell"]], template: function LinkedCasesFromTableComponent_Template(rf, ctx) {
17264
17258
  if (rf & 1) {
17265
17259
  i0.ɵɵtemplate(0, LinkedCasesFromTableComponent_a_0_Template, 2, 1, "a", 0);
17266
17260
  i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_Template, 14, 1, "table", 1);
@@ -17274,7 +17268,7 @@ LinkedCasesFromTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ typ
17274
17268
  (function () {
17275
17269
  (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LinkedCasesFromTableComponent, [{
17276
17270
  type: Component,
17277
- args: [{ selector: 'ccd-linked-cases-from-table', template: "<a *ngIf=\"!noLinkedCases && !isServerError\" id=\"show-hide-link\" class=\"govuk-link\" href=\"javascript:void(0)\"\n (click)=\"onClick()\">{{showHideLinkText}}</a>\n<table *ngIf=\"(getLinkedCasesResponse && showHideLinkText === 'Hide') || noLinkedCases\"\n aria-describedby=\"table to display cases linked from\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Case name and number</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Case type </th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Service</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">State</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Reasons for case link</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"getLinkedCasesResponse && (!isServerError && !isServerReasonCodeError)\">\n <tr class=\"govuk-table__row\" *ngFor=\"let case of getLinkedCasesResponse\">\n <td class=\"govuk-table__header case-table-column width-20\">\n <p class=\"govuk-body\"><a target=\"_blank\" class=\"govuk-link\" href=\"cases/case-details/{{case.caseReference}}\"\n rel=\"noopener\"><span>{{case.caseNameHmctsInternal}} <br>\n {{case.caseReference | ccdCaseReference}}</span></a></p>\n </td>\n <td class=\"case-table-column\"><span [title]=\"case.ccdCaseTypeDescription\">{{case.ccdCaseType}}</span></td>\n <td class=\"case-table-column\"><span>{{case.ccdJurisdiction}}</span></td>\n <td class=\"case-table-column\"><span [title]=\"case.stateDescription\">{{case.state}}</span></td>\n <td class=\"case-table-column\" *ngFor=\"let details of case.linkDetails\">\n <span *ngFor=\"let reason of details.reasons; let i = index; let isLast = last\">\n {{reason | ccdLinkCasesFromReasonValue}}<span><a class=\"govuk-!-padding-left-1\"\n href=\"cases/case-details/{{ case.caseReference }}\"\n *ngIf=\"hasLeadCaseOrConsolidated(reason.reasonCode)\">{{getCaseReferenceLink(case.caseReference)}}</a></span>\n <br *ngIf=\"!isLast\" />\n </span>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"noLinkedCases\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n None\n </td>\n </tr>\n </tbody> \n</table>\n", styles: [".case-table-column{min-width:20%;max-width:20%}.heading-h2{margin-bottom:0}\n"] }]
17271
+ args: [{ selector: 'ccd-linked-cases-from-table', template: "<a *ngIf=\"!noLinkedCases && !isServerError\" id=\"show-hide-link\" class=\"govuk-link\" href=\"javascript:void(0)\"\n (click)=\"onClick()\">{{showHideLinkText}}</a>\n<table *ngIf=\"(getLinkedCasesResponse && showHideLinkText === 'Hide') || noLinkedCases\"\n aria-describedby=\"table to display cases linked from\">\n <thead class=\"govuk-table__head\">\n <tr class=\"govuk-table__row\">\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Case name and number</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Case type </th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Service</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">State</th>\n <th scope=\"col\" class=\"govuk-table__header case-table-column\" width=\"20%\">Reasons for case link</th>\n </tr>\n </thead>\n <tbody class=\"govuk-table__body\" *ngIf=\"getLinkedCasesResponse && (!isServerError && !isServerReasonCodeError)\">\n <tr class=\"govuk-table__row\" *ngFor=\"let case of getLinkedCasesResponse\">\n <td class=\"govuk-table__header case-table-column width-20\">\n <p class=\"govuk-body\"><a target=\"_blank\" class=\"govuk-link\" href=\"cases/case-details/{{case.caseReference}}\"\n rel=\"noopener\"><span>{{case.caseNameHmctsInternal}} <br>\n {{case.caseReference | ccdCaseReference}}</span></a></p>\n </td>\n <td class=\"case-table-column\"><span [title]=\"case.ccdCaseTypeDescription\">{{case.ccdCaseType}}</span></td>\n <td class=\"case-table-column\"><span>{{case.ccdJurisdiction}}</span></td>\n <td class=\"case-table-column\"><span [title]=\"case.stateDescription\">{{case.state}}</span></td>\n <td class=\"case-table-column\" *ngFor=\"let details of case.linkDetails\">\n <span *ngFor=\"let reason of details.reasons; let i = index; let isLast = last\">\n {{reason | ccdLinkCasesFromReasonValue}} <br>\n </span>\n </td>\n </tr>\n <tr class=\"govuk-table__row\" *ngIf=\"noLinkedCases\">\n <td class=\"govuk-table__cell\" colspan=\"5\">\n None\n </td>\n </tr>\n </tbody> \n</table>\n", styles: [".case-table-column{min-width:20%;max-width:20%}.heading-h2{margin-bottom:0}\n"] }]
17278
17272
  }], function () { return [{ type: i1$1.ActivatedRoute }, { type: CasesService }, { type: LinkedCasesService }]; }, { caseField: [{
17279
17273
  type: Input
17280
17274
  }], notifyAPIFailure: [{