From f4d5baed044bbab4c0640cb5ac2142ca9b484e3e Mon Sep 17 00:00:00 2001 From: Nechama Krigsman Date: Mon, 11 Sep 2023 15:36:46 -0400 Subject: [PATCH 01/32] 9995: address feedback --- .../computeds/CaseWorksheets/caseWorksheetsHelper.ts | 7 +++++-- web-client/src/views/CaseWorksheet/CaseWorksheets.tsx | 10 +++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts index 47c64ebb04d..908f1c743ed 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts @@ -1,4 +1,5 @@ import { RawCaseWorksheet } from '@shared/business/entities/caseWorksheet/CaseWorksheet'; +import { formatPositiveNumber } from '@shared/business/utilities/formatPositiveNumber'; import { state } from '@web-client/presenter/app.cerebral'; type CaseWorksheetTableRow = RawCase & { @@ -52,9 +53,11 @@ export const caseWorksheetsHelper = ( .calculateDifferenceInDays(today, lastStatusChange); return { - caseTitle: applicationContext.getCaseTitle(aCase.caseCaption), + caseCaption: aCase.caseCaption, consolidatedIconTooltipText: isLeadCase(aCase) ? 'Lead case' : '', - daysSinceLastStatusChange, + daysSinceLastStatusChange: formatPositiveNumber( + daysSinceLastStatusChange, + ), docketNumber: aCase.docketNumber, docketNumberWithSuffix: aCase.docketNumberWithSuffix, formattedCaseCount, diff --git a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx index 4fb9ee1b76f..f2ea52a6acb 100644 --- a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx +++ b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx @@ -91,10 +91,14 @@ export const CaseWorksheets = connect( /> - + {formattedCase.formattedCaseCount} - {formattedCase.caseTitle} + {formattedCase.caseCaption} {formattedCase.status} {formattedCase.daysSinceLastStatusChange} {formattedCase.formattedSubmittedCavStatusDate} @@ -214,7 +218,7 @@ export const CaseWorksheets = connect( {caseWorksheetsHelper.caseWorksheetsFormatted.length === 0 && (
There are no cases with a status of "Submitted" or - "CAV" + "CAV".
)} From 04d6223553a2eda177215947930bc347fdb171f6 Mon Sep 17 00:00:00 2001 From: Nechama Krigsman Date: Mon, 11 Sep 2023 16:06:32 -0400 Subject: [PATCH 02/32] 9995: add test --- .../caseWorksheetsHelper.test.ts | 37 +++++++++++-------- .../CaseWorksheets/caseWorksheetsHelper.ts | 2 +- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.test.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.test.ts index ede81034609..23dd63e31d8 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.test.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.test.ts @@ -17,11 +17,11 @@ describe('caseWorksheetsHelper', () => { caseCaption: 'Scooby Doo, Petitioner', caseStatusHistory: [ { - date: '2022-02-15T05:00:00.000Z', + date: '2002-02-15T05:00:00.000Z', updatedCaseStatus: CASE_STATUS_TYPES.generalDocket, }, { - date: '2022-02-16T05:00:00.000Z', + date: '2002-02-16T05:00:00.000Z', updatedCaseStatus: CASE_STATUS_TYPES.submitted, }, ], @@ -74,33 +74,33 @@ describe('caseWorksheetsHelper', () => { const EXPECTED_FORMATTED_CASE_WORKSHEETS = [ { - caseTitle: 'Fred Dude', - consolidatedIconTooltipText: '', + caseCaption: 'Scooby Doo, Petitioner', + consolidatedIconTooltipText: 'Lead case', daysSinceLastStatusChange: expect.anything(), - docketNumber: '202-11', + docketNumber: '101-20', docketNumberWithSuffix: undefined, formattedCaseCount: 1, - formattedSubmittedCavStatusDate: '02/06/22', - inConsolidatedGroup: false, - isLeadCase: false, + formattedSubmittedCavStatusDate: '02/16/02', + inConsolidatedGroup: true, + isLeadCase: true, status: undefined, worksheet: {}, }, { - caseTitle: 'Scooby Doo', - consolidatedIconTooltipText: 'Lead case', + caseCaption: 'Fred Dude, Petitioner', + consolidatedIconTooltipText: '', daysSinceLastStatusChange: expect.anything(), - docketNumber: '101-20', + docketNumber: '202-11', docketNumberWithSuffix: undefined, formattedCaseCount: 1, - formattedSubmittedCavStatusDate: '02/16/22', - inConsolidatedGroup: true, - isLeadCase: true, + formattedSubmittedCavStatusDate: '02/06/22', + inConsolidatedGroup: false, + isLeadCase: false, status: undefined, worksheet: {}, }, { - caseTitle: 'Velma Jinkies', + caseCaption: 'Velma Jinkies, Petitioner', consolidatedIconTooltipText: '', daysSinceLastStatusChange: expect.anything(), docketNumber: '110-15', @@ -116,6 +116,13 @@ describe('caseWorksheetsHelper', () => { }, }, ]; + const caseWithOlderStatusChange = caseWorksheetsFormatted.find( + aCase => aCase.docketNumber === '101-20', + ); expect(caseWorksheetsFormatted).toEqual(EXPECTED_FORMATTED_CASE_WORKSHEETS); + + expect( + `${caseWithOlderStatusChange!.daysSinceLastStatusChange}`.includes(','), + ).toBeTruthy(); }); }); diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts index 908f1c743ed..4de45dd6943 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts @@ -8,7 +8,7 @@ type CaseWorksheetTableRow = RawCase & { isLeadCase: boolean; inConsolidatedGroup: boolean; formattedCaseCount: number; - daysElapsedSinceLastStatusChange: number; + daysSinceLastStatusChange: number; formattedSubmittedCavStatusChangedDate: string; }; From 14a16318360b9bca3b76cffb25ef6bddb75518b9 Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Mon, 11 Sep 2023 13:31:00 -0700 Subject: [PATCH 03/32] 9995: Fix swagger lint issue --- web-api/swagger.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/web-api/swagger.json b/web-api/swagger.json index 3748a36a7c8..ba422182a1c 100644 --- a/web-api/swagger.json +++ b/web-api/swagger.json @@ -7534,7 +7534,6 @@ }, "/case-worksheet/{docketNumber}/primary-issue/delete": { "post": { - "tags": ["case-worksheet"], "summary": "delete a primary issue from a case worksheet", "description": "Delete a primary issue from a case worksheet.\n", "produces": ["application/json"], @@ -7578,7 +7577,6 @@ }, "/case-worksheet": { "get": { - "tags": ["case-worksheet"], "summary": "get all case worksheets for the specified judge", "description": "Get all case worksheets for the specified judge.\n", "produces": ["application/json"], @@ -7622,7 +7620,6 @@ }, "/cases/{docketNumber}/case-worksheet": { "post": { - "tags": ["case-worksheet"], "summary": "update a case worksheet", "description": "Update a case worksheet.\n", "produces": ["application/json"], From 0a7b130e65d12f7c795db861455032045836722f Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Mon, 11 Sep 2023 13:51:14 -0700 Subject: [PATCH 04/32] 9995: Fix swagger linting issues --- web-api/swagger.json | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/web-api/swagger.json b/web-api/swagger.json index ba422182a1c..ea7088b2d90 100644 --- a/web-api/swagger.json +++ b/web-api/swagger.json @@ -7533,6 +7533,14 @@ } }, "/case-worksheet/{docketNumber}/primary-issue/delete": { + "parameters": [ + { + "name": "docketNumber", + "in": "path", + "required": true, + "type": "string" + } + ], "post": { "summary": "delete a primary issue from a case worksheet", "description": "Delete a primary issue from a case worksheet.\n", @@ -7619,6 +7627,14 @@ } }, "/cases/{docketNumber}/case-worksheet": { + "parameters": [ + { + "name": "docketNumber", + "in": "path", + "required": true, + "type": "string" + } + ], "post": { "summary": "update a case worksheet", "description": "Update a case worksheet.\n", @@ -8134,6 +8150,28 @@ }, "description": "a case procedural note" }, + "case-worksheet": { + "type": "object", + "properties": { + "primaryIssue": { + "type": "string", + "description": "the primary issue noted for the case in Submitted/CAV status to which the worksheet belongs" + }, + "finalBriefDueDate": { + "type": "string", + "description": "the date the final briefs are due for the case to which the worksheet belongs" + }, + "statusOfMatter": { + "type": "string", + "description": "" + }, + "entityName": { + "type": "string", + "description": "the name of the entity - CaseWorksheet" + } + }, + "description": "a case deadline" + }, "message": { "type": "object", "properties": { From 92d97750a03b3c6ac3a05a622648833c13d5dbfe Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Mon, 11 Sep 2023 14:30:51 -0700 Subject: [PATCH 05/32] 9995: WIP move all editable fields from case worksheets table to modal for each individual case worksheet --- ...setAddEditCaseWorksheetModalStateAction.ts | 19 +++++ .../addEditPrimaryIssueModalHelper.ts | 2 +- .../openAddEditPrimaryIssueModalSequence.ts | 6 +- .../AddEditPrimaryIssueModal.tsx | 64 ++++++++++++++- .../views/CaseWorksheet/CaseWorksheets.tsx | 82 ++++++------------- 5 files changed, 108 insertions(+), 65 deletions(-) create mode 100644 web-client/src/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction.ts diff --git a/web-client/src/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction.ts b/web-client/src/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction.ts new file mode 100644 index 00000000000..a92a4bc2f7b --- /dev/null +++ b/web-client/src/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction.ts @@ -0,0 +1,19 @@ +import { state } from '@web-client/presenter/app.cerebral'; + +export const setAddEditCaseWorksheetModalStateAction = ({ + get, + props, + store, +}: ActionProps<{ + docketNumber: string; +}>) => { + const { docketNumber } = props; + + const { worksheets = [] } = get(state.submittedAndCavCases); + + const caseWorksheet = worksheets.find( + ws => ws.docketNumber === docketNumber, + ) || { docketNumber }; + + store.set(state.form, caseWorksheet); +}; diff --git a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts index cacab9efd76..a40b8b088b0 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts @@ -6,7 +6,7 @@ export const addEditPrimaryIssueModalHelper = ( get: Get, applicationContext: ClientApplicationContext, ): { title: string } => { - const { docketNumber } = get(state.modal); + const { docketNumber } = get(state.form); const { submittedAndCavCasesByJudge = [] } = get(state.submittedAndCavCases); diff --git a/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts b/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts index 845b3c293e0..63b6a8ed08c 100644 --- a/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts +++ b/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts @@ -1,9 +1,11 @@ +import { clearFormAction } from '@web-client/presenter/actions/clearFormAction'; import { clearModalStateAction } from '../actions/clearModalStateAction'; -import { setAddEditPrimaryIssueModalStateAction } from '@web-client/presenter/actions/CaseWorksheet/setAddEditPrimaryIssueModalStateAction'; +import { setAddEditCaseWorksheetModalStateAction } from '@web-client/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction'; import { setShowModalFactoryAction } from '../actions/setShowModalFactoryAction'; export const openAddEditPrimaryIssueModalSequence = [ clearModalStateAction, - setAddEditPrimaryIssueModalStateAction, + clearFormAction, + setAddEditCaseWorksheetModalStateAction, setShowModalFactoryAction('AddEditPrimaryIssueModal'), ]; diff --git a/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx b/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx index 685e59ca11d..bb9c02a589d 100644 --- a/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx +++ b/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx @@ -1,17 +1,24 @@ import { BindedTextarea } from '../../ustc-ui/BindedTextarea/BindedTextarea'; import { ConfirmModal } from '../../ustc-ui/Modal/ConfirmModal'; +import { DateInput } from '@web-client/ustc-ui/DateInput/DateInput'; import { FormGroup } from '../../ustc-ui/FormGroup/FormGroup'; import { connect } from '@cerebral/react'; -import { state } from '@web-client/presenter/app.cerebral'; +import { sequences, state } from '@web-client/presenter/app.cerebral'; import React from 'react'; export const AddEditPrimaryIssueModal = connect( { + STATUS_OF_MATTER_OPTIONS: state.constants.STATUS_OF_MATTER_OPTIONS, addEditPrimaryIssueModalHelper: state.addEditPrimaryIssueModalHelper, + form: state.form, + updateFormValueSequence: sequences.updateFormValueSequence, validationErrors: state.validationErrors, }, function AddEditPrimaryIssueModal({ addEditPrimaryIssueModalHelper, + form, + STATUS_OF_MATTER_OPTIONS, + updateFormValueSequence, validationErrors, }) { return ( @@ -19,24 +26,75 @@ export const AddEditPrimaryIssueModal = connect( cancelLabel="Cancel" confirmLabel="Save" preventCancelOnBlur={true} - title="Add/Edit Primary Issue" + title="Add/Edit Case Worksheet" onCancelSequence="clearModalFormSequence" onConfirmSequence="updatePrimaryIssueSequence" >
{addEditPrimaryIssueModalHelper.title}
+ + {/* */} + { + // updateFinalBriefDueDateSequence({ + // docketNumber: formattedCase.docketNumber, + // finalBriefDueDate: value === '' ? null : value, + // }); + // }} + /> + + + + + + {console.log('**** ', form)} ); }, diff --git a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx index f2ea52a6acb..7260450887f 100644 --- a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx +++ b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx @@ -74,6 +74,7 @@ export const CaseWorksheets = connect( Status Date Final Brief Due Date Status of Matter + @@ -102,67 +103,21 @@ export const CaseWorksheets = connect( {formattedCase.status} {formattedCase.daysSinceLastStatusChange} {formattedCase.formattedSubmittedCavStatusDate} + {formattedCase.worksheet.finalBriefDueDate} + {formattedCase.worksheet.statusOfMatter} - - { - updateFinalBriefDueDateSequence({ - docketNumber: formattedCase.docketNumber, - finalBriefDueDate: value === '' ? null : value, - }); - }} - /> - - - - - - - - - - - Primary Issue: - - {formattedCase.worksheet.primaryIssue} - - - {!formattedCase.worksheet.primaryIssue && ( + Edit + + {/* {!formattedCase.worksheet.primaryIssue && ( - )} - {formattedCase.worksheet.primaryIssue && ( + )} */} + {/* {formattedCase.worksheet.primaryIssue && (
- )} + )} */} + + + + + + + Primary Issue: + + {formattedCase.worksheet.primaryIssue} From 180aa9b7dccafc12938c6fd8208ccb45d843c04f Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Mon, 11 Sep 2023 20:46:17 -0700 Subject: [PATCH 06/32] 9995: WIP move edit/add case worksheet to modal --- .../entities/caseWorksheet/CaseWorksheet.ts | 10 +-- .../updateCaseWorksheetInteractor.ts | 20 +---- .../caseWorksheet/updateCaseWorksheetProxy.ts | 11 ++- .../caseWorksheetsJourney.test.ts | 50 +++++------ .../updateCaseWorksheetAction.ts | 27 ++++++ .../getComputedFormDateFactoryAction.ts | 34 +------- .../actions/validateCaseWorksheetAction.ts | 39 +++++++++ web-client/src/presenter/presenter.ts | 14 ++- .../sequences/createCaseDeadlineSequence.ts | 2 +- .../sequences/deletePrimaryIssueSequence.ts | 10 --- ... openAddEditCaseWorksheetModalSequence.ts} | 4 +- .../openDeletePrimaryIssueSequence.ts | 9 -- ...ence.ts => updateCaseWorksheetSequence.ts} | 15 ++-- .../validateCaseWorksheetSequence.ts | 20 +++++ ...odal.tsx => AddEditCaseWorksheetModal.tsx} | 32 ++----- .../views/CaseWorksheet/CaseWorksheets.tsx | 86 ++----------------- .../CaseWorksheet/DeletePrimaryIssueModal.tsx | 28 ------ 17 files changed, 161 insertions(+), 250 deletions(-) create mode 100644 web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts create mode 100644 web-client/src/presenter/actions/validateCaseWorksheetAction.ts delete mode 100644 web-client/src/presenter/sequences/deletePrimaryIssueSequence.ts rename web-client/src/presenter/sequences/{openAddEditPrimaryIssueModalSequence.ts => openAddEditCaseWorksheetModalSequence.ts} (80%) delete mode 100644 web-client/src/presenter/sequences/openDeletePrimaryIssueSequence.ts rename web-client/src/presenter/sequences/{updatePrimaryIssueSequence.ts => updateCaseWorksheetSequence.ts} (61%) create mode 100644 web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts rename web-client/src/views/CaseWorksheet/{AddEditPrimaryIssueModal.tsx => AddEditCaseWorksheetModal.tsx} (72%) delete mode 100644 web-client/src/views/CaseWorksheet/DeletePrimaryIssueModal.tsx diff --git a/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts b/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts index 69a3969fe82..63443387bce 100644 --- a/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts +++ b/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts @@ -19,8 +19,10 @@ export class CaseWorksheet extends JoiValidationEntity { static VALIDATION_RULES = { docketNumber: JoiValidationConstants.DOCKET_NUMBER.required(), - finalBriefDueDate: JoiValidationConstants.DATE.allow('').optional(), - primaryIssue: JoiValidationConstants.STRING.optional(), + finalBriefDueDate: JoiValidationConstants.DATE.allow('') + .invalid(null) + .optional(), + primaryIssue: JoiValidationConstants.STRING.allow('').optional(), statusOfMatter: JoiValidationConstants.STRING.valid( ...STATUS_OF_MATTER_OPTIONS, ) @@ -33,10 +35,6 @@ export class CaseWorksheet extends JoiValidationEntity { primaryIssue: 'Add primary issue', }; - deletePrimaryIssue(): void { - delete this.primaryIssue; - } - getValidationRules() { return CaseWorksheet.VALIDATION_RULES; } diff --git a/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts b/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts index 9e5bc774028..1dfd8c58209 100644 --- a/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts +++ b/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts @@ -12,13 +12,12 @@ import { User } from '@shared/business/entities/User'; export const updateCaseWorksheetInteractor = async ( applicationContext: IApplicationContext, { - docketNumber, - updatedProps, + worksheet, }: { - docketNumber: string; - updatedProps: Record; + worksheet: RawCaseWorksheet; }, ): Promise => { + console.log('&&&& ', worksheet); const user = applicationContext.getCurrentUser(); if (!isAuthorized(user, ROLE_PERMISSIONS.CASE_WORKSHEET)) { @@ -41,18 +40,7 @@ export const updateCaseWorksheetInteractor = async ( }); } - const caseWorksheet = await applicationContext - .getPersistenceGateway() - .getCaseWorksheet({ - applicationContext, - docketNumber, - }); - - const caseWorksheetEntity = new CaseWorksheet({ - ...caseWorksheet, - ...updatedProps, - docketNumber, - }).validate(); + const caseWorksheetEntity = new CaseWorksheet(worksheet).validate(); const rawCaseWorksheet = caseWorksheetEntity.toRawObject(); diff --git a/shared/src/proxies/caseWorksheet/updateCaseWorksheetProxy.ts b/shared/src/proxies/caseWorksheet/updateCaseWorksheetProxy.ts index 93b8fa19293..d415484af02 100644 --- a/shared/src/proxies/caseWorksheet/updateCaseWorksheetProxy.ts +++ b/shared/src/proxies/caseWorksheet/updateCaseWorksheetProxy.ts @@ -1,18 +1,17 @@ +import { RawCaseWorksheet } from '@shared/business/entities/caseWorksheet/CaseWorksheet'; import { post } from '../requests'; export const updateCaseWorksheetInteractor = ( applicationContext, { - docketNumber, - updatedProps, + worksheet, }: { - docketNumber: string; - updatedProps: Record; + worksheet: RawCaseWorksheet; }, ) => { return post({ applicationContext, - body: { docketNumber, updatedProps }, - endpoint: `/cases/${docketNumber}/case-worksheet`, + body: { worksheet }, + endpoint: `/cases/${worksheet.docketNumber}/case-worksheet`, }); }; diff --git a/web-client/integration-tests/caseWorksheetsJourney.test.ts b/web-client/integration-tests/caseWorksheetsJourney.test.ts index 8ba32e3de69..41a2a04a075 100644 --- a/web-client/integration-tests/caseWorksheetsJourney.test.ts +++ b/web-client/integration-tests/caseWorksheetsJourney.test.ts @@ -76,12 +76,12 @@ describe('Case Worksheets Journey', () => { theCase => theCase.docketNumber === cerebralTest.docketNumber, ); - await cerebralTest.runSequence('openAddEditPrimaryIssueModalSequence', { + await cerebralTest.runSequence('openAddEditCaseWorksheetModalSequence', { docketNumber: cavCase!.docketNumber, }); const { modal } = cerebralTest.getState(); - expect(modal.showModal).toEqual('AddEditPrimaryIssueModal'); + expect(modal.showModal).toEqual('AddEditCaseWorksheetModal'); const expectedPrimaryIssue = 'I can be your hero baby'; await cerebralTest.runSequence('cerebralBindSimpleSetStateSequence', { @@ -115,7 +115,7 @@ describe('Case Worksheets Journey', () => { theCase => theCase.docketNumber === cerebralTest.docketNumber, ); - await cerebralTest.runSequence('openAddEditPrimaryIssueModalSequence', { + await cerebralTest.runSequence('openAddEditCaseWorksheetModalSequence', { docketNumber: cavCase!.docketNumber, }); @@ -150,7 +150,7 @@ describe('Case Worksheets Journey', () => { let cavCase = caseWorksheetsFormatted.find( theCase => theCase.docketNumber === cerebralTest.docketNumber, ); - await cerebralTest.runSequence('openAddEditPrimaryIssueModalSequence', { + await cerebralTest.runSequence('openAddEditCaseWorksheetModalSequence', { docketNumber: cavCase!.docketNumber, }); @@ -167,30 +167,30 @@ describe('Case Worksheets Journey', () => { expect(validationErrors.primaryIssue).toEqual('Add primary issue'); }); - it('should persist and remove a primary issue from the table when it is deleted by the user', async () => { - let { caseWorksheetsFormatted } = runCompute(caseWorksheetsHelper, { - state: cerebralTest.getState(), - }); - let cavCase = caseWorksheetsFormatted.find( - theCase => theCase.docketNumber === cerebralTest.docketNumber, - ); - expect(cavCase?.worksheet.primaryIssue).toBeDefined(); + // it('should persist and remove a primary issue from the table when it is deleted by the user', async () => { + // let { caseWorksheetsFormatted } = runCompute(caseWorksheetsHelper, { + // state: cerebralTest.getState(), + // }); + // let cavCase = caseWorksheetsFormatted.find( + // theCase => theCase.docketNumber === cerebralTest.docketNumber, + // ); + // expect(cavCase?.worksheet.primaryIssue).toBeDefined(); - await cerebralTest.runSequence('openDeletePrimaryIssueSequence', { - docketNumber: cerebralTest.docketNumber, - }); + // await cerebralTest.runSequence('openDeletePrimaryIssueSequence', { + // docketNumber: cerebralTest.docketNumber, + // }); - await cerebralTest.runSequence('deletePrimaryIssueSequence'); + // await cerebralTest.runSequence('TODO,FIX'); - ({ caseWorksheetsFormatted } = runCompute(caseWorksheetsHelper, { - state: cerebralTest.getState(), - })); - cavCase = caseWorksheetsFormatted.find( - theCase => theCase.docketNumber === cerebralTest.docketNumber, - ); + // ({ caseWorksheetsFormatted } = runCompute(caseWorksheetsHelper, { + // state: cerebralTest.getState(), + // })); + // cavCase = caseWorksheetsFormatted.find( + // theCase => theCase.docketNumber === cerebralTest.docketNumber, + // ); - expect(cavCase?.worksheet.primaryIssue).toBeUndefined(); - }); + // expect(cavCase?.worksheet.primaryIssue).toBeUndefined(); + // }); it('should persist and display a final brief due date set by user', async () => { const briefDueDate = '08/29/2023'; @@ -305,7 +305,7 @@ describe('Case Worksheets Journey', () => { theCase.docketNumber === cerebralTest.submittedCaseDocketNumber, ); - await cerebralTest.runSequence('openAddEditPrimaryIssueModalSequence', { + await cerebralTest.runSequence('openAddEditCaseWorksheetModalSequence', { docketNumber: submittedCase!.docketNumber, }); diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts new file mode 100644 index 00000000000..7f0b77e0106 --- /dev/null +++ b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts @@ -0,0 +1,27 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const updateCaseWorksheetAction = async ({ + applicationContext, + get, + props, +}: ActionProps) => { + const { docketNumber, primaryIssue, statusOfMatter } = get(state.form); + + const finalBriefDueDate = applicationContext + .getUtilities() + .formatDateString(props.computedDate, FORMATS.YYYYMMDD); + + const updatedWorksheet = await applicationContext + .getUseCases() + .updateCaseWorksheetInteractor(applicationContext, { + worksheet: { + docketNumber, + finalBriefDueDate, + primaryIssue, + statusOfMatter, + }, + }); + + return { updatedWorksheet }; +}; diff --git a/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts b/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts index 18d5ccf62fc..4293b59e5a1 100644 --- a/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts +++ b/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts @@ -1,29 +1,14 @@ import { state } from '@web-client/presenter/app.cerebral'; -/** - * sets the state.form[path] to whatever the computedDate value is from props - * @param {string} prefix prefix for form state date field keys - * @param {boolean} toIsoString cast the computedDate as an ISO string - * @param {string} stateKey the key for computedDate value - * @returns {Function} the primed action - */ export const getComputedFormDateFactoryAction = ( - prefix: string, - toIsoString?: boolean, + prefix: string | undefined, stateKey = 'computedDate', ) => { - /** - * computes the date given either a prefix or the default of day, month, year props on the form - * @param {object} providers the providers object - * @param {object} providers.applicationContext application context for getting date utility functions - * @param {object} providers.get the cerebral get function - * @returns {object} computedDate - */ const computeFormDateAction = ({ applicationContext, get }: ActionProps) => { let formYear; let formMonth; let formDay; - let computedDate = null; + let computedDate; if (prefix) { formYear = get(state.form[`${prefix}Year`]); @@ -41,20 +26,7 @@ export const getComputedFormDateFactoryAction = ( year: formYear, }); - if ( - toIsoString && - applicationContext - .getUtilities() - .isValidDateString(`${formMonth}-${formDay}-${formYear}`) - ) { - computedDate = applicationContext - .getUtilities() - .createISODateStringFromObject({ - day: formDay, - month: formMonth, - year: formYear, - }); - } + console.log('computedDate'); return { [stateKey]: computedDate }; }; diff --git a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts new file mode 100644 index 00000000000..73b2c2d5248 --- /dev/null +++ b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts @@ -0,0 +1,39 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; +import { state } from '@web-client/presenter/app.cerebral'; + +export const validateCaseWorksheetAction = ({ + applicationContext, + get, + path, + props, +}: ActionProps) => { + const { docketNumber, primaryIssue, statusOfMatter } = get(state.form); + + console.log(props.computedDate, '&&&&'); + + const finalBriefDueDate = applicationContext + .getUtilities() + .formatDateString(props.computedDate, FORMATS.YYYYMMDD); + + const errors = applicationContext + .getUseCases() + .validateCaseWorksheetInteractor({ + caseWorksheet: { + docketNumber, + finalBriefDueDate, + primaryIssue, + statusOfMatter, + }, + }); + + if (!errors) { + return path.success(); + } else { + return path.error({ + alertError: { + title: 'Errors were found. Please correct your form and resubmit.', + }, + errors, + }); + } +}; diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index 1ea487329b6..78afec34351 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -94,7 +94,6 @@ import { deleteDeficiencyStatisticsSequence } from './sequences/deleteDeficiency import { deleteJudgesCaseNoteFromCaseDetailSequence } from './sequences/deleteJudgesCaseNoteFromCaseDetailSequence'; import { deleteOtherStatisticsSequence } from './sequences/deleteOtherStatisticsSequence'; import { deletePractitionerDocumentSequence } from './sequences/deletePractitionerDocumentSequence'; -import { deletePrimaryIssueSequence } from './sequences/deletePrimaryIssueSequence'; import { deleteTrialSessionSequence } from './sequences/deleteTrialSessionSequence'; import { deleteUploadedPdfSequence } from './sequences/deleteUploadedPdfSequence'; import { deleteUserCaseNoteFromWorkingCopySequence } from './sequences/deleteUserCaseNoteFromWorkingCopySequence'; @@ -223,8 +222,8 @@ import { onPractitionerInformationTabSelectSequence } from './sequences/onPracti import { openAddDocketNumbersModalSequence } from './sequences/openAddDocketNumbersModalSequence'; import { openAddEditCalendarNoteModalSequence } from './sequences/openAddEditCalendarNoteModalSequence'; import { openAddEditCaseNoteModalSequence } from './sequences/openAddEditCaseNoteModalSequence'; +import { openAddEditCaseWorksheetModalSequence } from './sequences/openAddEditCaseWorksheetModalSequence'; import { openAddEditHearingNoteModalSequence } from './sequences/openAddEditHearingNoteModalSequence'; -import { openAddEditPrimaryIssueModalSequence } from './sequences/openAddEditPrimaryIssueModalSequence'; import { openAddEditSessionNoteModalSequence } from './sequences/openAddEditSessionNoteModalSequence'; import { openAddEditUserCaseNoteModalFromDetailSequence } from './sequences/openAddEditUserCaseNoteModalFromDetailSequence'; import { openAddEditUserCaseNoteModalFromListSequence } from './sequences/openAddEditUserCaseNoteModalFromListSequence'; @@ -266,7 +265,6 @@ import { openCreateOrderChooseTypeModalSequence } from './sequences/openCreateOr import { openDeleteCaseDeadlineModalSequence } from './sequences/openDeleteCaseDeadlineModalSequence'; import { openDeleteCaseNoteConfirmModalSequence } from './sequences/openDeleteCaseNoteConfirmModalSequence'; import { openDeletePractitionerDocumentConfirmModalSequence } from './sequences/openDeletePractitionerDocumentConfirmModalSequence'; -import { openDeletePrimaryIssueSequence } from './sequences/openDeletePrimaryIssueSequence'; import { openDeleteSessionNoteConfirmModalSequence } from './sequences/openDeleteSessionNoteConfirmModalSequence'; import { openDeleteUserCaseNoteConfirmModalSequence } from './sequences/openDeleteUserCaseNoteConfirmModalSequence'; import { openEditCaseDeadlineModalSequence } from './sequences/openEditCaseDeadlineModalSequence'; @@ -455,6 +453,7 @@ import { updateCaseDeadlineSequence } from './sequences/updateCaseDeadlineSequen import { updateCaseDetailsSequence } from './sequences/updateCaseDetailsSequence'; import { updateCaseNoteSequence } from './sequences/updateCaseNoteSequence'; import { updateCasePartyTypeSequence } from './sequences/updateCasePartyTypeSequence'; +import { updateCaseWorksheetSequence } from './sequences/updateCaseWorksheetSequence'; import { updateChambersInCreateMessageModalSequence } from './sequences/updateChambersInCreateMessageModalSequence'; import { updateCourtIssuedDocketEntryFormValueSequence } from './sequences/updateCourtIssuedDocketEntryFormValueSequence'; import { updateCreateOrderModalFormValueSequence } from './sequences/updateCreateOrderModalFormValueSequence'; @@ -477,7 +476,6 @@ import { updateOrderForDesignatingPlaceOfTrialSequence } from './sequences/updat import { updatePaperServiceProgressSequence } from './sequences/updatePaperServiceProgressSequence'; import { updatePartyViewTabSequence } from './sequences/updatePartyViewTabSequence'; import { updatePetitionPaymentFormValueSequence } from './sequences/updatePetitionPaymentFormValueSequence'; -import { updatePrimaryIssueSequence } from './sequences/updatePrimaryIssueSequence'; import { updateQcCompleteForTrialSequence } from './sequences/updateQcCompleteForTrialSequence'; import { updateScreenMetadataSequence } from './sequences/updateScreenMetadataSequence'; import { updateSearchTermSequence } from './sequences/updateSearchTermSequence'; @@ -513,6 +511,7 @@ import { validateCaseDetailSequence } from './sequences/validateCaseDetailSequen import { validateCaseDetailsSequence } from './sequences/validateCaseDetailsSequence'; import { validateCaseDocketNumberSearchFormSequence } from './sequences/validateCaseDocketNumberSearchFormSequence'; import { validateCaseInventoryReportModalSequence } from './sequences/validateCaseInventoryReportModalSequence'; +import { validateCaseWorksheetSequence } from '@web-client/presenter/sequences/validateCaseWorksheetSequence'; import { validateChangeLoginAndServiceEmailSequence } from './sequences/validateChangeLoginAndServiceEmailSequence'; import { validateCourtIssuedDocketEntrySequence } from './sequences/validateCourtIssuedDocketEntrySequence'; import { validateCreateMessageInModalSequence } from './sequences/validateCreateMessageInModalSequence'; @@ -633,7 +632,6 @@ export const presenterSequences = { deleteJudgesCaseNoteFromCaseDetailSequence, deleteOtherStatisticsSequence, deletePractitionerDocumentSequence, - deletePrimaryIssueSequence, deleteTrialSessionSequence, deleteUploadedPdfSequence, deleteUserCaseNoteFromWorkingCopySequence, @@ -760,8 +758,8 @@ export const presenterSequences = { openAddDocketNumbersModalSequence, openAddEditCalendarNoteModalSequence, openAddEditCaseNoteModalSequence, + openAddEditCaseWorksheetModalSequence, openAddEditHearingNoteModalSequence, - openAddEditPrimaryIssueModalSequence, openAddEditSessionNoteModalSequence, openAddEditUserCaseNoteModalFromDetailSequence, openAddEditUserCaseNoteModalFromListSequence, @@ -803,7 +801,6 @@ export const presenterSequences = { openDeleteCaseDeadlineModalSequence, openDeleteCaseNoteConfirmModalSequence, openDeletePractitionerDocumentConfirmModalSequence, - openDeletePrimaryIssueSequence, openDeleteSessionNoteConfirmModalSequence, openDeleteUserCaseNoteConfirmModalSequence, openEditCaseDeadlineModalSequence, @@ -991,6 +988,7 @@ export const presenterSequences = { updateCaseDetailsSequence, updateCaseNoteSequence, updateCasePartyTypeSequence, + updateCaseWorksheetSequence, updateChambersInCreateMessageModalSequence, updateCourtIssuedDocketEntryFormValueSequence, updateCreateOrderModalFormValueSequence, @@ -1013,7 +1011,6 @@ export const presenterSequences = { updatePaperServiceProgressSequence, updatePartyViewTabSequence, updatePetitionPaymentFormValueSequence, - updatePrimaryIssueSequence, updateQcCompleteForTrialSequence, updateScreenMetadataSequence, updateSearchTermSequence, @@ -1049,6 +1046,7 @@ export const presenterSequences = { validateCaseDetailsSequence, validateCaseDocketNumberSearchFormSequence, validateCaseInventoryReportModalSequence, + validateCaseWorksheetSequence, validateChangeLoginAndServiceEmailSequence, validateCourtIssuedDocketEntrySequence, validateCreateMessageInModalSequence, diff --git a/web-client/src/presenter/sequences/createCaseDeadlineSequence.ts b/web-client/src/presenter/sequences/createCaseDeadlineSequence.ts index 9af051ec3e3..d230ad3941b 100644 --- a/web-client/src/presenter/sequences/createCaseDeadlineSequence.ts +++ b/web-client/src/presenter/sequences/createCaseDeadlineSequence.ts @@ -16,7 +16,7 @@ import { validateCaseDeadlineAction } from '../actions/CaseDeadline/validateCase export const createCaseDeadlineSequence = [ clearAlertsAction, startShowValidationAction, - getComputedFormDateFactoryAction(null), + getComputedFormDateFactoryAction(undefined), validateCaseDeadlineAction, { error: [setValidationErrorsAction], diff --git a/web-client/src/presenter/sequences/deletePrimaryIssueSequence.ts b/web-client/src/presenter/sequences/deletePrimaryIssueSequence.ts deleted file mode 100644 index 3ca02e072fd..00000000000 --- a/web-client/src/presenter/sequences/deletePrimaryIssueSequence.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { clearModalStateAction } from '../actions/clearModalStateAction'; -import { deletePrimaryIssueAction } from '@web-client/presenter/actions/CaseWorksheet/deletePrimaryIssueAction'; -import { setCaseWorksheetAction } from '@web-client/presenter/actions/CaseWorksheet/setCaseWorksheetAction'; -import { showProgressSequenceDecorator } from '../utilities/showProgressSequenceDecorator'; - -export const deletePrimaryIssueSequence = showProgressSequenceDecorator([ - deletePrimaryIssueAction, - setCaseWorksheetAction, - clearModalStateAction, -]); diff --git a/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts b/web-client/src/presenter/sequences/openAddEditCaseWorksheetModalSequence.ts similarity index 80% rename from web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts rename to web-client/src/presenter/sequences/openAddEditCaseWorksheetModalSequence.ts index 63b6a8ed08c..c546ac04e11 100644 --- a/web-client/src/presenter/sequences/openAddEditPrimaryIssueModalSequence.ts +++ b/web-client/src/presenter/sequences/openAddEditCaseWorksheetModalSequence.ts @@ -3,9 +3,9 @@ import { clearModalStateAction } from '../actions/clearModalStateAction'; import { setAddEditCaseWorksheetModalStateAction } from '@web-client/presenter/actions/CaseWorksheet/setAddEditCaseWorksheetModalStateAction'; import { setShowModalFactoryAction } from '../actions/setShowModalFactoryAction'; -export const openAddEditPrimaryIssueModalSequence = [ +export const openAddEditCaseWorksheetModalSequence = [ clearModalStateAction, clearFormAction, setAddEditCaseWorksheetModalStateAction, - setShowModalFactoryAction('AddEditPrimaryIssueModal'), + setShowModalFactoryAction('AddEditCaseWorksheetModal'), ]; diff --git a/web-client/src/presenter/sequences/openDeletePrimaryIssueSequence.ts b/web-client/src/presenter/sequences/openDeletePrimaryIssueSequence.ts deleted file mode 100644 index b2549155433..00000000000 --- a/web-client/src/presenter/sequences/openDeletePrimaryIssueSequence.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { clearModalStateAction } from '../actions/clearModalStateAction'; -import { setDeletePrimaryIssueModalStateAction } from '@web-client/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction'; -import { setShowModalFactoryAction } from '../actions/setShowModalFactoryAction'; - -export const openDeletePrimaryIssueSequence = [ - clearModalStateAction, - setDeletePrimaryIssueModalStateAction, - setShowModalFactoryAction('DeletePrimaryIssueModal'), -]; diff --git a/web-client/src/presenter/sequences/updatePrimaryIssueSequence.ts b/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts similarity index 61% rename from web-client/src/presenter/sequences/updatePrimaryIssueSequence.ts rename to web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts index ffd11b1d07e..d10ba1c92dd 100644 --- a/web-client/src/presenter/sequences/updatePrimaryIssueSequence.ts +++ b/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts @@ -1,26 +1,31 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; +import { clearFormAction } from '@web-client/presenter/actions/clearFormAction'; import { clearModalAction } from '@web-client/presenter/actions/clearModalAction'; import { clearModalStateAction } from '../actions/clearModalStateAction'; +import { getComputedFormDateFactoryAction } from '@web-client/presenter/actions/getComputedFormDateFactoryAction'; import { setCaseWorksheetAction } from '@web-client/presenter/actions/CaseWorksheet/setCaseWorksheetAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { showProgressSequenceDecorator } from '../utilities/showProgressSequenceDecorator'; import { startShowValidationAction } from '../actions/startShowValidationAction'; import { stopShowValidationAction } from '../actions/stopShowValidationAction'; -import { updatePrimaryIssueAction } from '../actions/CaseWorksheet/updatePrimaryIssueAction'; -import { validatePrimaryIssueAction } from '../actions/validatePrimaryIssueAction'; +import { updateCaseWorksheetAction } from '@web-client/presenter/actions/CaseWorksheet/updateCaseWorksheetAction'; +import { validateCaseWorksheetAction } from '../actions/validateCaseWorksheetAction'; -export const updatePrimaryIssueSequence = [ +export const updateCaseWorksheetSequence = [ + clearAlertsAction, startShowValidationAction, - validatePrimaryIssueAction, + getComputedFormDateFactoryAction(undefined), + validateCaseWorksheetAction, { error: [setValidationErrorsAction], success: showProgressSequenceDecorator([ clearModalAction, stopShowValidationAction, clearAlertsAction, - updatePrimaryIssueAction, + updateCaseWorksheetAction, setCaseWorksheetAction, clearModalStateAction, + clearFormAction, ]), }, ]; diff --git a/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts b/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts new file mode 100644 index 00000000000..a33aee1b51e --- /dev/null +++ b/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts @@ -0,0 +1,20 @@ +import { clearAlertsAction } from '../actions/clearAlertsAction'; +import { getComputedFormDateFactoryAction } from '../actions/getComputedFormDateFactoryAction'; +import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; +import { shouldValidateAction } from '../actions/shouldValidateAction'; +import { validateCaseWorksheetAction } from '@web-client/presenter/actions/validateCaseWorksheetAction'; + +export const validateCaseWorksheetSequence = [ + shouldValidateAction, + { + ignore: [], + validate: [ + getComputedFormDateFactoryAction(undefined), + validateCaseWorksheetAction, + { + error: [setValidationErrorsAction], + success: [clearAlertsAction], + }, + ], + }, +]; diff --git a/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx similarity index 72% rename from web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx rename to web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx index bb9c02a589d..7816d1f5f1e 100644 --- a/web-client/src/views/CaseWorksheet/AddEditPrimaryIssueModal.tsx +++ b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx @@ -6,19 +6,21 @@ import { connect } from '@cerebral/react'; import { sequences, state } from '@web-client/presenter/app.cerebral'; import React from 'react'; -export const AddEditPrimaryIssueModal = connect( +export const AddEditCaseWorksheetModal = connect( { STATUS_OF_MATTER_OPTIONS: state.constants.STATUS_OF_MATTER_OPTIONS, addEditPrimaryIssueModalHelper: state.addEditPrimaryIssueModalHelper, form: state.form, updateFormValueSequence: sequences.updateFormValueSequence, + validateCaseWorksheetSequence: sequences.validateCaseWorksheetSequence, validationErrors: state.validationErrors, }, - function AddEditPrimaryIssueModal({ + function AddEditCaseWorksheetModal({ addEditPrimaryIssueModalHelper, form, STATUS_OF_MATTER_OPTIONS, updateFormValueSequence, + validateCaseWorksheetSequence, validationErrors, }) { return ( @@ -28,38 +30,20 @@ export const AddEditPrimaryIssueModal = connect( preventCancelOnBlur={true} title="Add/Edit Case Worksheet" onCancelSequence="clearModalFormSequence" - onConfirmSequence="updatePrimaryIssueSequence" + onConfirmSequence="updateCaseWorksheetSequence" >
{addEditPrimaryIssueModalHelper.title}
- {/* */} - { - // updateFinalBriefDueDateSequence({ - // docketNumber: formattedCase.docketNumber, - // finalBriefDueDate: value === '' ? null : value, - // }); - // }} + onBlur={validateCaseWorksheetSequence} + onChange={updateFormValueSequence} /> @@ -100,4 +84,4 @@ export const AddEditPrimaryIssueModal = connect( }, ); -AddEditPrimaryIssueModal.displayName = 'AddEditPrimaryIssueModal'; +AddEditCaseWorksheetModal.displayName = 'AddEditCaseWorksheetModal'; diff --git a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx index 7260450887f..cc7783652cc 100644 --- a/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx +++ b/web-client/src/views/CaseWorksheet/CaseWorksheets.tsx @@ -1,49 +1,23 @@ -import { AddEditPrimaryIssueModal } from './AddEditPrimaryIssueModal'; +import { AddEditCaseWorksheetModal } from './AddEditCaseWorksheetModal'; import { Button } from '@web-client/ustc-ui/Button/Button'; import { CaseLink } from '../../ustc-ui/CaseLink/CaseLink'; import { ConsolidatedCaseIcon } from '../../ustc-ui/Icon/ConsolidatedCaseIcon'; -import { DateInput } from '@web-client/ustc-ui/DateInput/DateInput'; -import { DeletePrimaryIssueModal } from './DeletePrimaryIssueModal'; -import { FormGroup } from '@web-client/ustc-ui/FormGroup/FormGroup'; import { connect } from '@cerebral/react'; import { sequences } from '@web-client/presenter/app.cerebral'; import { state } from '@web-client/presenter/app.cerebral'; import React from 'react'; -function convertToDateInputValues(date: string) { - if (!date) { - return ''; - } - const [year, month, day] = date.split('-'); - return { - day, - month, - year, - }; -} - export const CaseWorksheets = connect( { - STATUS_OF_MATTER_OPTIONS: state.constants.STATUS_OF_MATTER_OPTIONS, caseWorksheetsHelper: state.caseWorksheetsHelper, - openAddEditPrimaryIssueModalSequence: - sequences.openAddEditPrimaryIssueModalSequence, - openCleanModalSequence: sequences.openCleanModalSequence, - openDeletePrimaryIssueSequence: sequences.openDeletePrimaryIssueSequence, + openAddEditCaseWorksheetModalSequence: + sequences.openAddEditCaseWorksheetModalSequence, showModal: state.modal.showModal, - updateFinalBriefDueDateSequence: sequences.updateFinalBriefDueDateSequence, - updateStatusOfMatterSequence: sequences.updateStatusOfMatterSequence, - validationErrors: state.validationErrors, }, function CaseWorksheets({ caseWorksheetsHelper, - openAddEditPrimaryIssueModalSequence, - openDeletePrimaryIssueSequence, + openAddEditCaseWorksheetModalSequence, showModal, - STATUS_OF_MATTER_OPTIONS, - updateFinalBriefDueDateSequence, - updateStatusOfMatterSequence, - validationErrors, }) { return (
@@ -110,58 +84,13 @@ export const CaseWorksheets = connect( link icon="edit" onClick={() => { - openAddEditPrimaryIssueModalSequence({ + openAddEditCaseWorksheetModalSequence({ docketNumber: formattedCase.docketNumber, }); }} > Edit - {/* {!formattedCase.worksheet.primaryIssue && ( - - )} */} - {/* {formattedCase.worksheet.primaryIssue && ( -
-
- -
-
- -
-
- )} */} @@ -186,10 +115,9 @@ export const CaseWorksheets = connect(
)} - {showModal === 'AddEditPrimaryIssueModal' && ( - + {showModal === 'AddEditCaseWorksheetModal' && ( + )} - {showModal === 'DeletePrimaryIssueModal' && } ); }, diff --git a/web-client/src/views/CaseWorksheet/DeletePrimaryIssueModal.tsx b/web-client/src/views/CaseWorksheet/DeletePrimaryIssueModal.tsx deleted file mode 100644 index 4c675659932..00000000000 --- a/web-client/src/views/CaseWorksheet/DeletePrimaryIssueModal.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { ConfirmModal } from '../../ustc-ui/Modal/ConfirmModal'; -import { connect } from '@cerebral/react'; -import { state } from '@web-client/presenter/app.cerebral'; -import React from 'react'; - -export const DeletePrimaryIssueModal = connect( - { - modal: state.modal, - validationErrors: state.validationErrors, - }, - function DeletePrimaryIssueModal() { - return ( - -

This action cannot be undone.

-
- ); - }, -); - -DeletePrimaryIssueModal.displayName = 'DeletePrimaryIssueModal'; From 2a71f3e9db6be75b72f073bcb6a99dc48ad1f7d0 Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Tue, 12 Sep 2023 15:40:10 -0700 Subject: [PATCH 07/32] 9995: WIP, New datepicker working --- .../presenter/actions/setFormValueAction.ts | 1 + .../actions/validateCaseWorksheetAction.ts | 14 ++---- .../validateCaseWorksheetSequence.ts | 2 +- .../DateInput/DateInputThatActuallyWorks.tsx | 47 +++++++++++++++++++ .../DateInput/DateRangePickerComponent.tsx | 4 ++ .../AddEditCaseWorksheetModal.tsx | 23 ++++----- 6 files changed, 70 insertions(+), 21 deletions(-) create mode 100644 web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx diff --git a/web-client/src/presenter/actions/setFormValueAction.ts b/web-client/src/presenter/actions/setFormValueAction.ts index d47d295fb69..0404471e5df 100644 --- a/web-client/src/presenter/actions/setFormValueAction.ts +++ b/web-client/src/presenter/actions/setFormValueAction.ts @@ -7,6 +7,7 @@ import { state } from '@web-client/presenter/app.cerebral'; * @param {object} providers.props the cerebral props object */ export const setFormValueAction = ({ props, store }: ActionProps) => { + console.log('setFormValueAction ', props.key, props.value); if (props.value !== '' && props.value !== null) { store.set(state.form[props.key], props.value); } else { diff --git a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts index 73b2c2d5248..fdad6e56111 100644 --- a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts +++ b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts @@ -1,19 +1,13 @@ -import { FORMATS } from '@shared/business/utilities/DateHandler'; import { state } from '@web-client/presenter/app.cerebral'; export const validateCaseWorksheetAction = ({ applicationContext, get, path, - props, }: ActionProps) => { - const { docketNumber, primaryIssue, statusOfMatter } = get(state.form); - - console.log(props.computedDate, '&&&&'); - - const finalBriefDueDate = applicationContext - .getUtilities() - .formatDateString(props.computedDate, FORMATS.YYYYMMDD); + const { docketNumber, finalBriefDueDate, primaryIssue, statusOfMatter } = get( + state.form, + ); const errors = applicationContext .getUseCases() @@ -26,6 +20,8 @@ export const validateCaseWorksheetAction = ({ }, }); + console.log('errors are', errors); + if (!errors) { return path.success(); } else { diff --git a/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts b/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts index a33aee1b51e..6eb5932abfd 100644 --- a/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts +++ b/web-client/src/presenter/sequences/validateCaseWorksheetSequence.ts @@ -9,7 +9,7 @@ export const validateCaseWorksheetSequence = [ { ignore: [], validate: [ - getComputedFormDateFactoryAction(undefined), + // getComputedFormDateFactoryAction(undefined), validateCaseWorksheetAction, { error: [setValidationErrorsAction], diff --git a/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx new file mode 100644 index 00000000000..2256ada0890 --- /dev/null +++ b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx @@ -0,0 +1,47 @@ +import { FormGroup } from '@web-client/ustc-ui/FormGroup/FormGroup'; +import React, { useEffect, useRef } from 'react'; +import datePicker from '../../../../node_modules/@uswds/uswds/packages/usa-date-picker/src'; + +export const DateInputThatActuallyWorks = ({ errorText, onChange }) => { + const formGroupInputRef = useRef(null); + const dateInputRef = useRef(null); + + useEffect(() => { + if (dateInputRef.current) { + const datePickerInput = dateInputRef.current.getRootNode(); + + datePickerInput.addEventListener('change', onChange); + datePickerInput.addEventListener('input', onChange); + } + }, [dateInputRef]); + + useEffect(() => { + if (formGroupInputRef.current) { + datePicker.on(formGroupInputRef.current); + } + }, [formGroupInputRef]); + + return ( + + +
+ +
+
+ ); +}; + +DateInputThatActuallyWorks.displayName = 'DateInputThatActuallyWorks'; diff --git a/web-client/src/ustc-ui/DateInput/DateRangePickerComponent.tsx b/web-client/src/ustc-ui/DateInput/DateRangePickerComponent.tsx index d1cb6a3623d..e1bd365a742 100644 --- a/web-client/src/ustc-ui/DateInput/DateRangePickerComponent.tsx +++ b/web-client/src/ustc-ui/DateInput/DateRangePickerComponent.tsx @@ -115,6 +115,8 @@ export const DateRangePickerComponent = ({ }, [endValue]); useEffect(() => { + console.log('dateInputRef useEffect'); + if (startDateInputRef.current && endDateInputRef.current) { const dateEndInput = window.document.getElementById( `${endName}-date-end`, @@ -126,6 +128,8 @@ export const DateRangePickerComponent = ({ const dateStartInput = window.document.getElementById( `${startName}-date-start`, ); + console.log('dateStartInput ', dateStartInput); + if (dateStartInput) { dateStartInput.addEventListener('change', onChangeStart); dateStartInput.addEventListener('input', onChangeStart); diff --git a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx index 7816d1f5f1e..655615b20b6 100644 --- a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx +++ b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx @@ -1,6 +1,7 @@ import { BindedTextarea } from '../../ustc-ui/BindedTextarea/BindedTextarea'; import { ConfirmModal } from '../../ustc-ui/Modal/ConfirmModal'; import { DateInput } from '@web-client/ustc-ui/DateInput/DateInput'; +import { DateInputThatActuallyWorks } from '@web-client/ustc-ui/DateInput/DateInputThatActuallyWorks'; import { FormGroup } from '../../ustc-ui/FormGroup/FormGroup'; import { connect } from '@cerebral/react'; import { sequences, state } from '@web-client/presenter/app.cerebral'; @@ -35,17 +36,17 @@ export const AddEditCaseWorksheetModal = connect(
{addEditPrimaryIssueModalHelper.title}
- - - + + { + updateFormValueSequence({ + key: 'finalBriefDueDate', + value: e.target.value, + }); + }} + /> + diff --git a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx index 655615b20b6..a0c0da394d8 100644 --- a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx +++ b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx @@ -39,6 +39,8 @@ export const AddEditCaseWorksheetModal = connect( { updateFormValueSequence({ key: 'finalBriefDueDate', @@ -48,9 +50,17 @@ export const AddEditCaseWorksheetModal = connect( /> + + + From f4c290c3d2954fb41e4c312db7ef49d12768ad46 Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Tue, 12 Sep 2023 21:20:31 -0700 Subject: [PATCH 09/32] 9995: WIP status of matter and primary issue are able to be created/updated/cleared, final brief due date is not formatting properly for display in the modal or on the table. --- .../entities/caseWorksheet/CaseWorksheet.ts | 5 +---- .../CaseWorksheet/updateCaseWorksheetAction.ts | 14 ++++++++++---- .../actions/getComputedFormDateFactoryAction.ts | 2 -- .../actions/validateCaseWorksheetAction.ts | 15 ++++++++++++--- .../sequences/updateCaseWorksheetSequence.ts | 2 -- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts b/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts index 63443387bce..797890c6137 100644 --- a/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts +++ b/shared/src/business/entities/caseWorksheet/CaseWorksheet.ts @@ -19,9 +19,7 @@ export class CaseWorksheet extends JoiValidationEntity { static VALIDATION_RULES = { docketNumber: JoiValidationConstants.DOCKET_NUMBER.required(), - finalBriefDueDate: JoiValidationConstants.DATE.allow('') - .invalid(null) - .optional(), + finalBriefDueDate: JoiValidationConstants.DATE.allow('').optional(), primaryIssue: JoiValidationConstants.STRING.allow('').optional(), statusOfMatter: JoiValidationConstants.STRING.valid( ...STATUS_OF_MATTER_OPTIONS, @@ -32,7 +30,6 @@ export class CaseWorksheet extends JoiValidationEntity { static VALIDATION_ERROR_MESSAGES = { finalBriefDueDate: 'Enter a valid due date', - primaryIssue: 'Add primary issue', }; getValidationRules() { diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts index 7f0b77e0106..2a86f0233cf 100644 --- a/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts +++ b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts @@ -6,18 +6,24 @@ export const updateCaseWorksheetAction = async ({ get, props, }: ActionProps) => { - const { docketNumber, primaryIssue, statusOfMatter } = get(state.form); + const { docketNumber, finalBriefDueDate, primaryIssue, statusOfMatter } = get( + state.form, + ); - const finalBriefDueDate = applicationContext + const initialLuxonObject = applicationContext .getUtilities() - .formatDateString(props.computedDate, FORMATS.YYYYMMDD); + .prepareDateFromString(finalBriefDueDate, FORMATS.MMDDYYYY); + + const finalBriefDueDateFormatted = applicationContext + .getUtilities() + .formatDateString(initialLuxonObject, FORMATS.YYYYMMDD); const updatedWorksheet = await applicationContext .getUseCases() .updateCaseWorksheetInteractor(applicationContext, { worksheet: { docketNumber, - finalBriefDueDate, + finalBriefDueDate: finalBriefDueDateFormatted, primaryIssue, statusOfMatter, }, diff --git a/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts b/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts index 4293b59e5a1..4b497e25663 100644 --- a/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts +++ b/web-client/src/presenter/actions/getComputedFormDateFactoryAction.ts @@ -26,8 +26,6 @@ export const getComputedFormDateFactoryAction = ( year: formYear, }); - console.log('computedDate'); - return { [stateKey]: computedDate }; }; diff --git a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts index fdad6e56111..6321f93cad0 100644 --- a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts +++ b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts @@ -1,3 +1,4 @@ +import { FORMATS } from '@shared/business/utilities/DateHandler'; import { state } from '@web-client/presenter/app.cerebral'; export const validateCaseWorksheetAction = ({ @@ -9,19 +10,27 @@ export const validateCaseWorksheetAction = ({ state.form, ); + const initialLuxonObject = applicationContext + .getUtilities() + .prepareDateFromString(finalBriefDueDate, FORMATS.MMDDYYYY); + + const finalBriefDueDateFormatted = applicationContext + .getUtilities() + .formatDateString(initialLuxonObject, FORMATS.YYYYMMDD); + + console.log('finalBriefDueDate ', finalBriefDueDateFormatted); + const errors = applicationContext .getUseCases() .validateCaseWorksheetInteractor({ caseWorksheet: { docketNumber, - finalBriefDueDate, + finalBriefDueDate: finalBriefDueDateFormatted, primaryIssue, statusOfMatter, }, }); - console.log('errors are', errors); - if (!errors) { return path.success(); } else { diff --git a/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts b/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts index d10ba1c92dd..98afd35d45b 100644 --- a/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts +++ b/web-client/src/presenter/sequences/updateCaseWorksheetSequence.ts @@ -2,7 +2,6 @@ import { clearAlertsAction } from '../actions/clearAlertsAction'; import { clearFormAction } from '@web-client/presenter/actions/clearFormAction'; import { clearModalAction } from '@web-client/presenter/actions/clearModalAction'; import { clearModalStateAction } from '../actions/clearModalStateAction'; -import { getComputedFormDateFactoryAction } from '@web-client/presenter/actions/getComputedFormDateFactoryAction'; import { setCaseWorksheetAction } from '@web-client/presenter/actions/CaseWorksheet/setCaseWorksheetAction'; import { setValidationErrorsAction } from '../actions/setValidationErrorsAction'; import { showProgressSequenceDecorator } from '../utilities/showProgressSequenceDecorator'; @@ -14,7 +13,6 @@ import { validateCaseWorksheetAction } from '../actions/validateCaseWorksheetAct export const updateCaseWorksheetSequence = [ clearAlertsAction, startShowValidationAction, - getComputedFormDateFactoryAction(undefined), validateCaseWorksheetAction, { error: [setValidationErrorsAction], From 0ec59b10beb0a5933dff263fa999c938bdd34342 Mon Sep 17 00:00:00 2001 From: Nechama Krigsman Date: Wed, 13 Sep 2023 09:55:57 -0400 Subject: [PATCH 10/32] 9995: format final brief due date on case worksheet table --- .../computeds/CaseWorksheets/caseWorksheetsHelper.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts index 4de45dd6943..4dd4d7e2e4a 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts @@ -29,7 +29,15 @@ export const caseWorksheetsHelper = ( } = get(state.submittedAndCavCases); const worksheetsObj: { [docketNumber: string]: RawCaseWorksheet } = {}; - worksheets.forEach(ws => (worksheetsObj[ws.docketNumber] = ws)); + worksheets.forEach(ws => { + ws.finalBriefDueDate = applicationContext + .getUtilities() + .formatDateString( + ws.finalBriefDueDate, + applicationContext.getConstants().DATE_FORMATS.MMDDYY, + ); + worksheetsObj[ws.docketNumber] = ws; + }); const today = applicationContext .getUtilities() From 355c7cd0a10b883954be4e72e3e3fc9eefab34e9 Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Wed, 13 Sep 2023 10:03:06 -0700 Subject: [PATCH 11/32] 9995: Move lambdas to new folder after devex refactor merge --- .../src/{ => lambdas}/caseWorksheet/deletePrimaryIssueLambda.ts | 2 +- .../caseWorksheet/getCaseWorksheetsForJudgeLambda.ts | 2 +- .../{ => lambdas}/caseWorksheet/updateCaseWorksheetLambda.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename web-api/src/{ => lambdas}/caseWorksheet/deletePrimaryIssueLambda.ts (82%) rename web-api/src/{ => lambdas}/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts (80%) rename web-api/src/{ => lambdas}/caseWorksheet/updateCaseWorksheetLambda.ts (83%) diff --git a/web-api/src/caseWorksheet/deletePrimaryIssueLambda.ts b/web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts similarity index 82% rename from web-api/src/caseWorksheet/deletePrimaryIssueLambda.ts rename to web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts index 5fd3948aa44..5072bd1b924 100644 --- a/web-api/src/caseWorksheet/deletePrimaryIssueLambda.ts +++ b/web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts @@ -1,4 +1,4 @@ -import { genericHandler } from '../genericHandler'; +import { genericHandler } from '../../genericHandler'; export const deletePrimaryIssueLambda = event => genericHandler(event, ({ applicationContext }) => { diff --git a/web-api/src/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts b/web-api/src/lambdas/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts similarity index 80% rename from web-api/src/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts rename to web-api/src/lambdas/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts index 3b774b75521..7fc435c199e 100644 --- a/web-api/src/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts +++ b/web-api/src/lambdas/caseWorksheet/getCaseWorksheetsForJudgeLambda.ts @@ -1,4 +1,4 @@ -import { genericHandler } from '../genericHandler'; +import { genericHandler } from '../../genericHandler'; export const getCaseWorksheetsForJudgeLambda = event => genericHandler(event, ({ applicationContext }) => { diff --git a/web-api/src/caseWorksheet/updateCaseWorksheetLambda.ts b/web-api/src/lambdas/caseWorksheet/updateCaseWorksheetLambda.ts similarity index 83% rename from web-api/src/caseWorksheet/updateCaseWorksheetLambda.ts rename to web-api/src/lambdas/caseWorksheet/updateCaseWorksheetLambda.ts index 416d42c20d3..eef00889cb0 100644 --- a/web-api/src/caseWorksheet/updateCaseWorksheetLambda.ts +++ b/web-api/src/lambdas/caseWorksheet/updateCaseWorksheetLambda.ts @@ -1,4 +1,4 @@ -import { genericHandler } from '../genericHandler'; +import { genericHandler } from '../../genericHandler'; export const updateCaseWorksheetLambda = event => genericHandler(event, async ({ applicationContext }) => { From 2d5523826d7b9bd490f2e54a44e7da1de5a31024 Mon Sep 17 00:00:00 2001 From: Rachel Schneiderman Date: Wed, 13 Sep 2023 10:15:25 -0700 Subject: [PATCH 12/32] 9995: Resolve paths and imports issues after merge from staging, cleanup unused actions, sequences, and endpoints now that editing case worksheet is done on one modal --- .../caseWorksheet/CaseWorksheet.test.ts | 14 --- .../deletePrimaryIssueInteractor.test.ts | 57 --------- .../deletePrimaryIssueInteractor.ts | 44 ------- .../getCaseWorksheetsForJudgeInteractor.ts | 2 +- .../updateCaseWorksheetInteractor.ts | 2 +- .../caseWorksheet/deletePrimaryIssueProxy.ts | 16 --- web-api/src/app.ts | 5 - web-api/src/getUseCases.ts | 2 - .../caseWorksheet/deletePrimaryIssueLambda.ts | 10 -- web-client/src/applicationContext.ts | 2 - .../deletePrimaryIssueAction.test.ts | 39 ------ .../CaseWorksheet/deletePrimaryIssueAction.ts | 16 --- ...DeletePrimaryIssueModalStateAction.test.ts | 18 --- .../setDeletePrimaryIssueModalStateAction.ts | 10 -- .../updateFinalBriefDueDateAction.test.ts | 34 ------ .../updateFinalBriefDueDateAction.ts | 17 --- .../updatePrimaryIssueAction.test.ts | 46 ------- .../CaseWorksheet/updatePrimaryIssueAction.ts | 19 --- .../updateStatusOfMatterAction.test.ts | 47 -------- .../updateStatusOfMatterAction.ts | 20 ---- .../validateBriefDueDateAction.test.ts | 113 ------------------ .../validateBriefDueDateAction.ts | 42 ------- .../validateStatusOfMatterAction.test.ts | 109 ----------------- .../validateStatusOfMatterAction.ts | 33 ----- .../validatePrimaryIssueAction.test.ts | 71 ----------- .../actions/validatePrimaryIssueAction.ts | 26 ---- ...> addEditCaseWorksheetModalHelper.test.ts} | 12 +- ....ts => addEditCaseWorksheetModalHelper.ts} | 2 +- web-client/src/presenter/presenter.ts | 4 - .../updateFinalBriefDueDateSequence.ts | 18 --- .../sequences/updateStatusOfMatterSequence.ts | 18 --- web-client/src/presenter/state.ts | 4 +- .../AddEditCaseWorksheetModal.tsx | 7 +- 33 files changed, 14 insertions(+), 865 deletions(-) delete mode 100644 shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.test.ts delete mode 100644 shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.ts delete mode 100644 shared/src/proxies/caseWorksheet/deletePrimaryIssueProxy.ts delete mode 100644 web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.test.ts delete mode 100644 web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.ts delete mode 100644 web-client/src/presenter/actions/validatePrimaryIssueAction.test.ts delete mode 100644 web-client/src/presenter/actions/validatePrimaryIssueAction.ts rename web-client/src/presenter/computeds/CaseWorksheets/{addEditPrimaryIssueModalHelper.test.ts => addEditCaseWorksheetModalHelper.test.ts} (60%) rename web-client/src/presenter/computeds/CaseWorksheets/{addEditPrimaryIssueModalHelper.ts => addEditCaseWorksheetModalHelper.ts} (93%) delete mode 100644 web-client/src/presenter/sequences/updateFinalBriefDueDateSequence.ts delete mode 100644 web-client/src/presenter/sequences/updateStatusOfMatterSequence.ts diff --git a/shared/src/business/entities/caseWorksheet/CaseWorksheet.test.ts b/shared/src/business/entities/caseWorksheet/CaseWorksheet.test.ts index 2380cae1507..74536f566eb 100644 --- a/shared/src/business/entities/caseWorksheet/CaseWorksheet.test.ts +++ b/shared/src/business/entities/caseWorksheet/CaseWorksheet.test.ts @@ -32,18 +32,4 @@ describe('CaseWorksheet', () => { ).toBeDefined(); }); }); - - describe('deletePrimaryIssue', () => { - it('should delete the primary issue when deletePrimaryIssue method is called', () => { - const worksheet = new CaseWorksheet({ - primaryIssue: 'TEST_PRIMARY_ISSUE', - }); - - expect(worksheet.primaryIssue).toBeDefined(); - - worksheet.deletePrimaryIssue(); - - expect(worksheet.primaryIssue).toBeUndefined(); - }); - }); }); diff --git a/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.test.ts b/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.test.ts deleted file mode 100644 index 5e4f0b1fc93..00000000000 --- a/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.test.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { InvalidRequest, UnauthorizedError } from '../../../errors/errors'; -import { RawCaseWorksheet } from '@shared/business/entities/caseWorksheet/CaseWorksheet'; -import { applicationContext } from '../../test/createTestApplicationContext'; -import { deletePrimaryIssueInteractor } from './deletePrimaryIssueInteractor'; -import { judgeUser, petitionsClerkUser } from '@shared/test/mockUsers'; -import { omit } from 'lodash'; - -describe('deletePrimaryIssueInteractor', () => { - const mockCaseWorksheet: RawCaseWorksheet = { - docketNumber: '101-23', - entityName: 'CaseWorksheet', - primaryIssue: 'Don`t go chasin waterfalls', - }; - - it('should throw an error when the user does not have access to the case worksheet feature', async () => { - applicationContext.getCurrentUser.mockReturnValue(petitionsClerkUser); // Only judges and judges chambers have access to case worksheets - - await expect( - deletePrimaryIssueInteractor(applicationContext, { - docketNumber: mockCaseWorksheet.docketNumber, - }), - ).rejects.toThrow(UnauthorizedError); - }); - - it('should throw an error when the docket number was not provided as part of the request', async () => { - applicationContext.getCurrentUser.mockReturnValue(judgeUser); - - await expect( - deletePrimaryIssueInteractor(applicationContext, { - docketNumber: undefined as any, - }), - ).rejects.toThrow(InvalidRequest); - }); - - it('should call the persistence method with the primaryIssue deleted from the worksheet', async () => { - applicationContext.getCurrentUser.mockReturnValue(judgeUser); - applicationContext - .getPersistenceGateway() - .getCaseWorksheet.mockReturnValue(mockCaseWorksheet); - - const worksheet = await deletePrimaryIssueInteractor(applicationContext, { - docketNumber: mockCaseWorksheet.docketNumber, - }); - - const EXPECTED_WORKSHEET = { - ...omit(mockCaseWorksheet, 'primaryIssue'), - }; - expect( - applicationContext.getPersistenceGateway().updateCaseWorksheet, - ).toHaveBeenCalledWith({ - applicationContext: expect.anything(), - caseWorksheet: EXPECTED_WORKSHEET, - judgeUserId: judgeUser.userId, - }); - expect(worksheet).toEqual(EXPECTED_WORKSHEET); - }); -}); diff --git a/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.ts b/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.ts deleted file mode 100644 index ff9b7df98f7..00000000000 --- a/shared/src/business/useCases/caseWorksheet/deletePrimaryIssueInteractor.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { - CaseWorksheet, - RawCaseWorksheet, -} from '@shared/business/entities/caseWorksheet/CaseWorksheet'; -import { InvalidRequest, UnauthorizedError } from '../../../errors/errors'; -import { - ROLE_PERMISSIONS, - isAuthorized, -} from '../../../authorization/authorizationClientService'; - -export const deletePrimaryIssueInteractor = async ( - applicationContext: IApplicationContext, - { docketNumber }: { docketNumber: string }, -): Promise => { - const user = applicationContext.getCurrentUser(); - - if (!isAuthorized(user, ROLE_PERMISSIONS.CASE_WORKSHEET)) { - throw new UnauthorizedError('Unauthorized'); - } - - if (!docketNumber) { - throw new InvalidRequest('Docket number is required.'); - } - - const rawWorksheet = await applicationContext - .getPersistenceGateway() - .getCaseWorksheet({ applicationContext, docketNumber }); - - const caseWorksheetEntity = new CaseWorksheet(rawWorksheet); - - caseWorksheetEntity.deletePrimaryIssue(); - - caseWorksheetEntity.validate(); - - const rawCaseWorksheet = caseWorksheetEntity.toRawObject(); - - await applicationContext.getPersistenceGateway().updateCaseWorksheet({ - applicationContext, - caseWorksheet: rawCaseWorksheet, - judgeUserId: user.userId, - }); - - return rawCaseWorksheet; -}; diff --git a/shared/src/business/useCases/caseWorksheet/getCaseWorksheetsForJudgeInteractor.ts b/shared/src/business/useCases/caseWorksheet/getCaseWorksheetsForJudgeInteractor.ts index 30818c2a047..ba4b5bc2b44 100644 --- a/shared/src/business/useCases/caseWorksheet/getCaseWorksheetsForJudgeInteractor.ts +++ b/shared/src/business/useCases/caseWorksheet/getCaseWorksheetsForJudgeInteractor.ts @@ -6,7 +6,7 @@ import { ROLE_PERMISSIONS, isAuthorized, } from '../../../authorization/authorizationClientService'; -import { UnauthorizedError } from '../../../errors/errors'; +import { UnauthorizedError } from '@web-api/errors/errors'; import { User } from '@shared/business/entities/User'; export const getCaseWorksheetsForJudgeInteractor = async ( diff --git a/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts b/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts index 1dfd8c58209..b0f5c44b807 100644 --- a/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts +++ b/shared/src/business/useCases/caseWorksheet/updateCaseWorksheetInteractor.ts @@ -6,7 +6,7 @@ import { ROLE_PERMISSIONS, isAuthorized, } from '../../../authorization/authorizationClientService'; -import { UnauthorizedError } from '../../../errors/errors'; +import { UnauthorizedError } from '@web-api/errors/errors'; import { User } from '@shared/business/entities/User'; export const updateCaseWorksheetInteractor = async ( diff --git a/shared/src/proxies/caseWorksheet/deletePrimaryIssueProxy.ts b/shared/src/proxies/caseWorksheet/deletePrimaryIssueProxy.ts deleted file mode 100644 index c3b0ce4cfe4..00000000000 --- a/shared/src/proxies/caseWorksheet/deletePrimaryIssueProxy.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { post } from '../requests'; - -export const deletePrimaryIssueInteractor = ( - applicationContext, - { - docketNumber, - }: { - docketNumber: string; - }, -) => { - return post({ - applicationContext, - body: {}, - endpoint: `/case-worksheet/${docketNumber}/primary-issue/delete`, - }); -}; diff --git a/web-api/src/app.ts b/web-api/src/app.ts index 50682688733..2bd28722ff0 100644 --- a/web-api/src/app.ts +++ b/web-api/src/app.ts @@ -38,7 +38,6 @@ import { deleteCaseNoteLambda } from './lambdas/caseNote/deleteCaseNoteLambda'; import { deleteCounselFromCaseLambda } from './lambdas/cases/deleteCounselFromCaseLambda'; import { deleteDeficiencyStatisticLambda } from './lambdas/cases/deleteDeficiencyStatisticLambda'; import { deletePractitionerDocumentLambda } from './lambdas/practitioners/deletePractitionerDocumentLambda'; -import { deletePrimaryIssueLambda } from '@web-api/lambdas/caseWorksheet/deletePrimaryIssueLambda'; import { deleteTrialSessionLambda } from './lambdas/trialSessions/deleteTrialSessionLambda'; import { deleteUserCaseNoteLambda } from './lambdas/caseNote/deleteUserCaseNoteLambda'; import { dismissNOTTReminderForTrialLambda } from './lambdas/trialSessions/dismissNOTTReminderForTrialLambda'; @@ -618,10 +617,6 @@ app.use(logger()); */ { app.get('/case-worksheet', lambdaWrapper(getCaseWorksheetsForJudgeLambda)); - app.post( - '/case-worksheet/:docketNumber/primary-issue/delete', - lambdaWrapper(deletePrimaryIssueLambda), - ); } /** diff --git a/web-api/src/getUseCases.ts b/web-api/src/getUseCases.ts index c72b9cb0610..cf149122545 100644 --- a/web-api/src/getUseCases.ts +++ b/web-api/src/getUseCases.ts @@ -40,7 +40,6 @@ import { deleteCaseNoteInteractor } from '../../shared/src/business/useCases/cas import { deleteCounselFromCaseInteractor } from '../../shared/src/business/useCases/caseAssociation/deleteCounselFromCaseInteractor'; import { deleteDeficiencyStatisticInteractor } from '../../shared/src/business/useCases/caseStatistics/deleteDeficiencyStatisticInteractor'; import { deletePractitionerDocumentInteractor } from '../../shared/src/business/useCases/practitioners/deletePractitionerDocumentInteractor'; -import { deletePrimaryIssueInteractor } from '@shared/business/useCases/caseWorksheet/deletePrimaryIssueInteractor'; import { deleteTrialSessionInteractor } from '../../shared/src/business/useCases/trialSessions/deleteTrialSessionInteractor'; import { deleteUserCaseNoteInteractor } from '../../shared/src/business/useCases/caseNote/deleteUserCaseNoteInteractor'; import { dismissNOTTReminderForTrialInteractor } from '../../shared/src/business/useCases/trialSessions/dismissNOTTReminderForTrialInteractor'; @@ -246,7 +245,6 @@ const useCases = { deleteCounselFromCaseInteractor, deleteDeficiencyStatisticInteractor, deletePractitionerDocumentInteractor, - deletePrimaryIssueInteractor, deleteTrialSessionInteractor, deleteUserCaseNoteInteractor, dismissNOTTReminderForTrialInteractor, diff --git a/web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts b/web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts deleted file mode 100644 index 5072bd1b924..00000000000 --- a/web-api/src/lambdas/caseWorksheet/deletePrimaryIssueLambda.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { genericHandler } from '../../genericHandler'; - -export const deletePrimaryIssueLambda = event => - genericHandler(event, ({ applicationContext }) => { - return applicationContext - .getUseCases() - .deletePrimaryIssueInteractor(applicationContext, { - ...event.pathParameters, - }); - }); diff --git a/web-client/src/applicationContext.ts b/web-client/src/applicationContext.ts index de1b38ad2e6..6a99076b52f 100644 --- a/web-client/src/applicationContext.ts +++ b/web-client/src/applicationContext.ts @@ -102,7 +102,6 @@ import { deleteCaseNoteInteractor } from '../../shared/src/proxies/caseNote/dele import { deleteCounselFromCaseInteractor } from '../../shared/src/proxies/caseAssociation/deleteCounselFromCaseProxy'; import { deleteDeficiencyStatisticInteractor } from '../../shared/src/proxies/caseStatistics/deleteDeficiencyStatisticProxy'; import { deletePractitionerDocumentInteractor } from '../../shared/src/proxies/practitioners/deletePractitionerDocumentProxy'; -import { deletePrimaryIssueInteractor } from '@shared/proxies/caseWorksheet/deletePrimaryIssueProxy'; import { deleteTrialSessionInteractor } from '../../shared/src/proxies/trialSessions/deleteTrialSessionProxy'; import { deleteUserCaseNoteInteractor } from '../../shared/src/proxies/caseNote/deleteUserCaseNoteProxy'; import { dismissNOTTReminderForTrialInteractor } from '../../shared/src/proxies/trialSessions/dismissNOTTReminderForTrialProxy'; @@ -414,7 +413,6 @@ const allUseCases = { deleteCounselFromCaseInteractor, deleteDeficiencyStatisticInteractor, deletePractitionerDocumentInteractor, - deletePrimaryIssueInteractor, deleteTrialSessionInteractor, deleteUserCaseNoteInteractor, dismissNOTTReminderForTrialInteractor, diff --git a/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.test.ts deleted file mode 100644 index cb73f9007d7..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.test.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { applicationContextForClient as applicationContext } from '@shared/business/test/createTestApplicationContext'; -import { deletePrimaryIssueAction } from '@web-client/presenter/actions/CaseWorksheet/deletePrimaryIssueAction'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; - -describe('deletePrimaryIssueAction', () => { - presenter.providers.applicationContext = applicationContext; - - it('should make a call to delete the primary issue', async () => { - const RETURNED_WORKSHEET = { - docketNumber: MOCK_CASE.docketNumber, - }; - applicationContext - .getUseCases() - .deletePrimaryIssueInteractor.mockResolvedValue(RETURNED_WORKSHEET); - - const { - output: { updatedWorksheet }, - } = await runAction(deletePrimaryIssueAction, { - modules: { - presenter, - }, - state: { - modal: { - docketNumber: MOCK_CASE.docketNumber, - }, - }, - }); - - expect( - applicationContext.getUseCases().deletePrimaryIssueInteractor.mock - .calls[0][1], - ).toEqual({ - docketNumber: MOCK_CASE.docketNumber, - }); - expect(updatedWorksheet).toBe(RETURNED_WORKSHEET); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.ts b/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.ts deleted file mode 100644 index 5355181b79f..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/deletePrimaryIssueAction.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const deletePrimaryIssueAction = async ({ - applicationContext, - get, -}: ActionProps) => { - const { docketNumber } = get(state.modal); - - const updatedWorksheet = await applicationContext - .getUseCases() - .deletePrimaryIssueInteractor(applicationContext, { - docketNumber: docketNumber!, - }); - - return { updatedWorksheet }; -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.test.ts deleted file mode 100644 index dd7a7df88b3..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.test.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { setDeletePrimaryIssueModalStateAction } from '@web-client/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction'; - -describe('setDeletePrimaryIssueModalStateAction', () => { - it('should setup modal state for delete primary issue action', async () => { - const { state } = await runAction(setDeletePrimaryIssueModalStateAction, { - props: { - docketNumber: MOCK_CASE.docketNumber, - }, - state: { - modal: {}, - }, - }); - - expect(state.modal.docketNumber).toEqual(MOCK_CASE.docketNumber); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.ts b/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.ts deleted file mode 100644 index 62e44aad8db..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/setDeletePrimaryIssueModalStateAction.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const setDeletePrimaryIssueModalStateAction = ({ - props, - store, -}: ActionProps<{ docketNumber: string }>) => { - const { docketNumber } = props; - - store.set(state.modal.docketNumber, docketNumber); -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.test.ts deleted file mode 100644 index 65c4fc089ba..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { applicationContextForClient as applicationContext } from '../../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { updateFinalBriefDueDateAction } from './updateFinalBriefDueDateAction'; - -describe('updateFinalBriefDueDateAction', () => { - presenter.providers.applicationContext = applicationContext; - - it('should persist the brief due date to the backend when the current user is a chambers user', async () => { - const TEST_FINAL_BRIEF_DUE_DATE = '08/28/2023'; - applicationContext - .getUseCases() - .updateCaseWorksheetInteractor.mockReturnValue(null); - - await runAction(updateFinalBriefDueDateAction, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - finalBriefDueDate: TEST_FINAL_BRIEF_DUE_DATE, - }, - }); - - expect( - applicationContext.getUseCases().updateCaseWorksheetInteractor.mock - .calls[0][1], - ).toMatchObject({ - docketNumber: MOCK_CASE.docketNumber, - updatedProps: { finalBriefDueDate: TEST_FINAL_BRIEF_DUE_DATE }, - }); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.ts deleted file mode 100644 index 7ccff29ae3f..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction.ts +++ /dev/null @@ -1,17 +0,0 @@ -export const updateFinalBriefDueDateAction = async ({ - applicationContext, - props, -}: ActionProps<{ docketNumber: string; finalBriefDueDate: string }>) => { - const { docketNumber, finalBriefDueDate } = props; - - const updatedWorksheet = await applicationContext - .getUseCases() - .updateCaseWorksheetInteractor(applicationContext, { - docketNumber, - updatedProps: { - finalBriefDueDate, - }, - }); - - return { updatedWorksheet }; -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.test.ts deleted file mode 100644 index f75bb900ca4..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.test.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { applicationContextForClient as applicationContext } from '../../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { updatePrimaryIssueAction } from './updatePrimaryIssueAction'; - -describe('updatePrimaryIssueAction', () => { - presenter.providers.applicationContext = applicationContext; - - const TEST_PRIMARY_ISSUE = 'SOME TEST PRIMARY ISSUE'; - - it('should persist the primary issue and return the updated case worksheet to props', async () => { - applicationContext - .getUseCases() - .updateCaseWorksheetInteractor.mockResolvedValue({ - docketNumber: MOCK_CASE.docketNumber, - primaryIssue: TEST_PRIMARY_ISSUE, - }); - - const { output } = await runAction(updatePrimaryIssueAction, { - modules: { - presenter, - }, - state: { - modal: { - docketNumber: MOCK_CASE.docketNumber, - primaryIssue: TEST_PRIMARY_ISSUE, - }, - }, - }); - - expect( - applicationContext.getUseCases().updateCaseWorksheetInteractor.mock - .calls[0][1], - ).toEqual({ - docketNumber: MOCK_CASE.docketNumber, - updatedProps: { - primaryIssue: TEST_PRIMARY_ISSUE, - }, - }); - expect(output.updatedWorksheet).toEqual({ - docketNumber: MOCK_CASE.docketNumber, - primaryIssue: TEST_PRIMARY_ISSUE, - }); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.ts deleted file mode 100644 index eda78f53552..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updatePrimaryIssueAction.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const updatePrimaryIssueAction = async ({ - applicationContext, - get, -}: ActionProps) => { - const { docketNumber, primaryIssue } = get(state.modal); - - const updatedWorksheet = await applicationContext - .getUseCases() - .updateCaseWorksheetInteractor(applicationContext, { - docketNumber: docketNumber!, - updatedProps: { - primaryIssue, - }, - }); - - return { updatedWorksheet }; -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.test.ts deleted file mode 100644 index 75e0e361629..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { RawCaseWorksheet } from '@shared/business/entities/caseWorksheet/CaseWorksheet'; -import { STATUS_OF_MATTER_OPTIONS } from '@shared/business/entities/EntityConstants'; -import { applicationContextForClient as applicationContext } from '../../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { updateStatusOfMatterAction } from './updateStatusOfMatterAction'; - -describe('updateStatusOfMatterAction', () => { - presenter.providers.applicationContext = applicationContext; - - it('should persist the status of matter to the backend and return the updated case worksheet to props', async () => { - const TEST_STATUS_OF_MATTER = STATUS_OF_MATTER_OPTIONS[1]; - const mockUpdatedCaseWorksheet: RawCaseWorksheet = { - docketNumber: MOCK_CASE.docketNumber, - entityName: 'CaseWorksheet', - statusOfMatter: TEST_STATUS_OF_MATTER, - }; - - applicationContext - .getUseCases() - .updateCaseWorksheetInteractor.mockResolvedValue( - mockUpdatedCaseWorksheet, - ); - - const { output } = await runAction(updateStatusOfMatterAction, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - statusOfMatter: TEST_STATUS_OF_MATTER, - }, - }); - - expect( - applicationContext.getUseCases().updateCaseWorksheetInteractor.mock - .calls[0][1], - ).toMatchObject({ - docketNumber: MOCK_CASE.docketNumber, - updatedProps: { - statusOfMatter: TEST_STATUS_OF_MATTER, - }, - }); - expect(output.updatedWorksheet).toEqual(mockUpdatedCaseWorksheet); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.ts deleted file mode 100644 index 1639fc510aa..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/updateStatusOfMatterAction.ts +++ /dev/null @@ -1,20 +0,0 @@ -export const updateStatusOfMatterAction = async ({ - applicationContext, - props, -}: ActionProps<{ - docketNumber: string; - statusOfMatter: string; -}>) => { - const { docketNumber, statusOfMatter } = props; - - const updatedWorksheet = await applicationContext - .getUseCases() - .updateCaseWorksheetInteractor(applicationContext, { - docketNumber, - updatedProps: { - statusOfMatter, - }, - }); - - return { updatedWorksheet }; -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.test.ts deleted file mode 100644 index 15ac7cdeb2c..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.test.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { applicationContextForClient as applicationContext } from '../../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { validateBriefDueDateAction } from './validateBriefDueDateAction'; - -describe('validateBriefDueDateAction', () => { - const TEST_BRIEF_DUE_DATE = '08/28/2023'; - - let successStub; - let errorStub; - - beforeEach(() => { - successStub = jest.fn(); - errorStub = jest.fn(); - - presenter.providers.applicationContext = applicationContext; - - presenter.providers.path = { - error: errorStub, - success: successStub, - }; - }); - - it('should use the docket number from props to validate/create a new case worksheet when one does not already exist for the case', async () => { - await runAction(validateBriefDueDateAction as any, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - finalBriefDueDate: TEST_BRIEF_DUE_DATE, - }, - state: { - submittedAndCavCases: { - worksheets: [], - }, - }, - }); - - expect( - applicationContext.getUseCases().validateCaseWorksheetInteractor.mock - .calls[0][0].caseWorksheet.docketNumber, - ).toEqual(MOCK_CASE.docketNumber); - }); - - it('should return the success path with the validation key to unset in state when the updated case is valid', async () => { - applicationContext - .getUseCases() - .validateCaseWorksheetInteractor.mockReturnValue(null); - - await runAction(validateBriefDueDateAction as any, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - finalBriefDueDate: TEST_BRIEF_DUE_DATE, - }, - state: { - submittedAndCavCases: { - worksheets: [ - { - docketNumber: MOCK_CASE.docketNumber, - }, - ], - }, - }, - }); - - expect( - applicationContext.getUseCases().validateCaseWorksheetInteractor.mock - .calls[0][0].caseWorksheet, - ).toMatchObject({ - finalBriefDueDate: '2023-08-28', - }); - expect(successStub).toHaveBeenCalledWith({ - finalBriefDueDate: '2023-08-28', - validationKey: 'finalBriefDueDate', - }); - expect(errorStub).not.toHaveBeenCalled(); - }); - - it('should return the error path with the error message when the final brief due date is invalid', async () => { - const TEST_VALIDATION_ERRORS = { finalBriefDueDate: 'Enter a valid date' }; - - applicationContext - .getUseCases() - .validateCaseWorksheetInteractor.mockReturnValue(TEST_VALIDATION_ERRORS); - - await runAction(validateBriefDueDateAction as any, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - finalBriefDueDate: TEST_BRIEF_DUE_DATE, - }, - state: { - submittedAndCavCases: { - worksheets: [ - { - docketNumber: MOCK_CASE.docketNumber, - }, - ], - }, - }, - }); - - expect(errorStub).toHaveBeenCalledWith({ errors: TEST_VALIDATION_ERRORS }); - expect(successStub).not.toHaveBeenCalled(); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.ts b/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.ts deleted file mode 100644 index 3c4b76a37aa..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/validateBriefDueDateAction.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const validateBriefDueDateAction = async ({ - applicationContext, - get, - path, - props, -}: ActionProps<{ docketNumber: string; finalBriefDueDate: string }>) => { - const { docketNumber, finalBriefDueDate } = props; - - const { worksheets } = get(state.submittedAndCavCases); - - const worksheet = worksheets.find(ws => ws.docketNumber === docketNumber) || { - docketNumber, - }; - - let computedDate = ''; - if (finalBriefDueDate) { - const [month, day, year] = finalBriefDueDate.split('/'); - computedDate = `${year}-${month}-${day}`; - } - - const errors = await applicationContext - .getUseCases() - .validateCaseWorksheetInteractor({ - caseWorksheet: { - ...worksheet!, - finalBriefDueDate: computedDate, - }, - }); - - if (!errors) { - return path.success({ - finalBriefDueDate: computedDate, - validationKey: 'finalBriefDueDate', - }); - } - - return path.error({ - errors, - }); -}; diff --git a/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.test.ts b/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.test.ts deleted file mode 100644 index 4b46cdf6e2a..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { STATUS_OF_MATTER_OPTIONS } from '@shared/business/entities/EntityConstants'; -import { applicationContextForClient as applicationContext } from '../../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { validateStatusOfMatterAction } from './validateStatusOfMatterAction'; - -describe('validateStatusOfMatterAction', () => { - const TEST_STATUS_OF_MATTER = STATUS_OF_MATTER_OPTIONS[0]; - - let successStub; - let errorStub; - - beforeEach(() => { - successStub = jest.fn(); - errorStub = jest.fn(); - - presenter.providers.applicationContext = applicationContext; - - presenter.providers.path = { - error: errorStub, - success: successStub, - }; - }); - - it('should use the docket number from props to validate/create a new case worksheet when one does not already exist for the case', async () => { - await runAction(validateStatusOfMatterAction, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - statusOfMatter: TEST_STATUS_OF_MATTER, - }, - state: { - submittedAndCavCases: { - worksheets: [], - }, - }, - }); - - expect( - applicationContext.getUseCases().validateCaseWorksheetInteractor.mock - .calls[0][0].caseWorksheet.docketNumber, - ).toEqual(MOCK_CASE.docketNumber); - }); - - it('should return the success path with the validation key to unset in state when the updated case worksheet is valid', async () => { - await runAction(validateStatusOfMatterAction, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - statusOfMatter: TEST_STATUS_OF_MATTER, - }, - state: { - submittedAndCavCases: { - worksheets: [ - { - docketNumber: MOCK_CASE.docketNumber, - }, - ], - }, - }, - }); - - expect( - applicationContext.getUseCases().validateCaseWorksheetInteractor.mock - .calls[0][0].caseWorksheet, - ).toMatchObject({ - statusOfMatter: TEST_STATUS_OF_MATTER, - }); - expect(successStub).toHaveBeenCalledWith({ - validationKey: 'statusOfMatter', - }); - expect(errorStub).not.toHaveBeenCalled(); - }); - - it('should return the error path with the error message when the final brief due date is invalid', async () => { - const TEST_VALIDATION_ERRORS = { finalBriefDueDate: 'Enter a valid date' }; - - applicationContext - .getUseCases() - .validateCaseWorksheetInteractor.mockReturnValue(TEST_VALIDATION_ERRORS); - - await runAction(validateStatusOfMatterAction, { - modules: { - presenter, - }, - props: { - docketNumber: MOCK_CASE.docketNumber, - finalBriefDueDate: 'abcdef', // Final brief due date should be a date string formatted as 'YYYY-MM-DD' - }, - state: { - submittedAndCavCases: { - worksheets: [ - { - docketNumber: MOCK_CASE.docketNumber, - }, - ], - }, - }, - }); - - expect(errorStub).toHaveBeenCalledWith({ errors: TEST_VALIDATION_ERRORS }); - expect(successStub).not.toHaveBeenCalled(); - }); -}); diff --git a/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.ts b/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.ts deleted file mode 100644 index 43aedd1c2e8..00000000000 --- a/web-client/src/presenter/actions/CaseWorksheet/validateStatusOfMatterAction.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const validateStatusOfMatterAction = async ({ - applicationContext, - get, - path, - props, -}: ActionProps<{ docketNumber: string; statusOfMatter: string }>) => { - const { docketNumber, statusOfMatter } = props; - - const { worksheets } = get(state.submittedAndCavCases); - - const worksheet = worksheets.find(ws => ws.docketNumber === docketNumber) || { - docketNumber, - }; - - const errors = await applicationContext - .getUseCases() - .validateCaseWorksheetInteractor({ - caseWorksheet: { - ...worksheet, - statusOfMatter, - }, - }); - - if (!errors) { - return path.success({ validationKey: 'statusOfMatter' }); - } - - return path.error({ - errors, - }); -}; diff --git a/web-client/src/presenter/actions/validatePrimaryIssueAction.test.ts b/web-client/src/presenter/actions/validatePrimaryIssueAction.test.ts deleted file mode 100644 index 0d0e641b419..00000000000 --- a/web-client/src/presenter/actions/validatePrimaryIssueAction.test.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { MOCK_CASE } from '@shared/test/mockCase'; -import { applicationContextForClient as applicationContext } from '../../../../shared/src/business/test/createTestApplicationContext'; -import { presenter } from '../presenter-mock'; -import { runAction } from '@web-client/presenter/test.cerebral'; -import { validatePrimaryIssueAction } from './validatePrimaryIssueAction'; - -describe('validatePrimaryIssueAction', () => { - let successMock; - let errorMock; - - beforeAll(() => { - successMock = jest.fn(); - errorMock = jest.fn(); - - presenter.providers.applicationContext = applicationContext; - presenter.providers.path = { - error: errorMock, - success: successMock, - }; - }); - - it('should return the success path when the primary issue note is valid', () => { - applicationContext - .getUseCases() - .validateCaseWorksheetInteractor.mockReturnValue(null); - - runAction(validatePrimaryIssueAction, { - modules: { - presenter, - }, - state: { - modal: { - docketNumber: MOCK_CASE.docketNumber, - primaryIssue: 'abcdefg', - }, - }, - }); - - expect(successMock).toHaveBeenCalled(); - expect(errorMock).not.toHaveBeenCalled(); - }); - - it('should return the error when the primary issue note is invalid', () => { - const validationError = { testProp: true }; - applicationContext - .getUseCases() - .validateCaseWorksheetInteractor.mockReturnValue(validationError); - - runAction(validatePrimaryIssueAction, { - modules: { - presenter, - }, - state: { - modal: { - docketNumber: MOCK_CASE.docketNumber, - primaryIssue: 12345, // primaryIssue must be a string - }, - }, - }); - - expect(errorMock).toHaveBeenCalled(); - const expectedErrorOptions = { - alertError: { - title: 'Errors were found. Please correct your form and resubmit.', - }, - errors: validationError, - }; - expect(errorMock.mock.calls[0][0]).toMatchObject(expectedErrorOptions); - expect(successMock).not.toHaveBeenCalled(); - }); -}); diff --git a/web-client/src/presenter/actions/validatePrimaryIssueAction.ts b/web-client/src/presenter/actions/validatePrimaryIssueAction.ts deleted file mode 100644 index b818de0ff48..00000000000 --- a/web-client/src/presenter/actions/validatePrimaryIssueAction.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { state } from '@web-client/presenter/app.cerebral'; - -export const validatePrimaryIssueAction = ({ - applicationContext, - get, - path, -}: ActionProps) => { - const { docketNumber, primaryIssue } = get(state.modal); - - const errors = applicationContext - .getUseCases() - .validateCaseWorksheetInteractor({ - caseWorksheet: { docketNumber, primaryIssue }, - }); - - if (!errors) { - return path.success(); - } else { - return path.error({ - alertError: { - title: 'Errors were found. Please correct your form and resubmit.', - }, - errors, - }); - } -}; diff --git a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.test.ts b/web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.test.ts similarity index 60% rename from web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.test.ts rename to web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.test.ts index 6757b15e8a3..b68e249bb8c 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.test.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.test.ts @@ -1,16 +1,16 @@ import { MOCK_CASE } from '@shared/test/mockCase'; -import { addEditPrimaryIssueModalHelper as addEditPrimaryIssueModalHelperComputed } from './addEditPrimaryIssueModalHelper'; -import { applicationContextForClient as applicationContext } from '@shared/business/test/createTestApplicationContext'; +import { addEditCaseWorksheetModalHelper as addEditCaseWorksheetModalHelperComputed } from './addEditCaseWorksheetModalHelper'; +import { applicationContext } from '@shared/business/test/createTestApplicationContext'; import { runCompute } from '@web-client/presenter/test.cerebral'; import { withAppContextDecorator } from '../../../withAppContext'; -describe('addEditPrimaryIssueModalHelper', () => { - const addEditPrimaryIssueModalHelper = withAppContextDecorator( - addEditPrimaryIssueModalHelperComputed, +describe('addEditCaseWorksheetModalHelper', () => { + const addEditCaseWorksheetModalHelper = withAppContextDecorator( + addEditCaseWorksheetModalHelperComputed, ); it('should return the title of the modal, formatted to include the docket number and case title of the case the user is adding a primary issue to', () => { - const { title } = runCompute(addEditPrimaryIssueModalHelper, { + const { title } = runCompute(addEditCaseWorksheetModalHelper, { state: { modal: { docketNumber: MOCK_CASE.docketNumber, diff --git a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.ts similarity index 93% rename from web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts rename to web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.ts index a40b8b088b0..8e7fccbe3c0 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper.ts @@ -2,7 +2,7 @@ import { ClientApplicationContext } from '@web-client/applicationContext'; import { Get } from 'cerebral'; import { state } from '@web-client/presenter/app.cerebral'; -export const addEditPrimaryIssueModalHelper = ( +export const addEditCaseWorksheetModalHelper = ( get: Get, applicationContext: ClientApplicationContext, ): { title: string } => { diff --git a/web-client/src/presenter/presenter.ts b/web-client/src/presenter/presenter.ts index 78afec34351..22279925c83 100644 --- a/web-client/src/presenter/presenter.ts +++ b/web-client/src/presenter/presenter.ts @@ -462,7 +462,6 @@ import { updateDocketEntryFormValueSequence } from './sequences/updateDocketEntr import { updateDocketEntryMetaDocumentFormValueSequence } from './sequences/updateDocketEntryMetaDocumentFormValueSequence'; import { updateDocketNumberSearchFormSequence } from './sequences/updateDocketNumberSearchFormSequence'; import { updateFileDocumentWizardFormValueSequence } from './sequences/updateFileDocumentWizardFormValueSequence'; -import { updateFinalBriefDueDateSequence } from '@web-client/presenter/sequences/updateFinalBriefDueDateSequence'; import { updateFormValueAndCaseCaptionSequence } from './sequences/updateFormValueAndCaseCaptionSequence'; import { updateFormValueAndSecondaryContactInfoSequence } from './sequences/updateFormValueAndSecondaryContactInfoSequence'; import { updateFormValueSequence } from './sequences/updateFormValueSequence'; @@ -484,7 +483,6 @@ import { updateSessionMetadataSequence } from './sequences/updateSessionMetadata import { updateStartCaseFormValueSequence } from './sequences/updateStartCaseFormValueSequence'; import { updateStartCaseInternalPartyTypeSequence } from './sequences/updateStartCaseInternalPartyTypeSequence'; import { updateStatisticsFormValueSequence } from './sequences/updateStatisticsFormValueSequence'; -import { updateStatusOfMatterSequence } from '@web-client/presenter/sequences/updateStatusOfMatterSequence'; import { updateTrialSessionCompleteSequence } from './sequences/updateTrialSessionCompleteSequence'; import { updateTrialSessionFormDataSequence } from './sequences/updateTrialSessionFormDataSequence'; import { updateTrialSessionSequence } from './sequences/updateTrialSessionSequence'; @@ -997,7 +995,6 @@ export const presenterSequences = { updateDocketEntryMetaDocumentFormValueSequence, updateDocketNumberSearchFormSequence, updateFileDocumentWizardFormValueSequence, - updateFinalBriefDueDateSequence, updateFormValueAndCaseCaptionSequence, updateFormValueAndSecondaryContactInfoSequence, updateFormValueSequence, @@ -1019,7 +1016,6 @@ export const presenterSequences = { updateStartCaseFormValueSequence, updateStartCaseInternalPartyTypeSequence, updateStatisticsFormValueSequence, - updateStatusOfMatterSequence, updateTrialSessionCompleteSequence, updateTrialSessionFormDataSequence, updateTrialSessionSequence, diff --git a/web-client/src/presenter/sequences/updateFinalBriefDueDateSequence.ts b/web-client/src/presenter/sequences/updateFinalBriefDueDateSequence.ts deleted file mode 100644 index 81b70b90b44..00000000000 --- a/web-client/src/presenter/sequences/updateFinalBriefDueDateSequence.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { clearTableItemValidationErrorAction } from '../actions/CaseWorksheet/clearTableItemValidationErrorAction'; -import { setCaseWorksheetAction } from '../actions/CaseWorksheet/setCaseWorksheetAction'; -import { setTableItemValidationErrorsAction } from '../actions/setTableItemValidationErrorsAction'; -import { showProgressSequenceDecorator } from '@web-client/presenter/utilities/showProgressSequenceDecorator'; -import { updateFinalBriefDueDateAction } from '@web-client/presenter/actions/CaseWorksheet/updateFinalBriefDueDateAction'; -import { validateBriefDueDateAction } from '@web-client/presenter/actions/CaseWorksheet/validateBriefDueDateAction'; - -export const updateFinalBriefDueDateSequence = [ - validateBriefDueDateAction, - { - error: [setTableItemValidationErrorsAction], - success: showProgressSequenceDecorator([ - clearTableItemValidationErrorAction, - updateFinalBriefDueDateAction, - setCaseWorksheetAction, - ]), - }, -]; diff --git a/web-client/src/presenter/sequences/updateStatusOfMatterSequence.ts b/web-client/src/presenter/sequences/updateStatusOfMatterSequence.ts deleted file mode 100644 index 5f50ac7ec37..00000000000 --- a/web-client/src/presenter/sequences/updateStatusOfMatterSequence.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { clearTableItemValidationErrorAction } from '../actions/CaseWorksheet/clearTableItemValidationErrorAction'; -import { setCaseWorksheetAction } from '../actions/CaseWorksheet/setCaseWorksheetAction'; -import { setTableItemValidationErrorsAction } from '../actions/setTableItemValidationErrorsAction'; -import { showProgressSequenceDecorator } from '@web-client/presenter/utilities/showProgressSequenceDecorator'; -import { updateStatusOfMatterAction } from '@web-client/presenter/actions/CaseWorksheet/updateStatusOfMatterAction'; -import { validateStatusOfMatterAction } from '@web-client/presenter/actions/CaseWorksheet/validateStatusOfMatterAction'; - -export const updateStatusOfMatterSequence = [ - validateStatusOfMatterAction, - { - error: [setTableItemValidationErrorsAction], - success: showProgressSequenceDecorator([ - clearTableItemValidationErrorAction, - updateStatusOfMatterAction, - setCaseWorksheetAction, - ]), - }, -]; diff --git a/web-client/src/presenter/state.ts b/web-client/src/presenter/state.ts index bb058e501ba..808944a732f 100644 --- a/web-client/src/presenter/state.ts +++ b/web-client/src/presenter/state.ts @@ -4,7 +4,7 @@ import { addCourtIssuedDocketEntryHelper } from './computeds/addCourtIssuedDocke import { addCourtIssuedDocketEntryNonstandardHelper } from './computeds/addCourtIssuedDocketEntryNonstandardHelper'; import { addDocketEntryHelper } from './computeds/addDocketEntryHelper'; import { addDocketNumbersModalHelper } from './computeds/addDocketNumbersModalHelper'; -import { addEditPrimaryIssueModalHelper } from '@web-client/presenter/computeds/CaseWorksheets/addEditPrimaryIssueModalHelper'; +import { addEditCaseWorksheetModalHelper } from '@web-client/presenter/computeds/CaseWorksheets/addEditCaseWorksheetModalHelper'; import { addToTrialSessionModalHelper } from './computeds/addToTrialSessionModalHelper'; import { addTrialSessionInformationHelper } from './computeds/TrialSession/addTrialSessionInformationHelper'; import { advancedDocumentSearchHelper } from './computeds/AdvancedSearch/advancedDocumentSearchHelper'; @@ -139,7 +139,7 @@ export const computeds = { addCourtIssuedDocketEntryNonstandardHelper, addDocketEntryHelper, addDocketNumbersModalHelper, - addEditPrimaryIssueModalHelper, + addEditCaseWorksheetModalHelper, addToTrialSessionModalHelper, addTrialSessionInformationHelper, advancedDocumentSearchHelper, diff --git a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx index a0c0da394d8..c4cbe7b65b1 100644 --- a/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx +++ b/web-client/src/views/CaseWorksheet/AddEditCaseWorksheetModal.tsx @@ -1,6 +1,5 @@ import { BindedTextarea } from '../../ustc-ui/BindedTextarea/BindedTextarea'; import { ConfirmModal } from '../../ustc-ui/Modal/ConfirmModal'; -import { DateInput } from '@web-client/ustc-ui/DateInput/DateInput'; import { DateInputThatActuallyWorks } from '@web-client/ustc-ui/DateInput/DateInputThatActuallyWorks'; import { FormGroup } from '../../ustc-ui/FormGroup/FormGroup'; import { connect } from '@cerebral/react'; @@ -10,14 +9,14 @@ import React from 'react'; export const AddEditCaseWorksheetModal = connect( { STATUS_OF_MATTER_OPTIONS: state.constants.STATUS_OF_MATTER_OPTIONS, - addEditPrimaryIssueModalHelper: state.addEditPrimaryIssueModalHelper, + addEditCaseWorksheetModalHelper: state.addEditCaseWorksheetModalHelper, form: state.form, updateFormValueSequence: sequences.updateFormValueSequence, validateCaseWorksheetSequence: sequences.validateCaseWorksheetSequence, validationErrors: state.validationErrors, }, function AddEditCaseWorksheetModal({ - addEditPrimaryIssueModalHelper, + addEditCaseWorksheetModalHelper, form, STATUS_OF_MATTER_OPTIONS, updateFormValueSequence, @@ -34,7 +33,7 @@ export const AddEditCaseWorksheetModal = connect( onConfirmSequence="updateCaseWorksheetSequence" >
- {addEditPrimaryIssueModalHelper.title} + {addEditCaseWorksheetModalHelper.title}
Date: Wed, 13 Sep 2023 12:40:20 -0700 Subject: [PATCH 13/32] 9995: display initial final brief due date in modal --- .../CaseWorksheets/caseWorksheetsHelper.ts | 16 +++++++++------- .../DateInput/DateInputThatActuallyWorks.tsx | 3 ++- .../CaseWorksheet/AddEditCaseWorksheetModal.tsx | 1 - 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts index 4dd4d7e2e4a..9ba7eade9de 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts @@ -30,13 +30,15 @@ export const caseWorksheetsHelper = ( const worksheetsObj: { [docketNumber: string]: RawCaseWorksheet } = {}; worksheets.forEach(ws => { - ws.finalBriefDueDate = applicationContext - .getUtilities() - .formatDateString( - ws.finalBriefDueDate, - applicationContext.getConstants().DATE_FORMATS.MMDDYY, - ); - worksheetsObj[ws.docketNumber] = ws; + worksheetsObj[ws.docketNumber] = { + ...ws, + finalBriefDueDate: applicationContext + .getUtilities() + .formatDateString( + ws.finalBriefDueDate, + applicationContext.getConstants().DATE_FORMATS.MMDDYY, + ), + }; }); const today = applicationContext diff --git a/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx index 93e0ab5d096..9a6e6878489 100644 --- a/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx +++ b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx @@ -3,6 +3,7 @@ import React, { useEffect, useRef } from 'react'; import datePicker from '../../../../node_modules/@uswds/uswds/packages/usa-date-picker/src'; export const DateInputThatActuallyWorks = ({ + defaultValue, errorText, formGroupClassNames, label, @@ -35,7 +36,7 @@ export const DateInputThatActuallyWorks = ({ -
+
Date: Wed, 13 Sep 2023 12:40:20 -0700 Subject: [PATCH 14/32] 9995: display initial final brief due date in modal --- .../CaseWorksheet/updateCaseWorksheetAction.ts | 10 +--------- .../actions/validateCaseWorksheetAction.ts | 13 +------------ .../CaseWorksheets/caseWorksheetsHelper.ts | 16 +++++++++------- .../DateInput/DateInputThatActuallyWorks.tsx | 3 ++- .../CaseWorksheet/AddEditCaseWorksheetModal.tsx | 1 - .../src/views/CaseWorksheet/CaseWorksheets.tsx | 4 +++- 6 files changed, 16 insertions(+), 31 deletions(-) diff --git a/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts index 2a86f0233cf..68ba5affb3b 100644 --- a/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts +++ b/web-client/src/presenter/actions/CaseWorksheet/updateCaseWorksheetAction.ts @@ -10,20 +10,12 @@ export const updateCaseWorksheetAction = async ({ state.form, ); - const initialLuxonObject = applicationContext - .getUtilities() - .prepareDateFromString(finalBriefDueDate, FORMATS.MMDDYYYY); - - const finalBriefDueDateFormatted = applicationContext - .getUtilities() - .formatDateString(initialLuxonObject, FORMATS.YYYYMMDD); - const updatedWorksheet = await applicationContext .getUseCases() .updateCaseWorksheetInteractor(applicationContext, { worksheet: { docketNumber, - finalBriefDueDate: finalBriefDueDateFormatted, + finalBriefDueDate, primaryIssue, statusOfMatter, }, diff --git a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts index 6321f93cad0..fb616126163 100644 --- a/web-client/src/presenter/actions/validateCaseWorksheetAction.ts +++ b/web-client/src/presenter/actions/validateCaseWorksheetAction.ts @@ -1,4 +1,3 @@ -import { FORMATS } from '@shared/business/utilities/DateHandler'; import { state } from '@web-client/presenter/app.cerebral'; export const validateCaseWorksheetAction = ({ @@ -10,22 +9,12 @@ export const validateCaseWorksheetAction = ({ state.form, ); - const initialLuxonObject = applicationContext - .getUtilities() - .prepareDateFromString(finalBriefDueDate, FORMATS.MMDDYYYY); - - const finalBriefDueDateFormatted = applicationContext - .getUtilities() - .formatDateString(initialLuxonObject, FORMATS.YYYYMMDD); - - console.log('finalBriefDueDate ', finalBriefDueDateFormatted); - const errors = applicationContext .getUseCases() .validateCaseWorksheetInteractor({ caseWorksheet: { docketNumber, - finalBriefDueDate: finalBriefDueDateFormatted, + finalBriefDueDate, primaryIssue, statusOfMatter, }, diff --git a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts index 4dd4d7e2e4a..4eb9e999f75 100644 --- a/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts +++ b/web-client/src/presenter/computeds/CaseWorksheets/caseWorksheetsHelper.ts @@ -30,13 +30,15 @@ export const caseWorksheetsHelper = ( const worksheetsObj: { [docketNumber: string]: RawCaseWorksheet } = {}; worksheets.forEach(ws => { - ws.finalBriefDueDate = applicationContext - .getUtilities() - .formatDateString( - ws.finalBriefDueDate, - applicationContext.getConstants().DATE_FORMATS.MMDDYY, - ); - worksheetsObj[ws.docketNumber] = ws; + worksheetsObj[ws.docketNumber] = { + ...ws, + finalBriefDueDateFormatted: applicationContext + .getUtilities() + .formatDateString( + ws.finalBriefDueDate, + applicationContext.getConstants().DATE_FORMATS.MMDDYY, + ), + }; }); const today = applicationContext diff --git a/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx index 93e0ab5d096..9a6e6878489 100644 --- a/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx +++ b/web-client/src/ustc-ui/DateInput/DateInputThatActuallyWorks.tsx @@ -3,6 +3,7 @@ import React, { useEffect, useRef } from 'react'; import datePicker from '../../../../node_modules/@uswds/uswds/packages/usa-date-picker/src'; export const DateInputThatActuallyWorks = ({ + defaultValue, errorText, formGroupClassNames, label, @@ -35,7 +36,7 @@ export const DateInputThatActuallyWorks = ({ -
+
{formattedCase.status} {formattedCase.daysSinceLastStatusChange} {formattedCase.formattedSubmittedCavStatusDate} - {formattedCase.worksheet.finalBriefDueDate} + + {formattedCase.worksheet.finalBriefDueDateFormatted} + {formattedCase.worksheet.statusOfMatter}