import { acquireConnection } from './pool.js'; import { getLotOccupancy } from './getLotOccupancy.js'; import { addLotOccupancy } from './addLotOccupancy.js'; import { addLotOccupancyOccupant } from './addLotOccupancyOccupant.js'; import { dateToString } from '@cityssm/utils-datetime'; export async function copyLotOccupancy(oldLotOccupancyId, requestSession) { const database = await acquireConnection(); const oldLotOccupancy = (await getLotOccupancy(oldLotOccupancyId, database)); const newLotOccupancyId = await 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 ?? []) { await addLotOccupancyOccupant({ lotOccupancyId: newLotOccupancyId, lotOccupantTypeId: occupant.lotOccupantTypeId, occupantName: occupant.occupantName, occupantFamilyName: occupant.occupantFamilyName, occupantAddress1: occupant.occupantAddress1, occupantAddress2: occupant.occupantAddress2, occupantCity: occupant.occupantCity, occupantProvince: occupant.occupantProvince, occupantPostalCode: occupant.occupantPostalCode, occupantPhoneNumber: occupant.occupantPhoneNumber, occupantEmailAddress: occupant.occupantEmailAddress }, requestSession, database); } database.release(); return newLotOccupancyId; } export default copyLotOccupancy;