diff --git a/helpers/lotOccupancyDB/getWorkOrder.ts b/helpers/lotOccupancyDB/getWorkOrder.ts index 93ff7df4..01dc780f 100644 --- a/helpers/lotOccupancyDB/getWorkOrder.ts +++ b/helpers/lotOccupancyDB/getWorkOrder.ts @@ -77,7 +77,7 @@ const _getWorkOrder = ( if (options.includeComments) { workOrder.workOrderComments = getWorkOrderComments( - workOrder.workOrderId, + workOrder.workOrderId as number, database ); } diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.js b/helpers/lotOccupancyDB/getWorkOrderMilestones.js index 10df39a5..bb71ac4e 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.js +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.js @@ -5,13 +5,7 @@ import * as configFunctions from "../functions.config.js"; import { getLots } from "./getLots.js"; import { getLotOccupancies } from "./getLotOccupancies.js"; const commaSeparatedNumbersRegex = /^\d+(,\d+)*$/; -export const getWorkOrderMilestones = (filters, options, connectedDatabase) => { - const database = connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - database.function("userFn_dateIntegerToString", dateIntegerToString); - database.function("userFn_timeIntegerToString", timeIntegerToString); +const buildWhereClause = (filters) => { let sqlWhereClause = " where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null"; const sqlParameters = []; if (filters.workOrderId) { @@ -28,16 +22,18 @@ export const getWorkOrderMilestones = (filters, options, connectedDatabase) => { configFunctions.getProperty("settings.workOrders.workOrderMilestoneDateRecentAfterDays")); const recentAfterDateNumber = dateToInteger(date); switch (filters.workOrderMilestoneDateFilter) { - case "upcomingMissed": + case "upcomingMissed": { sqlWhereClause += " and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)"; sqlParameters.push(currentDateNumber); break; - case "recent": + } + case "recent": { sqlWhereClause += " and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?"; sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber); break; + } } if (filters.workOrderMilestoneDateString) { sqlWhereClause += " and m.workOrderMilestoneDate = ?"; @@ -51,19 +47,35 @@ export const getWorkOrderMilestones = (filters, options, connectedDatabase) => { sqlWhereClause += " and m.workOrderMilestoneTypeId in (" + filters.workOrderMilestoneTypeIds + ")"; } + return { + sqlWhereClause, + sqlParameters + }; +}; +export const getWorkOrderMilestones = (filters, options, connectedDatabase) => { + const database = connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); let orderByClause = ""; switch (options.orderBy) { - case "completion": + case "completion": { orderByClause = " order by" + " m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," + " m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," + " t.orderNumber, m.workOrderMilestoneId"; break; - case "date": + } + case "date": { orderByClause = " order by m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," + " t.orderNumber, m.workOrderId, m.workOrderMilestoneId"; + break; + } } const sql = "select m.workOrderMilestoneId," + " m.workOrderMilestoneTypeId, t.workOrderMilestoneType," + diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts index 9ce5420d..4e809e2c 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts @@ -31,25 +31,12 @@ interface WorkOrderMilestoneOptions { const commaSeparatedNumbersRegex = /^\d+(,\d+)*$/; -export const getWorkOrderMilestones = ( - filters: WorkOrderMilestoneFilters, - options: WorkOrderMilestoneOptions, - connectedDatabase?: sqlite.Database -): recordTypes.WorkOrderMilestone[] => { - const database = - connectedDatabase || - sqlite(databasePath, { - readonly: true - }); - - database.function("userFn_dateIntegerToString", dateIntegerToString); - database.function("userFn_timeIntegerToString", timeIntegerToString); - - // Filters - +const buildWhereClause = ( + filters: WorkOrderMilestoneFilters +): { sqlWhereClause: string; sqlParameters: unknown[] } => { let sqlWhereClause = " where m.recordDelete_timeMillis is null and w.recordDelete_timeMillis is null"; - const sqlParameters = []; + const sqlParameters: unknown[] = []; if (filters.workOrderId) { sqlWhereClause += " and m.workOrderId = ?"; @@ -79,17 +66,19 @@ export const getWorkOrderMilestones = ( const recentAfterDateNumber = dateToInteger(date); switch (filters.workOrderMilestoneDateFilter) { - case "upcomingMissed": + case "upcomingMissed": { sqlWhereClause += " and (m.workOrderMilestoneCompletionDate is null or m.workOrderMilestoneDate >= ?)"; sqlParameters.push(currentDateNumber); break; + } - case "recent": + case "recent": { sqlWhereClause += " and m.workOrderMilestoneDate >= ? and m.workOrderMilestoneDate <= ?"; sqlParameters.push(recentBeforeDateNumber, recentAfterDateNumber); break; + } } if (filters.workOrderMilestoneDateString) { @@ -109,23 +98,50 @@ export const getWorkOrderMilestones = ( " and m.workOrderMilestoneTypeId in (" + filters.workOrderMilestoneTypeIds + ")"; } + return { + sqlWhereClause, + sqlParameters + }; +}; + +export const getWorkOrderMilestones = ( + filters: WorkOrderMilestoneFilters, + options: WorkOrderMilestoneOptions, + connectedDatabase?: sqlite.Database +): recordTypes.WorkOrderMilestone[] => { + const database = + connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + + // Filters + + const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); + // Order By let orderByClause = ""; switch (options.orderBy) { - case "completion": + case "completion": { orderByClause = " order by" + " m.workOrderMilestoneCompletionDate, m.workOrderMilestoneCompletionTime," + " m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," + " t.orderNumber, m.workOrderMilestoneId"; break; + } - case "date": + case "date": { orderByClause = " order by m.workOrderMilestoneDate, case when m.workOrderMilestoneTime = 0 then 9999 else m.workOrderMilestoneTime end," + " t.orderNumber, m.workOrderId, m.workOrderMilestoneId"; + break; + } } // Query