sunrise-cms/database/updateBurialSiteContract.ts

83 lines
2.4 KiB
TypeScript

import { type DateString, dateStringToInteger } from '@cityssm/utils-datetime'
import addOrUpdateBurialSiteContractField from './addOrUpdateBurialSiteContractField.js'
import deleteBurialSiteContractField from './deleteBurialSiteContractField.js'
import { acquireConnection } from './pool.js'
export interface UpdateBurialSiteContractForm {
burialSiteContractId: string | number
contractTypeId: string | number
burialSiteId: string | number
contractStartDateString: DateString
contractEndDateString: DateString | ''
contractTypeFieldIds?: string
[fieldValue_contractTypeFieldId: string]: unknown
}
export default async function updateBurialSiteContract(
updateForm: UpdateBurialSiteContractForm,
user: User
): Promise<boolean> {
const database = await acquireConnection()
const result = database
.prepare(
`update BurialSiteContracts
set contractTypeId = ?,
burialSiteId = ?,
contractStartDate = ?,
contractEndDate = ?,
recordUpdate_userName = ?,
recordUpdate_timeMillis = ?
where burialSiteContractId = ?
and recordDelete_timeMillis is null`
)
.run(
updateForm.contractTypeId,
updateForm.burialSiteId === '' ? undefined : updateForm.burialSiteId,
dateStringToInteger(updateForm.contractStartDateString),
updateForm.contractEndDateString === ''
? undefined
: dateStringToInteger(updateForm.contractEndDateString),
user.userName,
Date.now(),
updateForm.burialSiteContractId
)
if (result.changes > 0) {
const contractTypeFieldIds = (
updateForm.contractTypeFieldIds ?? ''
).split(',')
for (const contractTypeFieldId of contractTypeFieldIds) {
const fieldValue = updateForm[
`fieldValue_${contractTypeFieldId}`
] as string
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
await ((fieldValue ?? '') === ''
? deleteBurialSiteContractField(
updateForm.burialSiteContractId,
contractTypeFieldId,
user,
database
)
: addOrUpdateBurialSiteContractField(
{
burialSiteContractId: updateForm.burialSiteContractId,
contractTypeFieldId,
fieldValue
},
user,
database
))
}
}
database.release()
return result.changes > 0
}