@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.
@@ -8854,17 +8854,26 @@ class CaseEditComponent {
8854
8854
  // We have to run the event completion checks if task in session storage
8855
8855
  // and if the task is in session storage, then is it associated to the case
8856
8856
  let taskInSessionStorage;
8857
+ let taskEventInSessionStorage;
8857
8858
  const taskStr = this.sessionStorageService.getItem('taskToComplete');
8859
+ const taskEventStr = this.sessionStorageService.getItem('taskEvent');
8858
8860
  if (taskStr) {
8859
8861
  taskInSessionStorage = JSON.parse(taskStr);
8860
8862
  }
8861
- if (taskInSessionStorage && taskInSessionStorage.case_id === this.getCaseId(caseDetails)) {
8863
+ if (taskEventStr) {
8864
+ taskEventInSessionStorage = JSON.parse(taskEventStr);
8865
+ }
8866
+ const eventId = this.getEventId(form);
8867
+ const caseId = this.getCaseId(caseDetails);
8868
+ if (this.taskExistsForThisEventAndCase(taskInSessionStorage, taskEventInSessionStorage, eventId, caseId)) {
8862
8869
  // Show event completion component to perform event completion checks
8863
8870
  this.eventCompletionParams = ({
8864
8871
  caseId: this.getCaseId(caseDetails),
8865
- eventId: this.getEventId(form),
8872
+ eventId,
8866
8873
  task: taskInSessionStorage
8867
8874
  });
8875
+ const taskEvent = { eventId, taskId: taskInSessionStorage.id };
8876
+ this.sessionStorageService.setItem('taskEvent', JSON.stringify(taskEvent));
8868
8877
  this.isEventCompletionChecksRequired = true;
8869
8878
  }
8870
8879
  else {
@@ -9029,6 +9038,9 @@ class CaseEditComponent {
9029
9038
  return this.postCompleteTaskIfRequired();
9030
9039
  }), finalize(() => {
9031
9040
  this.loadingService.unregister(loadingSpinnerToken);
9041
+ // on event completion ensure the previous event taskToComplete/taskEvent removed
9042
+ this.sessionStorageService.removeItem('taskToComplete');
9043
+ this.sessionStorageService.removeItem('taskEvent');
9032
9044
  }))
9033
9045
  .subscribe(() => {
9034
9046
  this.finishEventCompletionLogic(eventResponse);
@@ -9087,6 +9099,25 @@ class CaseEditComponent {
9087
9099
  return null;
9088
9100
  }
9089
9101
  }
9102
+ // checks whether current taskToComplete relevant for the event
9103
+ taskExistsForThisEventAndCase(taskInSessionStorage, taskEvent, eventId, caseId) {
9104
+ if (!taskInSessionStorage || taskInSessionStorage.case_id !== caseId) {
9105
+ return false;
9106
+ }
9107
+ if (!taskEvent) {
9108
+ // if no task event present then there is no task to complete from previous event present
9109
+ return true;
9110
+ }
9111
+ else {
9112
+ if (taskEvent.taskId === taskInSessionStorage.id && taskEvent.eventId !== eventId) {
9113
+ // if the session storage not related to event, ignore it and remove
9114
+ this.sessionStorageService.removeItem('taskToComplete');
9115
+ this.sessionStorageService.removeItem('taskEvent');
9116
+ return false;
9117
+ }
9118
+ return true;
9119
+ }
9120
+ }
9090
9121
  onEventCanBeCompleted({ eventTrigger, eventCanBeCompleted, caseDetails, form, submit }) {
9091
9122
  if (eventCanBeCompleted) {
9092
9123
  // Submit
@@ -16008,43 +16039,20 @@ function LinkedCasesFromTableComponent_a_0_Template(rf, ctx) { if (rf & 1) {
16008
16039
  i0.ɵɵadvance(1);
16009
16040
  i0.ɵɵtextInterpolate(ctx_r0.showHideLinkText);
16010
16041
  } }
16011
- function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_a_4_Template(rf, ctx) { if (rf & 1) {
16012
- i0.ɵɵelementStart(0, "a", 20);
16013
- i0.ɵɵtext(1);
16014
- i0.ɵɵelementEnd();
16015
- } if (rf & 2) {
16016
- const case_r7 = i0.ɵɵnextContext(3).$implicit;
16017
- const ctx_r14 = i0.ɵɵnextContext(3);
16018
- i0.ɵɵpropertyInterpolate1("href", "cases/case-details/", case_r7.caseReference, "", i0.ɵɵsanitizeUrl);
16019
- i0.ɵɵadvance(1);
16020
- i0.ɵɵtextInterpolate(ctx_r14.getCaseReferenceLink(case_r7.caseReference));
16021
- } }
16022
- function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_br_5_Template(rf, ctx) { if (rf & 1) {
16023
- i0.ɵɵelement(0, "br");
16024
- } }
16025
16042
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template(rf, ctx) { if (rf & 1) {
16026
16043
  i0.ɵɵelementStart(0, "span");
16027
16044
  i0.ɵɵtext(1);
16028
16045
  i0.ɵɵpipe(2, "ccdLinkCasesFromReasonValue");
16029
- i0.ɵɵelementStart(3, "span");
16030
- i0.ɵɵtemplate(4, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_a_4_Template, 2, 2, "a", 18);
16031
- i0.ɵɵelementEnd();
16032
- i0.ɵɵtemplate(5, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_br_5_Template, 1, 0, "br", 19);
16046
+ i0.ɵɵelement(3, "br");
16033
16047
  i0.ɵɵelementEnd();
16034
16048
  } if (rf & 2) {
16035
16049
  const reason_r11 = ctx.$implicit;
16036
- const isLast_r13 = ctx.last;
16037
- const ctx_r10 = i0.ɵɵnextContext(5);
16038
16050
  i0.ɵɵadvance(1);
16039
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 3, reason_r11), "");
16040
- i0.ɵɵadvance(3);
16041
- i0.ɵɵproperty("ngIf", ctx_r10.hasLeadCaseOrConsolidated(reason_r11.reasonCode));
16042
- i0.ɵɵadvance(1);
16043
- i0.ɵɵproperty("ngIf", !isLast_r13);
16051
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, reason_r11), " ");
16044
16052
  } }
