diff --git a/handlers/lots-post/doSearchLots.js b/handlers/lots-post/doSearchLots.js index 8c542b35..1577d0a0 100644 --- a/handlers/lots-post/doSearchLots.js +++ b/handlers/lots-post/doSearchLots.js @@ -2,7 +2,8 @@ import { getLots } from '../../helpers/lotOccupancyDB/getLots.js'; export async function handler(request, response) { const result = await getLots(request.body, { limit: request.body.limit, - offset: request.body.offset + offset: request.body.offset, + includeLotOccupancyCount: true }); response.json({ count: result.count, diff --git a/handlers/lots-post/doSearchLots.ts b/handlers/lots-post/doSearchLots.ts index 0bd91afc..93b549b1 100644 --- a/handlers/lots-post/doSearchLots.ts +++ b/handlers/lots-post/doSearchLots.ts @@ -5,7 +5,8 @@ import { getLots } from '../../helpers/lotOccupancyDB/getLots.js' export async function handler(request: Request, response: Response): Promise { const result = await getLots(request.body, { limit: request.body.limit, - offset: request.body.offset + offset: request.body.offset, + includeLotOccupancyCount: true }) response.json({ diff --git a/handlers/workOrders-post/doAddWorkOrderLot.js b/handlers/workOrders-post/doAddWorkOrderLot.js index f2ce1e2c..7acf48c5 100644 --- a/handlers/workOrders-post/doAddWorkOrderLot.js +++ b/handlers/workOrders-post/doAddWorkOrderLot.js @@ -9,7 +9,8 @@ export async function handler(request, response) { workOrderId: request.body.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }); response.json({ success, diff --git a/handlers/workOrders-post/doAddWorkOrderLot.ts b/handlers/workOrders-post/doAddWorkOrderLot.ts index 8e2e5f65..1a6314c2 100644 --- a/handlers/workOrders-post/doAddWorkOrderLot.ts +++ b/handlers/workOrders-post/doAddWorkOrderLot.ts @@ -21,7 +21,8 @@ export async function handler( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false } ) diff --git a/handlers/workOrders-post/doDeleteWorkOrderLot.js b/handlers/workOrders-post/doDeleteWorkOrderLot.js index 4223e32a..3ad58c17 100644 --- a/handlers/workOrders-post/doDeleteWorkOrderLot.js +++ b/handlers/workOrders-post/doDeleteWorkOrderLot.js @@ -6,7 +6,8 @@ export async function handler(request, response) { workOrderId: request.body.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }); response.json({ success, diff --git a/handlers/workOrders-post/doDeleteWorkOrderLot.ts b/handlers/workOrders-post/doDeleteWorkOrderLot.ts index 82197a0f..2cfe328a 100644 --- a/handlers/workOrders-post/doDeleteWorkOrderLot.ts +++ b/handlers/workOrders-post/doDeleteWorkOrderLot.ts @@ -19,7 +19,8 @@ export async function handler( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false } ) diff --git a/handlers/workOrders-post/doUpdateLotStatus.js b/handlers/workOrders-post/doUpdateLotStatus.js index 7e5a90e5..5245b30d 100644 --- a/handlers/workOrders-post/doUpdateLotStatus.js +++ b/handlers/workOrders-post/doUpdateLotStatus.js @@ -6,7 +6,8 @@ export async function handler(request, response) { workOrderId: request.body.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: true }); response.json({ success, diff --git a/handlers/workOrders-post/doUpdateLotStatus.ts b/handlers/workOrders-post/doUpdateLotStatus.ts index b3d5a090..fe1dd9d9 100644 --- a/handlers/workOrders-post/doUpdateLotStatus.ts +++ b/handlers/workOrders-post/doUpdateLotStatus.ts @@ -19,7 +19,8 @@ export async function handler( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: true } ) diff --git a/helpers/lotOccupancyDB/getLots.d.ts b/helpers/lotOccupancyDB/getLots.d.ts index 92f083ec..37072e12 100644 --- a/helpers/lotOccupancyDB/getLots.d.ts +++ b/helpers/lotOccupancyDB/getLots.d.ts @@ -12,6 +12,7 @@ interface GetLotsFilters { interface GetLotsOptions { limit: -1 | number; offset: number; + includeLotOccupancyCount?: boolean; } export declare function getLots(filters: GetLotsFilters, options: GetLotsOptions, connectedDatabase?: PoolConnection): Promise<{ count: number; diff --git a/helpers/lotOccupancyDB/getLots.js b/helpers/lotOccupancyDB/getLots.js index daccb8f1..e80ea64b 100644 --- a/helpers/lotOccupancyDB/getLots.js +++ b/helpers/lotOccupancyDB/getLots.js @@ -60,31 +60,37 @@ export async function getLots(filters, options, connectedDatabase) { } let lots = []; if (options.limit === -1 || count > 0) { + const includeLotOccupancyCount = options.includeLotOccupancyCount ?? true; database.function('userFn_lotNameSortName', configFunctions.getProperty('settings.lot.lotNameSortNameFunction')); - sqlParameters.unshift(currentDate, currentDate); + if (includeLotOccupancyCount) { + sqlParameters.unshift(currentDate, currentDate); + } lots = database - .prepare('select l.lotId, l.lotName,' + - ' t.lotType,' + - ' l.mapId, m.mapName, l.mapKey,' + - ' l.lotStatusId, s.lotStatus,' + - ' ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount' + - ' from Lots l' + - ' left join LotTypes t on l.lotTypeId = t.lotTypeId' + - ' left join LotStatuses s on l.lotStatusId = s.lotStatusId' + - ' left join Maps m on l.mapId = m.mapId' + - (' left join (' + - 'select lotId, count(lotOccupancyId) as lotOccupancyCount' + - ' from LotOccupancies' + - ' where recordDelete_timeMillis is null' + - ' and occupancyStartDate <= ?' + - ' and (occupancyEndDate is null or occupancyEndDate >= ?)' + - ' group by lotId' + - ') o on l.lotId = o.lotId') + - sqlWhereClause + - ' order by userFn_lotNameSortName(l.lotName), l.lotId' + - (options.limit === -1 - ? '' - : ` limit ${options.limit.toString()} offset ${options.offset.toString()}`)) + .prepare(`select l.lotId, l.lotName, + t.lotType, + l.mapId, m.mapName, l.mapKey, + l.lotStatusId, s.lotStatus + ${includeLotOccupancyCount + ? ', ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount' + : ''} + from Lots l + left join LotTypes t on l.lotTypeId = t.lotTypeId + left join LotStatuses s on l.lotStatusId = s.lotStatusId + left join Maps m on l.mapId = m.mapId + ${includeLotOccupancyCount + ? `left join ( + select lotId, count(lotOccupancyId) as lotOccupancyCount + from LotOccupancies + where recordDelete_timeMillis is null + and occupancyStartDate <= ? + and (occupancyEndDate is null or occupancyEndDate >= ?) + group by lotId) o on l.lotId = o.lotId` + : ''} + ${sqlWhereClause} + order by userFn_lotNameSortName(l.lotName), l.lotId + ${options.limit === -1 + ? '' + : ` limit ${options.limit.toString()} offset ${options.offset.toString()}`}`) .all(sqlParameters); if (options.limit === -1) { count = lots.length; diff --git a/helpers/lotOccupancyDB/getLots.ts b/helpers/lotOccupancyDB/getLots.ts index 4349e654..b8d7f116 100644 --- a/helpers/lotOccupancyDB/getLots.ts +++ b/helpers/lotOccupancyDB/getLots.ts @@ -23,6 +23,7 @@ interface GetLotsFilters { interface GetLotsOptions { limit: -1 | number offset: number + includeLotOccupancyCount?: boolean } function buildWhereClause(filters: GetLotsFilters): { @@ -109,37 +110,50 @@ export async function getLots( let lots: recordTypes.Lot[] = [] if (options.limit === -1 || count > 0) { + const includeLotOccupancyCount = options.includeLotOccupancyCount ?? true + database.function( 'userFn_lotNameSortName', configFunctions.getProperty('settings.lot.lotNameSortNameFunction') ) - sqlParameters.unshift(currentDate, currentDate) + if (includeLotOccupancyCount) { + sqlParameters.unshift(currentDate, currentDate) + } lots = database .prepare( - 'select l.lotId, l.lotName,' + - ' t.lotType,' + - ' l.mapId, m.mapName, l.mapKey,' + - ' l.lotStatusId, s.lotStatus,' + - ' ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount' + - ' from Lots l' + - ' left join LotTypes t on l.lotTypeId = t.lotTypeId' + - ' left join LotStatuses s on l.lotStatusId = s.lotStatusId' + - ' left join Maps m on l.mapId = m.mapId' + - (' left join (' + - 'select lotId, count(lotOccupancyId) as lotOccupancyCount' + - ' from LotOccupancies' + - ' where recordDelete_timeMillis is null' + - ' and occupancyStartDate <= ?' + - ' and (occupancyEndDate is null or occupancyEndDate >= ?)' + - ' group by lotId' + - ') o on l.lotId = o.lotId') + - sqlWhereClause + - ' order by userFn_lotNameSortName(l.lotName), l.lotId' + - (options.limit === -1 - ? '' - : ` limit ${options.limit.toString()} offset ${options.offset.toString()}`) + `select l.lotId, l.lotName, + t.lotType, + l.mapId, m.mapName, l.mapKey, + l.lotStatusId, s.lotStatus + ${ + includeLotOccupancyCount + ? ', ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount' + : '' + } + from Lots l + left join LotTypes t on l.lotTypeId = t.lotTypeId + left join LotStatuses s on l.lotStatusId = s.lotStatusId + left join Maps m on l.mapId = m.mapId + ${ + includeLotOccupancyCount + ? `left join ( + select lotId, count(lotOccupancyId) as lotOccupancyCount + from LotOccupancies + where recordDelete_timeMillis is null + and occupancyStartDate <= ? + and (occupancyEndDate is null or occupancyEndDate >= ?) + group by lotId) o on l.lotId = o.lotId` + : '' + } + ${sqlWhereClause} + order by userFn_lotNameSortName(l.lotName), l.lotId + ${ + options.limit === -1 + ? '' + : ` limit ${options.limit.toString()} offset ${options.offset.toString()}` + }` ) .all(sqlParameters) diff --git a/helpers/lotOccupancyDB/getWorkOrder.js b/helpers/lotOccupancyDB/getWorkOrder.js index d7b0f81c..0aacf35c 100644 --- a/helpers/lotOccupancyDB/getWorkOrder.js +++ b/helpers/lotOccupancyDB/getWorkOrder.js @@ -25,7 +25,8 @@ async function _getWorkOrder(sql, workOrderIdOrWorkOrderNumber, options, connect workOrderId: workOrder.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database); workOrder.workOrderLots = workOrderLotsResults.lots; const workOrderLotOccupanciesResults = await getLotOccupancies({ diff --git a/helpers/lotOccupancyDB/getWorkOrder.ts b/helpers/lotOccupancyDB/getWorkOrder.ts index 58c8d356..dcea647f 100644 --- a/helpers/lotOccupancyDB/getWorkOrder.ts +++ b/helpers/lotOccupancyDB/getWorkOrder.ts @@ -51,7 +51,8 @@ async function _getWorkOrder( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database ) diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.js b/helpers/lotOccupancyDB/getWorkOrderMilestones.js index 1c8479b5..513ef5c6 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.js +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.js @@ -120,7 +120,8 @@ export async function getWorkOrderMilestones(filters, options, connectedDatabase workOrderId: workOrderMilestone.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database); workOrderMilestone.workOrderLots = workOrderLotsResults.lots; const lotOccupancies = await getLotOccupancies({ diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts index f4a9239d..d8fee01b 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts @@ -200,7 +200,8 @@ export async function getWorkOrderMilestones( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database ) diff --git a/helpers/lotOccupancyDB/getWorkOrders.js b/helpers/lotOccupancyDB/getWorkOrders.js index b49833d8..1076ba7a 100644 --- a/helpers/lotOccupancyDB/getWorkOrders.js +++ b/helpers/lotOccupancyDB/getWorkOrders.js @@ -111,7 +111,8 @@ export async function getWorkOrders(filters, options, connectedDatabase) { workOrderId: workOrder.workOrderId }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database); workOrder.workOrderLots = workOrderLotsResults.lots; } diff --git a/helpers/lotOccupancyDB/getWorkOrders.ts b/helpers/lotOccupancyDB/getWorkOrders.ts index 52fa40dd..ed12973f 100644 --- a/helpers/lotOccupancyDB/getWorkOrders.ts +++ b/helpers/lotOccupancyDB/getWorkOrders.ts @@ -178,7 +178,8 @@ export async function getWorkOrders( }, { limit: -1, - offset: 0 + offset: 0, + includeLotOccupancyCount: false }, database )