From c6f6bf01df11ecf3004112a92eae3cda8e5ba5d1 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 8 Sep 2022 15:23:39 -0400 Subject: [PATCH] add comments and milestones to getWorkOrder --- helpers/lotOccupancyDB/getWorkOrder.js | 4 ++ helpers/lotOccupancyDB/getWorkOrder.ts | 14 ++++++ .../lotOccupancyDB/getWorkOrderComments.d.ts | 4 ++ .../lotOccupancyDB/getWorkOrderComments.js | 27 +++++++++++ .../lotOccupancyDB/getWorkOrderComments.ts | 46 ++++++++++++++++++ .../getWorkOrderMilestones.d.ts | 4 ++ .../lotOccupancyDB/getWorkOrderMilestones.js | 29 +++++++++++ .../lotOccupancyDB/getWorkOrderMilestones.ts | 48 +++++++++++++++++++ 8 files changed, 176 insertions(+) create mode 100644 helpers/lotOccupancyDB/getWorkOrderComments.d.ts create mode 100644 helpers/lotOccupancyDB/getWorkOrderComments.js create mode 100644 helpers/lotOccupancyDB/getWorkOrderComments.ts create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestones.js create mode 100644 helpers/lotOccupancyDB/getWorkOrderMilestones.ts diff --git a/helpers/lotOccupancyDB/getWorkOrder.js b/helpers/lotOccupancyDB/getWorkOrder.js index bb8386c7..314f4c45 100644 --- a/helpers/lotOccupancyDB/getWorkOrder.js +++ b/helpers/lotOccupancyDB/getWorkOrder.js @@ -3,6 +3,8 @@ import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; import { dateIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; import { getLots } from "./getLots.js"; import { getLotOccupancies } from "./getLotOccupancies.js"; +import { getWorkOrderComments } from "./getWorkOrderComments.js"; +import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js"; const baseSQL = "select w.workOrderId," + " w.workOrderTypeId, t.workOrderType," + " w.workOrderNumber, w.workOrderDescription," + @@ -33,6 +35,8 @@ const _getWorkOrder = (sql, workOrderId_or_workOrderNumber) => { offset: 0, includeOccupants: true }, database).lotOccupancies; + workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database); + workOrder.workOrderMilestones = getWorkOrderMilestones(workOrder.workOrderId, database); } database.close(); return workOrder; diff --git a/helpers/lotOccupancyDB/getWorkOrder.ts b/helpers/lotOccupancyDB/getWorkOrder.ts index 9750d2ca..80da4911 100644 --- a/helpers/lotOccupancyDB/getWorkOrder.ts +++ b/helpers/lotOccupancyDB/getWorkOrder.ts @@ -8,6 +8,10 @@ import { getLots } from "./getLots.js"; import { getLotOccupancies } from "./getLotOccupancies.js"; +import { getWorkOrderComments } from "./getWorkOrderComments.js"; + +import { getWorkOrderMilestones } from "./getWorkOrderMilestones.js"; + import type * as recordTypes from "../../types/recordTypes"; const baseSQL = @@ -57,6 +61,16 @@ const _getWorkOrder = ( }, database ).lotOccupancies; + + workOrder.workOrderComments = getWorkOrderComments( + workOrder.workOrderId, + database + ); + + workOrder.workOrderMilestones = getWorkOrderMilestones( + workOrder.workOrderId, + database + ); } database.close(); diff --git a/helpers/lotOccupancyDB/getWorkOrderComments.d.ts b/helpers/lotOccupancyDB/getWorkOrderComments.d.ts new file mode 100644 index 00000000..4caea636 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderComments.d.ts @@ -0,0 +1,4 @@ +import sqlite from "better-sqlite3"; +import type * as recordTypes from "../../types/recordTypes"; +export declare const getWorkOrderComments: (workOrderId: number | string, connectedDatabase?: sqlite.Database) => recordTypes.WorkOrderComment[]; +export default getWorkOrderComments; diff --git a/helpers/lotOccupancyDB/getWorkOrderComments.js b/helpers/lotOccupancyDB/getWorkOrderComments.js new file mode 100644 index 00000000..aea1dfb8 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderComments.js @@ -0,0 +1,27 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { dateIntegerToString, timeIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +export const getWorkOrderComments = (workOrderId, connectedDatabase) => { + const database = connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + const workOrderComments = database + .prepare("select workOrderCommentId," + + " workOrderCommentDate, userFn_dateIntegerToString(workOrderCommentDate) as workOrderCommentDateString," + + " workOrderCommentTime, userFn_timeIntegerToString(workOrderCommentTime) as workOrderCommentTimeString," + + " workOrderComment," + + " recordCreate_userName, recordUpdate_userName" + + " from WorkOrderComments" + + " where recordDelete_timeMillis is null" + + " and workOrderId = ?" + + " order by workOrderCommentDate desc, workOrderCommentTime desc, workOrderCommentId desc") + .all(workOrderId); + if (!connectedDatabase) { + database.close(); + } + return workOrderComments; +}; +export default getWorkOrderComments; diff --git a/helpers/lotOccupancyDB/getWorkOrderComments.ts b/helpers/lotOccupancyDB/getWorkOrderComments.ts new file mode 100644 index 00000000..a05f85ef --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderComments.ts @@ -0,0 +1,46 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import { + dateIntegerToString, + timeIntegerToString +} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +export const getWorkOrderComments = ( + workOrderId: number | string, + connectedDatabase?: sqlite.Database +): recordTypes.WorkOrderComment[] => { + const database = + connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + + const workOrderComments = database + .prepare( + "select workOrderCommentId," + + " workOrderCommentDate, userFn_dateIntegerToString(workOrderCommentDate) as workOrderCommentDateString," + + " workOrderCommentTime, userFn_timeIntegerToString(workOrderCommentTime) as workOrderCommentTimeString," + + " workOrderComment," + + " recordCreate_userName, recordUpdate_userName" + + " from WorkOrderComments" + + " where recordDelete_timeMillis is null" + + " and workOrderId = ?" + + " order by workOrderCommentDate desc, workOrderCommentTime desc, workOrderCommentId desc" + ) + .all(workOrderId); + + if (!connectedDatabase) { + database.close(); + } + + return workOrderComments; +}; + +export default getWorkOrderComments; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts new file mode 100644 index 00000000..90228713 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.d.ts @@ -0,0 +1,4 @@ +import sqlite from "better-sqlite3"; +import type * as recordTypes from "../../types/recordTypes"; +export declare const getWorkOrderMilestones: (workOrderId: number | string, connectedDatabase?: sqlite.Database) => recordTypes.WorkOrderMilestone[]; +export default getWorkOrderMilestones; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.js b/helpers/lotOccupancyDB/getWorkOrderMilestones.js new file mode 100644 index 00000000..8a1fa379 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.js @@ -0,0 +1,29 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { dateIntegerToString, timeIntegerToString } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +export const getWorkOrderMilestones = (workOrderId, connectedDatabase) => { + const database = connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + const workOrderMilestones = database + .prepare("select m.workOrderMilestoneId," + + " m.workOrderMilestoneTypeId, t.workORderMilestoneType," + + " m.workOrderMilestoneDate, userFn_dateIntegerToString(m.workOrderMilestoneDate) as workOrderMilestoneDateString," + + " m.workOrderMilestoneTime, userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString," + + " m.workOrderMilestoneDescription," + + " m.recordCreate_userName, m.recordUpdate_userName" + + " from WorkOrderMilestones m" + + " left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" + + " where m.recordDelete_timeMillis is null" + + " and m.workOrderId = ?" + + " order by workOrderMilestoneDate desc, workOrderMilestoneTime desc, workOrderMilestoneId desc") + .all(workOrderId); + if (!connectedDatabase) { + database.close(); + } + return workOrderMilestones; +}; +export default getWorkOrderMilestones; diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts new file mode 100644 index 00000000..4f2365a3 --- /dev/null +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts @@ -0,0 +1,48 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import { + dateIntegerToString, + timeIntegerToString +} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +export const getWorkOrderMilestones = ( + workOrderId: number | string, + connectedDatabase?: sqlite.Database +): recordTypes.WorkOrderMilestone[] => { + const database = + connectedDatabase || + sqlite(databasePath, { + readonly: true + }); + + database.function("userFn_dateIntegerToString", dateIntegerToString); + database.function("userFn_timeIntegerToString", timeIntegerToString); + + const workOrderMilestones = database + .prepare( + "select m.workOrderMilestoneId," + + " m.workOrderMilestoneTypeId, t.workORderMilestoneType," + + " m.workOrderMilestoneDate, userFn_dateIntegerToString(m.workOrderMilestoneDate) as workOrderMilestoneDateString," + + " m.workOrderMilestoneTime, userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString," + + " m.workOrderMilestoneDescription," + + " m.recordCreate_userName, m.recordUpdate_userName" + + " from WorkOrderMilestones m" + + " left join WorkOrderMilestoneTypes t on m.workOrderMilestoneTypeId = t.workOrderMilestoneTypeId" + + " where m.recordDelete_timeMillis is null" + + " and m.workOrderId = ?" + + " order by workOrderMilestoneDate desc, workOrderMilestoneTime desc, workOrderMilestoneId desc" + ) + .all(workOrderId); + + if (!connectedDatabase) { + database.close(); + } + + return workOrderMilestones; +}; + +export default getWorkOrderMilestones;