From 27097dc1cadeb4fb9dcb8b26ebd9983a584a3650 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Mon, 24 Mar 2025 10:52:06 -0400 Subject: [PATCH] fix funeral field update --- database/getContract.js | 7 +- database/getContract.ts | 7 +- database/updateContract.d.ts | 7 +- database/updateContract.js | 14 +++- database/updateContract.ts | 33 ++++++++-- public/javascripts/contract.editInterments.js | 2 +- public/javascripts/contract.editInterments.ts | 2 +- views/contract-view.ejs | 65 +++++++++++++++++++ 8 files changed, 121 insertions(+), 16 deletions(-) diff --git a/database/getContract.js b/database/getContract.js index d9e9fd78..f982afb2 100644 --- a/database/getContract.js +++ b/database/getContract.js @@ -1,4 +1,4 @@ -import { dateIntegerToString, timeIntegerToString } from '@cityssm/utils-datetime'; +import { dateIntegerToString, timeIntegerToPeriodString, timeIntegerToString } from '@cityssm/utils-datetime'; import getContractComments from './getContractComments.js'; import getContractFees from './getContractFees.js'; import getContractFields from './getContractFields.js'; @@ -10,6 +10,7 @@ export default async function getContract(contractId, connectedDatabase) { const database = connectedDatabase ?? (await acquireConnection()); database.function('userFn_dateIntegerToString', dateIntegerToString); database.function('userFn_timeIntegerToString', timeIntegerToString); + database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString); const contract = database .prepare(`select o.contractId, o.contractTypeId, t.contractType, t.isPreneed, @@ -24,7 +25,9 @@ export default async function getContract(contractId, connectedDatabase) { f.funeralHomeName, f.funeralHomeAddress1, f.funeralHomeAddress2, f.funeralHomeCity, f.funeralHomeProvince, f.funeralHomePostalCode, o.funeralDate, userFn_dateIntegerToString(o.funeralDate) as funeralDateString, - o.funeralTime, userFn_timeIntegerToString(o.funeralTime) as funeralTimeString, + o.funeralTime, + userFn_timeIntegerToString(o.funeralTime) as funeralTimeString, + userFn_timeIntegerToPeriodString(o.funeralTime) as funeralTimePeriodString, o.committalTypeId, c.committalType, o.recordUpdate_timeMillis from Contracts o diff --git a/database/getContract.ts b/database/getContract.ts index ae60c0c7..68726bd5 100644 --- a/database/getContract.ts +++ b/database/getContract.ts @@ -1,4 +1,4 @@ -import { dateIntegerToString, timeIntegerToString } from '@cityssm/utils-datetime' +import { dateIntegerToString, timeIntegerToPeriodString, timeIntegerToString } from '@cityssm/utils-datetime' import type { PoolConnection } from 'better-sqlite-pool' import type { Contract } from '../types/recordTypes.js' @@ -19,6 +19,7 @@ export default async function getContract( database.function('userFn_dateIntegerToString', dateIntegerToString) database.function('userFn_timeIntegerToString', timeIntegerToString) + database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString) const contract = database .prepare( @@ -35,7 +36,9 @@ export default async function getContract( f.funeralHomeName, f.funeralHomeAddress1, f.funeralHomeAddress2, f.funeralHomeCity, f.funeralHomeProvince, f.funeralHomePostalCode, o.funeralDate, userFn_dateIntegerToString(o.funeralDate) as funeralDateString, - o.funeralTime, userFn_timeIntegerToString(o.funeralTime) as funeralTimeString, + o.funeralTime, + userFn_timeIntegerToString(o.funeralTime) as funeralTimeString, + userFn_timeIntegerToPeriodString(o.funeralTime) as funeralTimePeriodString, o.committalTypeId, c.committalType, o.recordUpdate_timeMillis from Contracts o diff --git a/database/updateContract.d.ts b/database/updateContract.d.ts index 968bafcc..7727cd66 100644 --- a/database/updateContract.d.ts +++ b/database/updateContract.d.ts @@ -1,4 +1,4 @@ -import { type DateString } from '@cityssm/utils-datetime'; +import { type DateString, type TimeString } from '@cityssm/utils-datetime'; export interface UpdateContractForm { contractId: string | number; contractTypeId: string | number; @@ -6,7 +6,10 @@ export interface UpdateContractForm { contractStartDateString: DateString; contractEndDateString: DateString | ''; funeralHomeId?: string | number; - funeralDirectorName?: string; + funeralDirectorName: string; + funeralDateString: DateString | ''; + funeralTimeString: TimeString | ''; + committalTypeId?: string | number; purchaserName?: string; purchaserAddress1?: string; purchaserAddress2?: string; diff --git a/database/updateContract.js b/database/updateContract.js index 0d602dc3..1bd8c039 100644 --- a/database/updateContract.js +++ b/database/updateContract.js @@ -1,7 +1,8 @@ -import { dateStringToInteger } from '@cityssm/utils-datetime'; +import { dateStringToInteger, timeStringToInteger } from '@cityssm/utils-datetime'; import addOrUpdateContractField from './addOrUpdateContractField.js'; import deleteContractField from './deleteContractField.js'; import { acquireConnection } from './pool.js'; +// eslint-disable-next-line complexity export default async function updateContract(updateForm, user) { const database = await acquireConnection(); const result = database @@ -12,6 +13,9 @@ export default async function updateContract(updateForm, user) { contractEndDate = ?, funeralHomeId = ?, funeralDirectorName = ?, + funeralDate = ?, + funeralTime = ?, + committalTypeId = ?, purchaserName = ?, purchaserAddress1 = ?, purchaserAddress2 = ?, @@ -27,7 +31,13 @@ export default async function updateContract(updateForm, user) { and recordDelete_timeMillis is null`) .run(updateForm.contractTypeId, updateForm.burialSiteId === '' ? undefined : updateForm.burialSiteId, dateStringToInteger(updateForm.contractStartDateString), updateForm.contractEndDateString === '' ? undefined - : dateStringToInteger(updateForm.contractEndDateString), updateForm.funeralHomeId === '' ? undefined : updateForm.funeralHomeId, updateForm.funeralDirectorName ?? '', updateForm.purchaserName ?? '', updateForm.purchaserAddress1 ?? '', updateForm.purchaserAddress2 ?? '', updateForm.purchaserCity ?? '', updateForm.purchaserProvince ?? '', updateForm.purchaserPostalCode ?? '', updateForm.purchaserPhoneNumber ?? '', updateForm.purchaserEmail ?? '', updateForm.purchaserRelationship ?? '', user.userName, Date.now(), updateForm.contractId); + : dateStringToInteger(updateForm.contractEndDateString), updateForm.funeralHomeId === '' ? undefined : updateForm.funeralHomeId, updateForm.funeralDirectorName, updateForm.funeralDateString === '' + ? undefined + : dateStringToInteger(updateForm.funeralDateString), updateForm.funeralTimeString === '' + ? undefined + : timeStringToInteger(updateForm.funeralTimeString), updateForm.committalTypeId === '' + ? undefined + : updateForm.committalTypeId, updateForm.purchaserName ?? '', updateForm.purchaserAddress1 ?? '', updateForm.purchaserAddress2 ?? '', updateForm.purchaserCity ?? '', updateForm.purchaserProvince ?? '', updateForm.purchaserPostalCode ?? '', updateForm.purchaserPhoneNumber ?? '', updateForm.purchaserEmail ?? '', updateForm.purchaserRelationship ?? '', user.userName, Date.now(), updateForm.contractId); if (result.changes > 0) { const contractTypeFieldIds = (updateForm.contractTypeFieldIds ?? '').split(','); for (const contractTypeFieldId of contractTypeFieldIds) { diff --git a/database/updateContract.ts b/database/updateContract.ts index 61be62c9..6809ab70 100644 --- a/database/updateContract.ts +++ b/database/updateContract.ts @@ -1,4 +1,9 @@ -import { type DateString, dateStringToInteger } from '@cityssm/utils-datetime' +import { + type DateString, + type TimeString, + dateStringToInteger, + timeStringToInteger +} from '@cityssm/utils-datetime' import addOrUpdateContractField from './addOrUpdateContractField.js' import deleteContractField from './deleteContractField.js' @@ -13,7 +18,10 @@ export interface UpdateContractForm { contractEndDateString: DateString | '' funeralHomeId?: string | number - funeralDirectorName?: string + funeralDirectorName: string + funeralDateString: DateString | '' + funeralTimeString: TimeString | '' + committalTypeId?: string | number purchaserName?: string purchaserAddress1?: string @@ -29,6 +37,7 @@ export interface UpdateContractForm { [fieldValue_contractTypeFieldId: `fieldValue_${string}`]: unknown } +// eslint-disable-next-line complexity export default async function updateContract( updateForm: UpdateContractForm, user: User @@ -44,6 +53,9 @@ export default async function updateContract( contractEndDate = ?, funeralHomeId = ?, funeralDirectorName = ?, + funeralDate = ?, + funeralTime = ?, + committalTypeId = ?, purchaserName = ?, purchaserAddress1 = ?, purchaserAddress2 = ?, @@ -66,7 +78,16 @@ export default async function updateContract( ? undefined : dateStringToInteger(updateForm.contractEndDateString), updateForm.funeralHomeId === '' ? undefined : updateForm.funeralHomeId, - updateForm.funeralDirectorName ?? '', + updateForm.funeralDirectorName, + updateForm.funeralDateString === '' + ? undefined + : dateStringToInteger(updateForm.funeralDateString), + updateForm.funeralTimeString === '' + ? undefined + : timeStringToInteger(updateForm.funeralTimeString), + updateForm.committalTypeId === '' + ? undefined + : updateForm.committalTypeId, updateForm.purchaserName ?? '', updateForm.purchaserAddress1 ?? '', updateForm.purchaserAddress2 ?? '', @@ -82,9 +103,9 @@ export default async function updateContract( ) if (result.changes > 0) { - const contractTypeFieldIds = ( - updateForm.contractTypeFieldIds ?? '' - ).split(',') + const contractTypeFieldIds = (updateForm.contractTypeFieldIds ?? '').split( + ',' + ) for (const contractTypeFieldId of contractTypeFieldIds) { const fieldValue = updateForm[ diff --git a/public/javascripts/contract.editInterments.js b/public/javascripts/contract.editInterments.js index 9e24b66f..c6626623 100644 --- a/public/javascripts/contract.editInterments.js +++ b/public/javascripts/contract.editInterments.js @@ -210,7 +210,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); Age:
- ${cityssm.escapeHTML(interment.deathAge === undefined ? '(No Age)' : interment.deathAge.toString())} + ${cityssm.escapeHTML((interment.deathAge ?? '') === '' ? '(No Age)' : interment.deathAge?.toString() ?? '')}
${cityssm.escapeHTML(interment.deathAgePeriod ?? '')}
diff --git a/public/javascripts/contract.editInterments.ts b/public/javascripts/contract.editInterments.ts index 25f1df64..c92ea4b1 100644 --- a/public/javascripts/contract.editInterments.ts +++ b/public/javascripts/contract.editInterments.ts @@ -309,7 +309,7 @@ declare const exports: Record Age:
- ${cityssm.escapeHTML(interment.deathAge === undefined ? '(No Age)' : interment.deathAge.toString())} + ${cityssm.escapeHTML((interment.deathAge ?? '') === '' ? '(No Age)' : interment.deathAge?.toString() ?? '')}
${cityssm.escapeHTML(interment.deathAgePeriod ?? '')}
diff --git a/views/contract-view.ejs b/views/contract-view.ejs index 637e3e8a..73a97675 100644 --- a/views/contract-view.ejs +++ b/views/contract-view.ejs @@ -143,6 +143,71 @@ +
+

Funeral

+
+
+
+

+ Funeral Home
+ <%= contract.funeralHomeName %>
+ + <% if (contract.funeralHomeAddress1) { %> + <%= contract.funeralHomeAddress1 %>
+ <% } %> + <% if (contract.funeralHomeAddress2) { %> + <%= contract.funeralHomeAddress2 %>
+ <% } %> + <% if (contract.funeralHomeCity) { %> + <%= contract.funeralHomeCity %>, + <% } %> + <%= contract.funeralHomeProvince %>
+ <%= contract.funeralHomePostalCode %> +
+

+
+
+ <% if ((contract.funeralHomePhoneNumber ?? '') !== '') { %> +

+ Phone
+ <%= contract.funeralHomePhoneNumber %> +

+ <% } %> + <% if ((contract.funeralHomeEmail ?? '') !== '') { %> +

+ Email
+ <%= contract.funeralHomeEmail %> +

+ <% } %> +

+ Director
+ <%= contract.funeralDirectorName %> +

+
+
+
+
+

+ Service Date
+ <%= contract.funeralDateString %> +

+
+
+

+ Service Time
+ <%= contract.funeralTimePeriodString %> +

+
+
+

+ Committal Type
+ <%= contract.committalType %> +

+
+
+
+
+