74 lines
4.2 KiB
JavaScript
74 lines
4.2 KiB
JavaScript
import { dateStringToInteger, timeStringToInteger } from '@cityssm/utils-datetime';
|
|
import sqlite from 'better-sqlite3';
|
|
import { sunriseDB } from '../helpers/database.helpers.js';
|
|
import addOrUpdateContractField from './addOrUpdateContractField.js';
|
|
// eslint-disable-next-line complexity
|
|
export default function addContract(addForm, user, connectedDatabase) {
|
|
const database = connectedDatabase ?? sqlite(sunriseDB);
|
|
const rightNowMillis = Date.now();
|
|
const contractStartDate = dateStringToInteger(addForm.contractStartDateString);
|
|
const result = database
|
|
.prepare(`insert into Contracts (
|
|
contractTypeId, burialSiteId,
|
|
contractStartDate, contractEndDate,
|
|
purchaserName, purchaserAddress1, purchaserAddress2,
|
|
purchaserCity, purchaserProvince, purchaserPostalCode,
|
|
purchaserPhoneNumber, purchaserEmail, purchaserRelationship,
|
|
funeralHomeId, funeralDirectorName,
|
|
funeralDate, funeralTime,
|
|
directionOfArrival, committalTypeId,
|
|
recordCreate_userName, recordCreate_timeMillis,
|
|
recordUpdate_userName, recordUpdate_timeMillis)
|
|
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
.run(addForm.contractTypeId, addForm.burialSiteId === '' ? undefined : addForm.burialSiteId, contractStartDate, addForm.contractEndDateString === ''
|
|
? undefined
|
|
: dateStringToInteger(addForm.contractEndDateString), addForm.purchaserName ?? '', addForm.purchaserAddress1 ?? '', addForm.purchaserAddress2 ?? '', addForm.purchaserCity ?? '', addForm.purchaserProvince ?? '', addForm.purchaserPostalCode ?? '', addForm.purchaserPhoneNumber ?? '', addForm.purchaserEmail ?? '', addForm.purchaserRelationship ?? '', addForm.funeralHomeId === '' ? undefined : addForm.funeralHomeId, addForm.funeralDirectorName ?? '', addForm.funeralDateString === ''
|
|
? undefined
|
|
: dateStringToInteger(addForm.funeralDateString), addForm.funeralTimeString === ''
|
|
? undefined
|
|
: timeStringToInteger(addForm.funeralTimeString), addForm.directionOfArrival ?? '', addForm.committalTypeId === '' ? undefined : addForm.committalTypeId, user.userName, rightNowMillis, user.userName, rightNowMillis);
|
|
const contractId = result.lastInsertRowid;
|
|
/*
|
|
* Add contract fields
|
|
*/
|
|
const contractTypeFieldIds = (addForm.contractTypeFieldIds ?? '').split(',');
|
|
for (const contractTypeFieldId of contractTypeFieldIds) {
|
|
const fieldValue = addForm[`fieldValue_${contractTypeFieldId}`];
|
|
if ((fieldValue ?? '') !== '') {
|
|
addOrUpdateContractField({
|
|
contractId,
|
|
contractTypeFieldId,
|
|
fieldValue: fieldValue ?? ''
|
|
}, user, database);
|
|
}
|
|
}
|
|
/*
|
|
* Add deceased information
|
|
*/
|
|
if ((addForm.deceasedName ?? '') !== '') {
|
|
database
|
|
.prepare(`insert into ContractInterments (
|
|
contractId, intermentNumber,
|
|
deceasedName, deceasedAddress1, deceasedAddress2,
|
|
deceasedCity, deceasedProvince, deceasedPostalCode,
|
|
birthDate, deathDate,
|
|
birthPlace, deathPlace,
|
|
deathAge, deathAgePeriod,
|
|
intermentContainerTypeId,
|
|
recordCreate_userName, recordCreate_timeMillis,
|
|
recordUpdate_userName, recordUpdate_timeMillis)
|
|
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
.run(contractId, 1, addForm.deceasedName ?? '', addForm.deceasedAddress1 ?? '', addForm.deceasedAddress2 ?? '', addForm.deceasedCity ?? '', addForm.deceasedProvince ?? '', addForm.deceasedPostalCode ?? '', addForm.birthDateString === ''
|
|
? undefined
|
|
: dateStringToInteger(addForm.birthDateString), addForm.deathDateString === ''
|
|
? undefined
|
|
: dateStringToInteger(addForm.deathDateString), addForm.birthPlace ?? '', addForm.deathPlace ?? '', addForm.deathAge ?? undefined, addForm.deathAgePeriod ?? '', addForm.intermentContainerTypeId === ''
|
|
? undefined
|
|
: addForm.intermentContainerTypeId, user.userName, rightNowMillis, user.userName, rightNowMillis);
|
|
}
|
|
if (connectedDatabase === undefined) {
|
|
database.close();
|
|
}
|
|
return contractId;
|
|
}
|