import sqlite from 'better-sqlite3'; import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js'; import { getLotOccupancy } from './getLotOccupancy.js'; import { addLotOccupancy } from './addLotOccupancy.js'; import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js'; import { dateToString } from '@cityssm/expressjs-server-js/dateTimeFns.js'; export function copyLotOccupancy(oldLotOccupancyId, requestSession) { const database = sqlite(databasePath); const oldLotOccupancy = getLotOccupancy(oldLotOccupancyId, database); const newLotOccupancyId = addLotOccupancy({ lotId: oldLotOccupancy.lotId ?? '', occupancyTypeId: oldLotOccupancy.occupancyTypeId, occupancyStartDateString: dateToString(new Date()), occupancyEndDateString: '' }, requestSession, database); const rightNowMillis = Date.now(); for (const occupancyField of oldLotOccupancy.lotOccupancyFields ?? []) { database .prepare(`insert into LotOccupancyFields ( lotOccupancyId, occupancyTypeFieldId, lotOccupancyFieldValue, recordCreate_userName, recordCreate_timeMillis, recordUpdate_userName, recordUpdate_timeMillis) values (?, ?, ?, ?, ?, ?, ?)`) .run(newLotOccupancyId, occupancyField.occupancyTypeFieldId, occupancyField.lotOccupancyFieldValue, requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis); } for (const occupant of oldLotOccupancy.lotOccupancyOccupants ?? []) { addLotOccupancyOccupant({ lotOccupancyId: newLotOccupancyId, lotOccupantTypeId: occupant.lotOccupantTypeId, occupantName: occupant.occupantName, occupantAddress1: occupant.occupantAddress1, occupantAddress2: occupant.occupantAddress2, occupantCity: occupant.occupantCity, occupantProvince: occupant.occupantProvince, occupantPostalCode: occupant.occupantPostalCode, occupantPhoneNumber: occupant.occupantPhoneNumber, occupantEmailAddress: occupant.occupantEmailAddress }, requestSession, database); } database.close(); return newLotOccupancyId; } export default copyLotOccupancy;