diff --git a/helpers/lotOccupancyDB/getLotOccupancy.js b/helpers/lotOccupancyDB/getLotOccupancy.js index 12a24609..5da71dca 100644 --- a/helpers/lotOccupancyDB/getLotOccupancy.js +++ b/helpers/lotOccupancyDB/getLotOccupancy.js @@ -6,6 +6,7 @@ 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 const getLotOccupancy = (lotOccupancyId, connectedDatabase) => { const database = connectedDatabase || sqlite(databasePath, { @@ -33,6 +34,12 @@ export const getLotOccupancy = (lotOccupancyId, connectedDatabase) => { 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(); diff --git a/helpers/lotOccupancyDB/getLotOccupancy.ts b/helpers/lotOccupancyDB/getLotOccupancy.ts index 50b45c4f..41346ba5 100644 --- a/helpers/lotOccupancyDB/getLotOccupancy.ts +++ b/helpers/lotOccupancyDB/getLotOccupancy.ts @@ -14,6 +14,8 @@ import { getLotOccupancyFees } from "./getLotOccupancyFees.js"; import { getLotOccupancyTransactions } from "./getLotOccupancyTransactions.js"; +import { getWorkOrders } from "./getWorkOrders.js"; + import type * as recordTypes from "../../types/recordTypes"; export const getLotOccupancy = ( @@ -55,6 +57,17 @@ export const getLotOccupancy = ( lotOccupancyId, database ); + + lotOccupancy.workOrders = getWorkOrders( + { + lotOccupancyId + }, + { + limit: -1, + offset: 0 + }, + database + ).workOrders; } if (!connectedDatabase) { diff --git a/helpers/lotOccupancyDB/getWorkOrders.d.ts b/helpers/lotOccupancyDB/getWorkOrders.d.ts index af8a7849..c2076e91 100644 --- a/helpers/lotOccupancyDB/getWorkOrders.d.ts +++ b/helpers/lotOccupancyDB/getWorkOrders.d.ts @@ -1,3 +1,4 @@ +import sqlite from "better-sqlite3"; import type * as recordTypes from "../../types/recordTypes"; interface GetWorkOrdersFilters { workOrderTypeId?: number | string; @@ -5,6 +6,7 @@ interface GetWorkOrdersFilters { workOrderOpenDateString?: string; occupantName?: string; lotName?: string; + lotOccupancyId?: number | string; } interface GetWorkOrdersOptions { limit: number; @@ -13,7 +15,7 @@ interface GetWorkOrdersOptions { includeComments?: boolean; includeMilestones?: boolean; } -export declare const getWorkOrders: (filters: GetWorkOrdersFilters, options?: GetWorkOrdersOptions) => { +export declare const getWorkOrders: (filters: GetWorkOrdersFilters, options?: GetWorkOrdersOptions, connectedDatabase?: sqlite.Database) => { count: number; workOrders: recordTypes.WorkOrder[]; }; diff --git a/helpers/lotOccupancyDB/getWorkOrders.js b/helpers/lotOccupancyDB/getWorkOrders.js index 23a41e50..d9a04bba 100644 --- a/helpers/lotOccupancyDB/getWorkOrders.js +++ b/helpers/lotOccupancyDB/getWorkOrders.js @@ -42,15 +42,21 @@ const buildWhereClause = (filters) => { sqlParameters.push(lotNamePiece); } } + if (filters.lotOccupancyId) { + sqlWhereClause += + " and w.workOrderId in (select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId = ?)"; + sqlParameters.push(filters.lotOccupancyId); + } return { sqlWhereClause, sqlParameters }; }; -export const getWorkOrders = (filters, options) => { - const database = sqlite(databasePath, { - readonly: true - }); +export const getWorkOrders = (filters, options, connectedDatabase) => { + const database = connectedDatabase || + sqlite(databasePath, { + readonly: true + }); database.function("userFn_dateIntegerToString", dateIntegerToString); const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); const count = database @@ -111,7 +117,9 @@ export const getWorkOrders = (filters, options) => { } } } - database.close(); + if (!connectedDatabase) { + database.close(); + } return { count, workOrders diff --git a/helpers/lotOccupancyDB/getWorkOrders.ts b/helpers/lotOccupancyDB/getWorkOrders.ts index abfd607d..d37fc0a3 100644 --- a/helpers/lotOccupancyDB/getWorkOrders.ts +++ b/helpers/lotOccupancyDB/getWorkOrders.ts @@ -20,6 +20,7 @@ interface GetWorkOrdersFilters { workOrderOpenDateString?: string; occupantName?: string; lotName?: string; + lotOccupancyId?: number | string; } interface GetWorkOrdersOptions { @@ -74,6 +75,12 @@ const buildWhereClause = ( } } + if (filters.lotOccupancyId) { + sqlWhereClause += + " and w.workOrderId in (select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId = ?)"; + sqlParameters.push(filters.lotOccupancyId); + } + return { sqlWhereClause, sqlParameters @@ -82,14 +89,17 @@ const buildWhereClause = ( export const getWorkOrders = ( filters: GetWorkOrdersFilters, - options?: GetWorkOrdersOptions + options?: GetWorkOrdersOptions, + connectedDatabase?: sqlite.Database ): { count: number; workOrders: recordTypes.WorkOrder[]; } => { - const database = sqlite(databasePath, { - readonly: true - }); + const database = + connectedDatabase || + sqlite(databasePath, { + readonly: true + }); database.function("userFn_dateIntegerToString", dateIntegerToString); @@ -134,7 +144,10 @@ export const getWorkOrders = ( ) { for (const workOrder of workOrders) { if (options.includeComments) { - workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId as number, database); + workOrder.workOrderComments = getWorkOrderComments( + workOrder.workOrderId as number, + database + ); } if (options.includeLotsAndLotOccupancies) { @@ -176,7 +189,9 @@ export const getWorkOrders = ( } } - database.close(); + if (!connectedDatabase) { + database.close(); + } return { count, diff --git a/types/recordTypes.d.ts b/types/recordTypes.d.ts index 9b10758c..ff3552f3 100644 --- a/types/recordTypes.d.ts +++ b/types/recordTypes.d.ts @@ -195,6 +195,7 @@ export interface LotOccupancy extends Record { lotOccupancyOccupants?: LotOccupancyOccupant[]; lotOccupancyFees?: LotOccupancyFee[]; lotOccupancyTransactions?: LotOccupancyTransaction[]; + workOrders?: WorkOrder[]; } export interface WorkOrderType extends Record { workOrderTypeId?: number; diff --git a/types/recordTypes.ts b/types/recordTypes.ts index a8156bdf..a95c06e5 100644 --- a/types/recordTypes.ts +++ b/types/recordTypes.ts @@ -258,6 +258,7 @@ export interface LotOccupancy extends Record { lotOccupancyOccupants?: LotOccupancyOccupant[]; lotOccupancyFees?: LotOccupancyFee[]; lotOccupancyTransactions?: LotOccupancyTransaction[]; + workOrders?: WorkOrder[]; } /* diff --git a/views/lotOccupancy-edit.ejs b/views/lotOccupancy-edit.ejs index 98625c56..564f4685 100644 --- a/views/lotOccupancy-edit.ejs +++ b/views/lotOccupancy-edit.ejs @@ -381,11 +381,6 @@