50 lines
2.4 KiB
JavaScript
50 lines
2.4 KiB
JavaScript
import sqlite from 'better-sqlite3';
|
|
import { lotOccupancyDB as databasePath } from '../../data/databasePaths.js';
|
|
import { dateIntegerToString } from '@cityssm/expressjs-server-js/dateTimeFns.js';
|
|
import { getLotOccupancyOccupants } from './getLotOccupancyOccupants.js';
|
|
import { getLotOccupancyComments } from './getLotOccupancyComments.js';
|
|
import { getLotOccupancyFields } from './getLotOccupancyFields.js';
|
|
import { getLotOccupancyFees } from './getLotOccupancyFees.js';
|
|
import { getLotOccupancyTransactions } from './getLotOccupancyTransactions.js';
|
|
import { getWorkOrders } from './getWorkOrders.js';
|
|
export function getLotOccupancy(lotOccupancyId, connectedDatabase) {
|
|
const database = connectedDatabase ??
|
|
sqlite(databasePath, {
|
|
readonly: true
|
|
});
|
|
database.function('userFn_dateIntegerToString', dateIntegerToString);
|
|
const lotOccupancy = database
|
|
.prepare(`select o.lotOccupancyId,
|
|
o.occupancyTypeId, t.occupancyType,
|
|
o.lotId, l.lotName, l.lotTypeId,
|
|
l.mapId, m.mapName,
|
|
o.occupancyStartDate, userFn_dateIntegerToString(o.occupancyStartDate) as occupancyStartDateString,
|
|
o.occupancyEndDate, userFn_dateIntegerToString(o.occupancyEndDate) as occupancyEndDateString,
|
|
o.recordUpdate_timeMillis
|
|
from LotOccupancies o
|
|
left join OccupancyTypes t on o.occupancyTypeId = t.occupancyTypeId
|
|
left join Lots l on o.lotId = l.lotId
|
|
left join Maps m on l.mapId = m.mapId
|
|
where o.recordDelete_timeMillis is null
|
|
and o.lotOccupancyId = ?`)
|
|
.get(lotOccupancyId);
|
|
if (lotOccupancy) {
|
|
lotOccupancy.lotOccupancyFields = getLotOccupancyFields(lotOccupancyId, database);
|
|
lotOccupancy.lotOccupancyOccupants = getLotOccupancyOccupants(lotOccupancyId, database);
|
|
lotOccupancy.lotOccupancyComments = getLotOccupancyComments(lotOccupancyId, database);
|
|
lotOccupancy.lotOccupancyFees = getLotOccupancyFees(lotOccupancyId, database);
|
|
lotOccupancy.lotOccupancyTransactions = getLotOccupancyTransactions(lotOccupancyId, database);
|
|
lotOccupancy.workOrders = getWorkOrders({
|
|
lotOccupancyId
|
|
}, {
|
|
limit: -1,
|
|
offset: 0
|
|
}, database).workOrders;
|
|
}
|
|
if (!connectedDatabase) {
|
|
database.close();
|
|
}
|
|
return lotOccupancy;
|
|
}
|
|
export default getLotOccupancy;
|