sunrise-cms/helpers/initializer.database.cemete...

285 lines
6.3 KiB
TypeScript

import { lotOccupancyDB as databasePath } from '../data/databasePaths.js'
import { initializeDatabase } from './initializer.database.js'
import { addOccupancyTypeField } from './lotOccupancyDB/addOccupancyTypeField.js'
import { addLotOccupantType } from './lotOccupancyDB/addLotOccupantType.js'
import type { PartialSession } from '../types/recordTypes.js'
import Debug from 'debug'
import { addRecord } from './lotOccupancyDB/addRecord.js'
const debug = Debug('lot-occupancy-system:initialize')
const session: PartialSession = {
user: {
userName: 'init.cemetery',
userProperties: {
canUpdate: true,
isAdmin: true,
apiKey: ''
}
}
}
function initializeCemeteryDatabase(): void {
/*
* Ensure database does not already exist
*/
debug('Checking for ' + databasePath + '...')
const databaseInitialized = initializeDatabase()
if (!databaseInitialized) {
debug(
'Database already created.\n' +
'To initialize this database with cemetery types, delete the database file first, then rerun this script.'
)
return
}
debug('New database file created. Proceeding with initialization.')
/*
* Lot Types
*/
addRecord('LotTypes', 'Casket Grave', 1, session)
addRecord('LotTypes', 'Columbarium', 2, session)
addRecord('LotTypes', 'Mausoleum', 2, session)
addRecord('LotTypes', 'Niche Wall', 2, session)
addRecord('LotTypes', 'Urn Garden', 2, session)
addRecord('LotTypes', 'Crematorium', 2, session)
/*
* Lot Statuses
*/
addRecord('LotStatuses', 'Available', 1, session)
addRecord('LotStatuses', 'Reserved', 2, session)
addRecord('LotStatuses', 'Taken', 3, session)
/*
* Lot Occupant Types
*/
addLotOccupantType(
{
lotOccupantType: 'Deceased',
orderNumber: 1
},
session
)
addLotOccupantType(
{
lotOccupantType: 'Funeral Director',
orderNumber: 2
},
session
)
addLotOccupantType(
{
lotOccupantType: 'Preneed Owner',
orderNumber: 3
},
session
)
addLotOccupantType(
{
lotOccupantType: 'Purchaser',
orderNumber: 4
},
session
)
/*
* Occupancy Types
*/
addRecord('OccupancyTypes', 'Preneed', 1, session)
const intermentOccupancyTypeId = addRecord(
'OccupancyTypes',
'Interment',
2,
session
)
const cremationOccupancyTypeId = addRecord(
'OccupancyTypes',
'Cremation',
3,
session
)
// Death Date
const deathDateField = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Death Date',
occupancyTypeFieldValues: '',
pattern: '\\d{4}([\\/-]\\d{2}){2}',
isRequired: '',
minimumLength: 10,
maximumLength: 10,
orderNumber: 1
}
addOccupancyTypeField(deathDateField, session)
addOccupancyTypeField(
Object.assign(deathDateField, {
occupancyTypeId: cremationOccupancyTypeId
}),
session
)
// Death Age
const deathAgeField = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Death Age',
occupancyTypeFieldValues: '',
pattern: '\\d+',
isRequired: '',
minimumLength: 1,
maximumLength: 3,
orderNumber: 2
}
addOccupancyTypeField(deathAgeField, session)
addOccupancyTypeField(
Object.assign(deathAgeField, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
// Death Age Period
const deathAgePeriod = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Death Age Period',
occupancyTypeFieldValues: 'Years\nMonths\nDays\nStillborn',
pattern: '',
isRequired: '',
minimumLength: 1,
maximumLength: 10,
orderNumber: 3
}
addOccupancyTypeField(deathAgePeriod, session)
addOccupancyTypeField(
Object.assign(deathAgePeriod, {
occupancyTypeId: cremationOccupancyTypeId
}),
session
)
// Death Place
const deathPlace = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Death Place',
occupancyTypeFieldValues: '',
pattern: '',
isRequired: '',
minimumLength: 1,
maximumLength: 100,
orderNumber: 4
}
addOccupancyTypeField(deathPlace, session)
addOccupancyTypeField(
Object.assign(deathPlace, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
// Funeral Home
const funeralHome = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Funeral Home',
occupancyTypeFieldValues: '',
pattern: '',
isRequired: '',
minimumLength: 1,
maximumLength: 100,
orderNumber: 10
}
addOccupancyTypeField(funeralHome, session)
addOccupancyTypeField(
Object.assign(funeralHome, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
// Funeral Date
const funeralDate = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Funeral Date',
occupancyTypeFieldValues: '',
pattern: '\\d{4}([\\/-]\\d{2}){2}',
isRequired: '',
minimumLength: 10,
maximumLength: 10,
orderNumber: 11
}
addOccupancyTypeField(funeralDate, session)
addOccupancyTypeField(
Object.assign(funeralDate, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
// Container Type
const containerType = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Container Type',
occupancyTypeFieldValues: '',
pattern: '',
isRequired: '',
minimumLength: 1,
maximumLength: 100,
orderNumber: 20
}
addOccupancyTypeField(containerType, session)
addOccupancyTypeField(
Object.assign(containerType, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
// Committal Type
const committalType = {
occupancyTypeId: intermentOccupancyTypeId,
occupancyTypeField: 'Committal Type',
occupancyTypeFieldValues: '',
pattern: '',
isRequired: '',
minimumLength: 1,
maximumLength: 100,
orderNumber: 21
}
addOccupancyTypeField(committalType, session)
addOccupancyTypeField(
Object.assign(committalType, { occupancyTypeId: cremationOccupancyTypeId }),
session
)
/*
* Fee Categories
*/
addRecord('FeeCategories', 'Interment Rights', 1, session)
addRecord('FeeCategories', 'Cremation Services', 2, session)
addRecord('FeeCategories', 'Burial Charges', 3, session)
addRecord('FeeCategories', 'Disinterment of Human Remains', 4, session)
addRecord('FeeCategories', 'Additional Services', 4, session)
}
initializeCemeteryDatabase()