From 8bbe9ab637a04587cfd53600563a77a6057b2fdc Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 8 Sep 2022 14:53:39 -0400 Subject: [PATCH] add work order milestone --- .../lotOccupancyDB/addWorkOrderMilestone.d.ts | 12 ++++ .../lotOccupancyDB/addWorkOrderMilestone.js | 25 +++++++ .../lotOccupancyDB/addWorkOrderMilestone.ts | 71 +++++++++++++++++++ 3 files changed, 108 insertions(+) create mode 100644 helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts create mode 100644 helpers/lotOccupancyDB/addWorkOrderMilestone.js create mode 100644 helpers/lotOccupancyDB/addWorkOrderMilestone.ts diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts b/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts new file mode 100644 index 00000000..b6c59fc3 --- /dev/null +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.d.ts @@ -0,0 +1,12 @@ +import type * as recordTypes from "../../types/recordTypes"; +interface AddWorkOrderMilestoneForm { + workOrderId: string | number; + workOrderMilestoneTypeId?: number | string; + workOrderMilestoneDateString: string; + workOrderMilestoneTimeString?: string; + workOrderMilestoneDescription: string; + workOrderMilestoneCompletionDateString?: string; + workOrderMilestoneCompletionTimeString?: string; +} +export declare const addWorkOrderMilestone: (milestoneForm: AddWorkOrderMilestoneForm, requestSession: recordTypes.PartialSession) => number; +export default addWorkOrderMilestone; diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.js b/helpers/lotOccupancyDB/addWorkOrderMilestone.js new file mode 100644 index 00000000..be6d636f --- /dev/null +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.js @@ -0,0 +1,25 @@ +import sqlite from "better-sqlite3"; +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; +import { dateStringToInteger, timeStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js"; +export const addWorkOrderMilestone = (milestoneForm, requestSession) => { + const rightNow = new Date(); + const database = sqlite(databasePath); + const result = database + .prepare("insert into WorkOrderMilestones (" + + "workOrderId, workOrderMilestoneTypeId," + + " workOrderMilestoneDate, workOrderMilestoneTime, workOrderMilestoneDescription," + + " workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime," + + " recordCreate_userName, recordCreate_timeMillis," + + " recordUpdate_userName, recordUpdate_timeMillis)" + + " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") + .run(milestoneForm.workOrderId, milestoneForm.workOrderMilestoneTypeId || undefined, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString + ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString) + : 0, milestoneForm.workOrderMilestoneDescription, milestoneForm.workOrderMilestoneCompletionDateString + ? dateStringToInteger(milestoneForm.workOrderMilestoneCompletionDateString) + : undefined, milestoneForm.workOrderMilestoneCompletionTimeString + ? timeStringToInteger(milestoneForm.workOrderMilestoneCompletionTimeString) + : undefined, requestSession.user.userName, rightNow.getTime(), requestSession.user.userName, rightNow.getTime()); + database.close(); + return result.lastInsertRowid; +}; +export default addWorkOrderMilestone; diff --git a/helpers/lotOccupancyDB/addWorkOrderMilestone.ts b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts new file mode 100644 index 00000000..e73b8b8a --- /dev/null +++ b/helpers/lotOccupancyDB/addWorkOrderMilestone.ts @@ -0,0 +1,71 @@ +import sqlite from "better-sqlite3"; + +import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js"; + +import { + dateStringToInteger, + timeStringToInteger +} from "@cityssm/expressjs-server-js/dateTimeFns.js"; + +import type * as recordTypes from "../../types/recordTypes"; + +interface AddWorkOrderMilestoneForm { + workOrderId: string | number; + workOrderMilestoneTypeId?: number | string; + workOrderMilestoneDateString: string; + workOrderMilestoneTimeString?: string; + workOrderMilestoneDescription: string; + workOrderMilestoneCompletionDateString?: string; + workOrderMilestoneCompletionTimeString?: string; +} + +export const addWorkOrderMilestone = ( + milestoneForm: AddWorkOrderMilestoneForm, + requestSession: recordTypes.PartialSession +): number => { + const rightNow = new Date(); + + const database = sqlite(databasePath); + + const result = database + .prepare( + "insert into WorkOrderMilestones (" + + "workOrderId, workOrderMilestoneTypeId," + + " workOrderMilestoneDate, workOrderMilestoneTime, workOrderMilestoneDescription," + + " workOrderMilestoneCompletionDate, workOrderMilestoneCompletionTime," + + " recordCreate_userName, recordCreate_timeMillis," + + " recordUpdate_userName, recordUpdate_timeMillis)" + + " values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)" + ) + .run( + milestoneForm.workOrderId, + milestoneForm.workOrderMilestoneTypeId || undefined, + dateStringToInteger(milestoneForm.workOrderMilestoneDateString), + milestoneForm.workOrderMilestoneTimeString + ? timeStringToInteger( + milestoneForm.workOrderMilestoneTimeString + ) + : 0, + milestoneForm.workOrderMilestoneDescription, + milestoneForm.workOrderMilestoneCompletionDateString + ? dateStringToInteger( + milestoneForm.workOrderMilestoneCompletionDateString + ) + : undefined, + milestoneForm.workOrderMilestoneCompletionTimeString + ? timeStringToInteger( + milestoneForm.workOrderMilestoneCompletionTimeString + ) + : undefined, + requestSession.user.userName, + rightNow.getTime(), + requestSession.user.userName, + rightNow.getTime() + ); + + database.close(); + + return result.lastInsertRowid as number; +}; + +export default addWorkOrderMilestone;