16045
16053
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_Template(rf, ctx) { if (rf & 1) {
16046
16054
  i0.ɵɵelementStart(0, "td", 14);
16047
- i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template, 6, 5, "span", 17);
16055
+ i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_td_18_span_1_Template, 4, 3, "span", 17);
16048
16056
  i0.ɵɵelementEnd();
16049
16057
  } if (rf & 2) {
16050
16058
  const details_r9 = ctx.$implicit;
@@ -16091,7 +16099,7 @@ function LinkedCasesFromTableComponent_table_1_tbody_13_tr_1_Template(rf, ctx) {
16091
16099
  i0.ɵɵproperty("ngForOf", case_r7.linkDetails);
16092
16100
  } }
16093
16101
  function LinkedCasesFromTableComponent_table_1_tbody_13_tr_2_Template(rf, ctx) { if (rf & 1) {
16094
- i0.ɵɵelementStart(0, "tr", 5)(1, "td", 21);
16102
+ i0.ɵɵelementStart(0, "tr", 5)(1, "td", 18);
16095
16103
  i0.ɵɵtext(2, " None ");
16096
16104
  i0.ɵɵelementEnd()();
16097
16105
  } }
@@ -16190,13 +16198,6 @@ class LinkedCasesFromTableComponent {
16190
16198
  mapLookupIDToValueFromJurisdictions(fieldName, fieldValue) {
16191
16199
  return this.linkedCasesService.mapLookupIDToValueFromJurisdictions(fieldName, fieldValue);
16192
16200
  }
16193
- getCaseReferenceLink(caseRef) {
16194
- return caseRef.slice(this.caseId.length - 4);
16195
- }
16196
- hasLeadCaseOrConsolidated(reasonCode) {
16197
- return reasonCode === LinkedCasesFromTableComponent.CASE_PROGRESS_REASON_CODE ||
16198
- reasonCode === LinkedCasesFromTableComponent.CASE_CONSOLIDATED_REASON_CODE;
16199
- }
16200
16201
  onClick() {
16201
16202
  this.showHideLinkText = this.showHideLinkText === 'Show'
16202
16203
  ? 'Hide'
@@ -16204,10 +16205,8 @@ class LinkedCasesFromTableComponent {
16204
16205
  }
16205
16206
  }
16206
16207
  LinkedCasesFromTableComponent.CASE_NAME_MISSING_TEXT = 'Case name missing';
16207
- LinkedCasesFromTableComponent.CASE_CONSOLIDATED_REASON_CODE = 'CLRC015';
16208
- LinkedCasesFromTableComponent.CASE_PROGRESS_REASON_CODE = 'CLRC016';
16209
16208
  LinkedCasesFromTableComponent.ɵfac = function LinkedCasesFromTableComponent_Factory(t) { return new (t || LinkedCasesFromTableComponent)(i0.ɵɵdirectiveInject(i1$1.ActivatedRoute), i0.ɵɵdirectiveInject(CasesService), i0.ɵɵdirectiveInject(LinkedCasesService)); };
16210
- 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) { if (rf & 1) {
16209
+ 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) { if (rf & 1) {
16211
16210
  i0.ɵɵtemplate(0, LinkedCasesFromTableComponent_a_0_Template, 2, 1, "a", 0);
16212
16211
  i0.ɵɵtemplate(1, LinkedCasesFromTableComponent_table_1_Template, 14, 1, "table", 1);
16213
16212
  } if (rf & 2) {
@@ -16217,7 +16216,7 @@ LinkedCasesFromTableComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ typ
16217
16216
  } }, styles: [".case-table-column[_ngcontent-%COMP%]{min-width:20%;max-width:20%}.heading-h2[_ngcontent-%COMP%]{margin-bottom:0}"] });
16218
16217
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LinkedCasesFromTableComponent, [{
16219
16218
  type: Component,
16220
- 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"] }]
16219
+ 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"] }]
16221
16220
  }], function () { return [{ type: i1$1.ActivatedRoute }, { type: CasesService }, { type: LinkedCasesService }]; }, { caseField: [{
16222
16221
  type: Input
16223
16222
  }], notifyAPIFailure: [{