From 0aa050dbaeff941774e45bdb5e828a0c9f999395 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Tue, 18 Mar 2025 14:23:41 -0400 Subject: [PATCH] fix more test errors --- database/addContractInterment.d.ts | 5 +- database/addContractInterment.js | 8 ++- database/addContractInterment.ts | 12 ++-- database/copyContract.js | 56 ++++++++++-------- database/copyContract.ts | 57 ++++++++++++------- handlers/api-get/milestoneICS.js | 45 ++++++++------- handlers/api-get/milestoneICS.ts | 53 ++++++++--------- .../workOrder.milestoneCalendar.js | 18 +++--- .../workOrder.milestoneCalendar.ts | 20 +++---- test/functions.js | 8 +-- test/functions.ts | 8 +-- types/recordTypes.d.ts | 9 +-- types/recordTypes.ts | 10 ++-- views/print/screen/contract.ejs | 48 +++++++--------- 14 files changed, 189 insertions(+), 168 deletions(-) diff --git a/database/addContractInterment.d.ts b/database/addContractInterment.d.ts index 2db3c5d2..8eaf691f 100644 --- a/database/addContractInterment.d.ts +++ b/database/addContractInterment.d.ts @@ -1,4 +1,5 @@ import { type DateString } from '@cityssm/utils-datetime'; +import type { PoolConnection } from 'better-sqlite-pool'; export interface AddForm { contractId: string | number; deceasedName: string; @@ -11,8 +12,8 @@ export interface AddForm { birthPlace: string; deathDateString: DateString | ''; deathPlace: string; - deathAge: string; + deathAge: string | number; deathAgePeriod: string; intermentContainerTypeId: string | number; } -export default function addContractInterment(contractForm: AddForm, user: User): Promise; +export default function addContractInterment(contractForm: AddForm, user: User, connectedDatabase?: PoolConnection): Promise; diff --git a/database/addContractInterment.js b/database/addContractInterment.js index 20002000..ce12b5c9 100644 --- a/database/addContractInterment.js +++ b/database/addContractInterment.js @@ -1,7 +1,7 @@ import { dateStringToInteger } from '@cityssm/utils-datetime'; import { acquireConnection } from './pool.js'; -export default async function addContractInterment(contractForm, user) { - const database = await acquireConnection(); +export default async function addContractInterment(contractForm, user, connectedDatabase) { + const database = connectedDatabase ?? (await acquireConnection()); const maxIntermentNumber = (database .prepare(`select max(intermentNumber) as maxIntermentNumber from ContractInterments @@ -25,6 +25,8 @@ export default async function addContractInterment(contractForm, user) { : dateStringToInteger(contractForm.deathDateString), contractForm.deathPlace, contractForm.intermentContainerTypeId === '' ? undefined : contractForm.intermentContainerTypeId, user.userName, rightNowMillis, user.userName, rightNowMillis); - database.release(); + if (connectedDatabase === undefined) { + database.release(); + } return newIntermentNumber; } diff --git a/database/addContractInterment.ts b/database/addContractInterment.ts index 15c86832..b0355cf5 100644 --- a/database/addContractInterment.ts +++ b/database/addContractInterment.ts @@ -1,4 +1,5 @@ import { type DateString, dateStringToInteger } from '@cityssm/utils-datetime' +import type { PoolConnection } from 'better-sqlite-pool' import { acquireConnection } from './pool.js' @@ -14,16 +15,17 @@ export interface AddForm { birthPlace: string deathDateString: DateString | '' deathPlace: string - deathAge: string + deathAge: string | number deathAgePeriod: string intermentContainerTypeId: string | number } export default async function addContractInterment( contractForm: AddForm, - user: User + user: User, + connectedDatabase?: PoolConnection ): Promise { - const database = await acquireConnection() + const database = connectedDatabase ?? (await acquireConnection()) const maxIntermentNumber = (database .prepare( @@ -73,7 +75,9 @@ export default async function addContractInterment( rightNowMillis ) - database.release() + if (connectedDatabase === undefined) { + database.release() + } return newIntermentNumber } diff --git a/database/copyContract.js b/database/copyContract.js index 42e97e5f..1df8fb10 100644 --- a/database/copyContract.js +++ b/database/copyContract.js @@ -1,7 +1,7 @@ import { dateToString } from '@cityssm/utils-datetime'; import addContract from './addContract.js'; import addContractComment from './addContractComment.js'; -// import addContractOccupant from './addContractOccupant.js' +import addContractInterment from './addContractInterment.js'; import getContract from './getContract.js'; import { acquireConnection } from './pool.js'; export default async function copyContract(oldContractId, user) { @@ -11,7 +11,20 @@ export default async function copyContract(oldContractId, user) { burialSiteId: oldContract.burialSiteId ?? '', contractTypeId: oldContract.contractTypeId, contractStartDateString: dateToString(new Date()), - contractEndDateString: '' + contractEndDateString: '', + purchaserName: oldContract.purchaserName, + purchaserAddress1: oldContract.purchaserAddress1, + purchaserAddress2: oldContract.purchaserAddress2, + purchaserCity: oldContract.purchaserCity, + purchaserProvince: oldContract.purchaserProvince, + purchaserPostalCode: oldContract.purchaserPostalCode, + purchaserPhoneNumber: oldContract.purchaserPhoneNumber, + purchaserEmail: oldContract.purchaserEmail, + purchaserRelationship: oldContract.purchaserRelationship, + funeralHomeId: oldContract.funeralHomeId, + funeralDirectorName: oldContract.funeralDirectorName, + funeralDateString: oldContract.funeralDateString ?? '', + funeralTimeString: oldContract.funeralTimeString ?? '' }, user, database); /* * Copy Fields @@ -27,29 +40,26 @@ export default async function copyContract(oldContractId, user) { .run(newContractId, field.contractTypeFieldId, field.fieldValue, user.userName, rightNowMillis, user.userName, rightNowMillis); } /* - * Copy Occupants + * Copy Interments */ - /* - for (const occupant of oldContract.contractOccupants ?? []) { - await addContractOccupant( - { - contractId: newContractId, - lotOccupantTypeId: occupant.lotOccupantTypeId!, - occupantName: occupant.occupantName!, - occupantFamilyName: occupant.occupantFamilyName!, - occupantAddress1: occupant.occupantAddress1!, - occupantAddress2: occupant.occupantAddress2!, - occupantCity: occupant.occupantCity!, - occupantProvince: occupant.occupantProvince!, - occupantPostalCode: occupant.occupantPostalCode!, - occupantPhoneNumber: occupant.occupantPhoneNumber!, - occupantEmailAddress: occupant.occupantEmailAddress! - }, - user, - database - ) + for (const interment of oldContract.contractInterments ?? []) { + await addContractInterment({ + contractId: newContractId, + deceasedName: interment.deceasedName ?? '', + deceasedAddress1: interment.deceasedAddress1 ?? '', + deceasedAddress2: interment.deceasedAddress2 ?? '', + deceasedCity: interment.deceasedCity ?? '', + deceasedProvince: interment.deceasedProvince ?? '', + deceasedPostalCode: interment.deceasedPostalCode ?? '', + birthDateString: interment.birthDateString ?? '', + birthPlace: interment.birthPlace ?? '', + deathDateString: interment.deathDateString ?? '', + deathPlace: interment.deathPlace ?? '', + deathAge: interment.deathAge ?? '', + deathAgePeriod: interment.deathAgePeriod ?? '', + intermentContainerTypeId: interment.intermentContainerTypeId ?? '' + }, user, database); } - */ /* * Add Comment */ diff --git a/database/copyContract.ts b/database/copyContract.ts index a038c650..a3c6c2a2 100644 --- a/database/copyContract.ts +++ b/database/copyContract.ts @@ -4,7 +4,7 @@ import type { Contract } from '../types/recordTypes.js' import addContract from './addContract.js' import addContractComment from './addContractComment.js' -// import addContractOccupant from './addContractOccupant.js' +import addContractInterment from './addContractInterment.js' import getContract from './getContract.js' import { acquireConnection } from './pool.js' @@ -14,17 +14,29 @@ export default async function copyContract( ): Promise { const database = await acquireConnection() - const oldContract = (await getContract( - oldContractId, - database - )) as Contract + const oldContract = (await getContract(oldContractId, database)) as Contract const newContractId = await addContract( { burialSiteId: oldContract.burialSiteId ?? '', contractTypeId: oldContract.contractTypeId, contractStartDateString: dateToString(new Date()), - contractEndDateString: '' + contractEndDateString: '', + + purchaserName: oldContract.purchaserName, + purchaserAddress1: oldContract.purchaserAddress1, + purchaserAddress2: oldContract.purchaserAddress2, + purchaserCity: oldContract.purchaserCity, + purchaserProvince: oldContract.purchaserProvince, + purchaserPostalCode: oldContract.purchaserPostalCode, + purchaserPhoneNumber: oldContract.purchaserPhoneNumber, + purchaserEmail: oldContract.purchaserEmail, + purchaserRelationship: oldContract.purchaserRelationship, + + funeralHomeId: oldContract.funeralHomeId, + funeralDirectorName: oldContract.funeralDirectorName, + funeralDateString: oldContract.funeralDateString ?? '', + funeralTimeString: oldContract.funeralTimeString ?? '' }, user, database @@ -57,30 +69,33 @@ export default async function copyContract( } /* - * Copy Occupants + * Copy Interments */ - /* - for (const occupant of oldContract.contractOccupants ?? []) { - await addContractOccupant( + for (const interment of oldContract.contractInterments ?? []) { + await addContractInterment( { contractId: newContractId, - lotOccupantTypeId: occupant.lotOccupantTypeId!, - occupantName: occupant.occupantName!, - occupantFamilyName: occupant.occupantFamilyName!, - occupantAddress1: occupant.occupantAddress1!, - occupantAddress2: occupant.occupantAddress2!, - occupantCity: occupant.occupantCity!, - occupantProvince: occupant.occupantProvince!, - occupantPostalCode: occupant.occupantPostalCode!, - occupantPhoneNumber: occupant.occupantPhoneNumber!, - occupantEmailAddress: occupant.occupantEmailAddress! + deceasedName: interment.deceasedName ?? '', + deceasedAddress1: interment.deceasedAddress1 ?? '', + deceasedAddress2: interment.deceasedAddress2 ?? '', + deceasedCity: interment.deceasedCity ?? '', + deceasedProvince: interment.deceasedProvince ?? '', + deceasedPostalCode: interment.deceasedPostalCode ?? '', + + birthDateString: interment.birthDateString ?? '', + birthPlace: interment.birthPlace ?? '', + deathDateString: interment.deathDateString ?? '', + deathPlace: interment.deathPlace ?? '', + + deathAge: interment.deathAge ?? '', + deathAgePeriod: interment.deathAgePeriod ?? '', + intermentContainerTypeId: interment.intermentContainerTypeId ?? '' }, user, database ) } - */ /* * Add Comment diff --git a/handlers/api-get/milestoneICS.js b/handlers/api-get/milestoneICS.js index 80419a6f..7cab7229 100644 --- a/handlers/api-get/milestoneICS.js +++ b/handlers/api-get/milestoneICS.js @@ -22,20 +22,20 @@ function buildEventSummary(milestone) { ((milestone.workOrderMilestoneTypeId ?? -1) === -1 ? milestone.workOrderMilestoneDescription ?? '' : milestone.workOrderMilestoneType ?? '').trim(); - let occupantCount = 0; + let intermentCount = 0; for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { - occupantCount += 1; - if (occupantCount === 1) { + for (const interment of contract.contractInterments ?? []) { + intermentCount += 1; + if (intermentCount === 1) { if (summary !== '') { summary += ': '; } - summary += `${occupant.occupantName ?? ''} ${occupant.occupantFamilyName ?? ''}`; + summary += interment.deceasedName ?? ''; } } } - if (occupantCount > 1) { - summary += ` plus ${(occupantCount - 1).toString()}`; + if (intermentCount > 1) { + summary += ` plus ${(intermentCount - 1).toString()}`; } return summary; } @@ -53,30 +53,30 @@ function buildEventDescriptionHTML_occupancies(request, milestone) { Burial Site Start Date End Date - ${escapeHTML(getConfigProperty('aliases.occupants'))} + Interments `; - for (const occupancy of milestone.workOrderContracts ?? []) { + for (const contract of milestone.workOrderContracts ?? []) { descriptionHTML += ` - - ${escapeHTML(occupancy.contractType ?? '')} + + ${escapeHTML(contract.contractType ?? '')} - ${occupancy.burialSiteName ? escapeHTML(occupancy.burialSiteName) : '(Not Set)'} + ${contract.burialSiteName ? escapeHTML(contract.burialSiteName) : '(Not Set)'} - ${occupancy.contractStartDateString} + ${contract.contractStartDateString} - ${occupancy.contractEndDate - ? occupancy.contractEndDateString + ${contract.contractEndDate + ? contract.contractEndDateString : '(No End Date)'} `; - for (const occupant of occupancy.contractOccupants ?? []) { - descriptionHTML += `${escapeHTML(occupant.lotOccupantType ?? '')}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML(occupant.occupantFamilyName ?? '')}
`; + for (const interment of contract.contractInterments ?? []) { + descriptionHTML += `${escapeHTML(interment.deceasedName ?? '')}
`; } descriptionHTML += ''; } @@ -165,6 +165,7 @@ function buildEventLocation(milestone) { } return burialSiteNames.join(', '); } +// eslint-disable-next-line complexity export default async function handler(request, response) { const urlRoot = getUrlRoot(request); /* @@ -194,7 +195,7 @@ export default async function handler(request, response) { }); if (request.query.workOrderId && workOrderMilestones.length > 0) { calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`); - calendar.url(`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId?.toString()}`); + calendar.url(`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId.toString()}`); } calendar.prodId({ company: calendarCompany, @@ -206,7 +207,7 @@ export default async function handler(request, response) { for (const milestone of workOrderMilestones) { const milestoneTimePieces = `${milestone.workOrderMilestoneDateString} ${milestone.workOrderMilestoneTimeString}`.split(timeStringSplitRegex); const milestoneDate = new Date(Number.parseInt(milestoneTimePieces[0], 10), Number.parseInt(milestoneTimePieces[1], 10) - 1, Number.parseInt(milestoneTimePieces[2], 10), Number.parseInt(milestoneTimePieces[3], 10), Number.parseInt(milestoneTimePieces[4], 10)); - const milestoneEndDate = new Date(milestoneDate.getTime()); + const milestoneEndDate = new Date(milestoneDate); milestoneEndDate.setHours(milestoneEndDate.getHours() + 1); // Build summary (title in Outlook) const summary = buildEventSummary(milestone); @@ -250,16 +251,16 @@ export default async function handler(request, response) { if (milestone.workOrderContracts.length > 0) { let organizerSet = false; for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { + for (const interment of contract.contractInterments ?? []) { if (organizerSet) { calendarEvent.createAttendee({ - name: `${occupant.occupantName ?? ''} ${occupant.occupantFamilyName ?? ''}`, + name: interment.deceasedName ?? '', email: getConfigProperty('settings.workOrders.calendarEmailAddress') }); } else { calendarEvent.organizer({ - name: `${occupant.occupantName ?? ''} ${occupant.occupantFamilyName ?? ''}`, + name: interment.deceasedName ?? '', email: getConfigProperty('settings.workOrders.calendarEmailAddress') }); organizerSet = true; diff --git a/handlers/api-get/milestoneICS.ts b/handlers/api-get/milestoneICS.ts index 6a118d4a..dae1dcff 100644 --- a/handlers/api-get/milestoneICS.ts +++ b/handlers/api-get/milestoneICS.ts @@ -45,24 +45,24 @@ function buildEventSummary(milestone: WorkOrderMilestone): string { : milestone.workOrderMilestoneType ?? '' ).trim() - let occupantCount = 0 + let intermentCount = 0 for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { - occupantCount += 1 + for (const interment of contract.contractInterments ?? []) { + intermentCount += 1 - if (occupantCount === 1) { + if (intermentCount === 1) { if (summary !== '') { summary += ': ' } - summary += `${occupant.occupantName ?? ''} ${occupant.occupantFamilyName ?? ''}` + summary += interment.deceasedName ?? '' } } } - if (occupantCount > 1) { - summary += ` plus ${(occupantCount - 1).toString()}` + if (intermentCount > 1) { + summary += ` plus ${(intermentCount - 1).toString()}` } return summary @@ -87,38 +87,34 @@ function buildEventDescriptionHTML_occupancies( Burial Site Start Date End Date - ${escapeHTML(getConfigProperty('aliases.occupants'))} + Interments ` - for (const occupancy of milestone.workOrderContracts ?? []) { + for (const contract of milestone.workOrderContracts ?? []) { descriptionHTML += ` - - ${escapeHTML(occupancy.contractType ?? '')} + + ${escapeHTML(contract.contractType ?? '')} - ${occupancy.burialSiteName ? escapeHTML(occupancy.burialSiteName) : '(Not Set)'} + ${contract.burialSiteName ? escapeHTML(contract.burialSiteName) : '(Not Set)'} - ${occupancy.contractStartDateString} + ${contract.contractStartDateString} ${ - occupancy.contractEndDate - ? occupancy.contractEndDateString + contract.contractEndDate + ? contract.contractEndDateString : '(No End Date)' } ` - for (const occupant of occupancy.contractOccupants ?? []) { - descriptionHTML += `${escapeHTML( - occupant.lotOccupantType ?? '' - )}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML( - occupant.occupantFamilyName ?? '' - )}
` + for (const interment of contract.contractInterments ?? []) { + descriptionHTML += `${escapeHTML(interment.deceasedName ?? '')}
` } descriptionHTML += '' @@ -246,6 +242,7 @@ function buildEventLocation(milestone: WorkOrderMilestone): string { return burialSiteNames.join(', ') } +// eslint-disable-next-line complexity export default async function handler( request: Request, response: Response @@ -286,7 +283,7 @@ export default async function handler( if (request.query.workOrderId && workOrderMilestones.length > 0) { calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`) calendar.url( - `${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId?.toString()}` + `${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId.toString()}` ) } @@ -312,7 +309,7 @@ export default async function handler( Number.parseInt(milestoneTimePieces[4], 10) ) - const milestoneEndDate = new Date(milestoneDate.getTime()) + const milestoneEndDate = new Date(milestoneDate) milestoneEndDate.setHours(milestoneEndDate.getHours() + 1) // Build summary (title in Outlook) @@ -372,21 +369,17 @@ export default async function handler( if (milestone.workOrderContracts!.length > 0) { let organizerSet = false for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { + for (const interment of contract.contractInterments ?? []) { if (organizerSet) { calendarEvent.createAttendee({ - name: `${occupant.occupantName ?? ''} ${ - occupant.occupantFamilyName ?? '' - }`, + name: interment.deceasedName ?? '', email: getConfigProperty( 'settings.workOrders.calendarEmailAddress' ) }) } else { calendarEvent.organizer({ - name: `${occupant.occupantName ?? ''} ${ - occupant.occupantFamilyName ?? '' - }`, + name: interment.deceasedName ?? '', email: getConfigProperty( 'settings.workOrders.calendarEmailAddress' ) diff --git a/public/javascripts/workOrder.milestoneCalendar.js b/public/javascripts/workOrder.milestoneCalendar.js index b8c92ab5..0cf2035a 100644 --- a/public/javascripts/workOrder.milestoneCalendar.js +++ b/public/javascripts/workOrder.milestoneCalendar.js @@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const workOrderMilestoneDateFilterElement = workOrderSearchFiltersFormElement.querySelector('#searchFilter--workOrderMilestoneDateFilter'); const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector('#searchFilter--workOrderMilestoneDateString'); const milestoneCalendarContainerElement = document.querySelector('#container--milestoneCalendar'); + // eslint-disable-next-line complexity function renderMilestones(workOrderMilestones) { if (workOrderMilestones.length === 0) { milestoneCalendarContainerElement.innerHTML = `
@@ -41,26 +42,25 @@ Object.defineProperty(exports, "__esModule", { value: true }); panelBlockElement.classList.add('has-background-warning-light'); } let contractHTML = ''; - for (const lot of milestone.workOrderLots ?? []) { + for (const burialSite of milestone.workOrderBurialSites ?? []) { contractHTML += `
  • + data-tooltip="${cityssm.escapeHTML(burialSite.cemeteryName ?? '')}"> + aria-label="Burial Site"> - ${cityssm.escapeHTML(lot.burialSiteName ?? '')} + ${cityssm.escapeHTML(burialSite.burialSiteName ?? '')}
  • `; } for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { + for (const interment of contract.contractInterments ?? []) { contractHTML += `
  • + data-tooltip="Interment"> + aria-label="Interment"> - ${cityssm.escapeHTML(occupant.occupantName ?? '')} - ${cityssm.escapeHTML(occupant.occupantFamilyName ?? '')} + ${cityssm.escapeHTML(interment.deceasedName ?? '')}
  • `; } } diff --git a/public/javascripts/workOrder.milestoneCalendar.ts b/public/javascripts/workOrder.milestoneCalendar.ts index 48bee877..91aa1057 100644 --- a/public/javascripts/workOrder.milestoneCalendar.ts +++ b/public/javascripts/workOrder.milestoneCalendar.ts @@ -31,6 +31,7 @@ declare const exports: Record '#container--milestoneCalendar' ) as HTMLElement + // eslint-disable-next-line complexity function renderMilestones(workOrderMilestones: WorkOrderMilestone[]): void { if (workOrderMilestones.length === 0) { milestoneCalendarContainerElement.innerHTML = `
    @@ -80,29 +81,26 @@ declare const exports: Record let contractHTML = '' - for (const lot of milestone.workOrderLots ?? []) { + for (const burialSite of milestone.workOrderBurialSites ?? []) { contractHTML += `
  • + data-tooltip="${cityssm.escapeHTML(burialSite.cemeteryName ?? '')}"> + aria-label="Burial Site"> - ${cityssm.escapeHTML(lot.burialSiteName ?? '')} + ${cityssm.escapeHTML(burialSite.burialSiteName ?? '')}
  • ` } for (const contract of milestone.workOrderContracts ?? []) { - for (const occupant of contract.contractOccupants ?? []) { + for (const interment of contract.contractInterments ?? []) { contractHTML += `
  • + data-tooltip="Interment"> + aria-label="Interment"> - ${cityssm.escapeHTML(occupant.occupantName ?? '')} - ${cityssm.escapeHTML(occupant.occupantFamilyName ?? '')} + ${cityssm.escapeHTML(interment.deceasedName ?? '')}
  • ` } } diff --git a/test/functions.js b/test/functions.js index 5ce81c68..f733e0f8 100644 --- a/test/functions.js +++ b/test/functions.js @@ -114,7 +114,7 @@ describe('functions.cache', () => { }); }); describe('functions.sqlFilters', () => { - describe('LotName filter', () => { + describe('BurialSiteName filter', () => { it('returns startsWith filter', () => { const filter = sqlFilterFunctions.getBurialSiteNameWhereClause('TEST1 TEST2', 'startsWith', 'l'); assert.strictEqual(filter.sqlWhereClause, " and l.burialSiteName like ? || '%'"); @@ -167,11 +167,11 @@ describe('functions.sqlFilters', () => { assert.strictEqual(filter.sqlParameters.length, 0); }); }); - describe('OccupantName filter', () => { + describe('DeceasedName filter', () => { it('returns filter', () => { const filter = sqlFilterFunctions.getDeceasedNameWhereClause('TEST1 TEST2', 'o'); - assert.strictEqual(filter.sqlWhereClause, ' and (instr(lower(o.occupantName), ?) or instr(lower(o.occupantFamilyName), ?)) and (instr(lower(o.occupantName), ?) or instr(lower(o.occupantFamilyName), ?))'); - assert.ok(filter.sqlParameters.length === 4); + assert.strictEqual(filter.sqlWhereClause, ' and instr(lower(o.deceasedName), ?) and instr(lower(o.deceasedName), ?)'); + assert.ok(filter.sqlParameters.length === 2); assert.ok(filter.sqlParameters.includes('test1')); assert.ok(filter.sqlParameters.includes('test2')); }); diff --git a/test/functions.ts b/test/functions.ts index 4c665915..569faa57 100644 --- a/test/functions.ts +++ b/test/functions.ts @@ -180,7 +180,7 @@ describe('functions.cache', () => { }) describe('functions.sqlFilters', () => { - describe('LotName filter', () => { + describe('BurialSiteName filter', () => { it('returns startsWith filter', () => { const filter = sqlFilterFunctions.getBurialSiteNameWhereClause( 'TEST1 TEST2', @@ -282,7 +282,7 @@ describe('functions.sqlFilters', () => { }) }) - describe('OccupantName filter', () => { + describe('DeceasedName filter', () => { it('returns filter', () => { const filter = sqlFilterFunctions.getDeceasedNameWhereClause( 'TEST1 TEST2', @@ -291,10 +291,10 @@ describe('functions.sqlFilters', () => { assert.strictEqual( filter.sqlWhereClause, - ' and (instr(lower(o.occupantName), ?) or instr(lower(o.occupantFamilyName), ?)) and (instr(lower(o.occupantName), ?) or instr(lower(o.occupantFamilyName), ?))' + ' and instr(lower(o.deceasedName), ?) and instr(lower(o.deceasedName), ?)' ) - assert.ok(filter.sqlParameters.length === 4) + assert.ok(filter.sqlParameters.length === 2) assert.ok(filter.sqlParameters.includes('test1')) assert.ok(filter.sqlParameters.includes('test2')) diff --git a/types/recordTypes.d.ts b/types/recordTypes.d.ts index 4ea86c94..251c02ba 100644 --- a/types/recordTypes.d.ts +++ b/types/recordTypes.d.ts @@ -1,3 +1,4 @@ +import { DateString, TimeString } from "@cityssm/utils-datetime"; export interface Record { recordCreate_userName?: string; recordCreate_timeMillis?: number; @@ -193,10 +194,10 @@ export interface ContractInterment extends Record { deceasedProvince?: string; deceasedPostalCode?: string; birthDate?: number; - birthDateString?: string; + birthDateString?: DateString; birthPlace?: string; deathDate?: number; - deathDateString?: string; + deathDateString?: DateString; deathPlace?: string; deathAge?: number; deathAgePeriod?: string; @@ -256,9 +257,9 @@ export interface Contract extends Record { funeralHomeProvince?: string; funeralHomePostalCode?: string; funeralDate?: number; - funeralDateString?: string; + funeralDateString?: DateString; funeralTime?: number; - funeralTimeString?: string; + funeralTimeString?: TimeString; committalTypeId?: number; committalType?: string; contractFields?: ContractField[]; diff --git a/types/recordTypes.ts b/types/recordTypes.ts index f30e4238..6d204f3b 100644 --- a/types/recordTypes.ts +++ b/types/recordTypes.ts @@ -1,3 +1,5 @@ +import { DateString, TimeString } from "@cityssm/utils-datetime" + export interface Record { recordCreate_userName?: string recordCreate_timeMillis?: number @@ -247,11 +249,11 @@ export interface ContractInterment extends Record { deceasedPostalCode?: string birthDate?: number - birthDateString?: string + birthDateString?: DateString birthPlace?: string deathDate?: number - deathDateString?: string + deathDateString?: DateString deathPlace?: string deathAge?: number deathAgePeriod?: string @@ -328,9 +330,9 @@ export interface Contract extends Record { funeralHomePostalCode?: string funeralDate?: number - funeralDateString?: string + funeralDateString?: DateString funeralTime?: number - funeralTimeString?: string + funeralTimeString?: TimeString committalTypeId?: number committalType?: string diff --git a/views/print/screen/contract.ejs b/views/print/screen/contract.ejs index a0cbbd66..e8762378 100644 --- a/views/print/screen/contract.ejs +++ b/views/print/screen/contract.ejs @@ -65,34 +65,28 @@ <% } else { %> - - - - - - + + + + - <% for (const contractOccupant of contract.contractOccupants) { %> + <% for (const contractInterment of contract.contractInterments) { %> - - - - + + - <% } %> + <% } %>
    <%= configFunctions.getConfigProperty("aliases.occupant") %> Type<%= configFunctions.getConfigProperty("aliases.occupant") %>AddressPhone Number
    IntermentAddress
    <%= contractOccupant.lotOccupantType %><%= contractOccupant.occupantName %> <%= contractOccupant.occupantFamilyName %> - <%= contractOccupant.occupantAddress1 %>
    - <% if (contractOccupant.occupantAddress2 && contractOccupant.occupantAddress2 !== "") { %> - <%= contractOccupant.occupantAddress2 %>
    - <% } %> - <% if (contractOccupant.occupantCity) { %> - <%= contractOccupant.occupantCity %>, - <% } %> - <%= contractOccupant.occupantProvince %>
    - <%= contractOccupant.occupantPostalCode %> -
    - <%= contractOccupant.occupantPhoneNumber %> - <%= contractInterment.deceasedName %> + <%= contractInterment.deceasedAddress1 %>
    + <% if (contractInterment.deceasedAddress2 && contractInterment.deceasedAddress2 !== "") { %> + <%= contractInterment.deceasedAddress2 %>
    + <% } %> + <% if (contractInterment.deceasedCity) { %> + <%= contractInterment.deceasedCity %>, + <% } %> + <%= contractInterment.deceasedProvince %>
    + <%= contractInterment.deceasedPostalCode %> +
    <% } %> @@ -105,9 +99,9 @@ - - - + + +
    CommentorComment DateCommentCommentorComment DateComment