diff --git a/handlers/admin-post/doAddLotStatus.d.ts b/handlers/admin-post/doAddLotStatus.d.ts
new file mode 100644
index 00000000..9621c611
--- /dev/null
+++ b/handlers/admin-post/doAddLotStatus.d.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from "express";
+export declare const handler: RequestHandler;
+export default handler;
diff --git a/handlers/admin-post/doAddLotStatus.js b/handlers/admin-post/doAddLotStatus.js
new file mode 100644
index 00000000..d508d38f
--- /dev/null
+++ b/handlers/admin-post/doAddLotStatus.js
@@ -0,0 +1,12 @@
+import { addLotStatus } from "../../helpers/lotOccupancyDB/addLotStatus.js";
+import { getLotStatuses } from "../../helpers/functions.cache.js";
+export const handler = async (request, response) => {
+ const lotStatusId = addLotStatus(request.body, request.session);
+ const lotStatuses = getLotStatuses();
+ response.json({
+ success: true,
+ lotStatusId,
+ lotStatuses
+ });
+};
+export default handler;
diff --git a/handlers/admin-post/doAddLotStatus.ts b/handlers/admin-post/doAddLotStatus.ts
new file mode 100644
index 00000000..29a3d042
--- /dev/null
+++ b/handlers/admin-post/doAddLotStatus.ts
@@ -0,0 +1,28 @@
+import type {
+ RequestHandler
+} from "express";
+
+import {
+ addLotStatus
+} from "../../helpers/lotOccupancyDB/addLotStatus.js";
+
+import {
+ getLotStatuses
+} from "../../helpers/functions.cache.js";
+
+
+export const handler: RequestHandler = async (request, response) => {
+
+ const lotStatusId = addLotStatus(request.body, request.session);
+
+ const lotStatuses = getLotStatuses();
+
+ response.json({
+ success: true,
+ lotStatusId,
+ lotStatuses
+ });
+};
+
+
+export default handler;
\ No newline at end of file
diff --git a/handlers/admin-post/doDeleteLotStatus.d.ts b/handlers/admin-post/doDeleteLotStatus.d.ts
new file mode 100644
index 00000000..9621c611
--- /dev/null
+++ b/handlers/admin-post/doDeleteLotStatus.d.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from "express";
+export declare const handler: RequestHandler;
+export default handler;
diff --git a/handlers/admin-post/doDeleteLotStatus.js b/handlers/admin-post/doDeleteLotStatus.js
new file mode 100644
index 00000000..6704c67f
--- /dev/null
+++ b/handlers/admin-post/doDeleteLotStatus.js
@@ -0,0 +1,11 @@
+import { deleteLotStatus } from "../../helpers/lotOccupancyDB/deleteLotStatus.js";
+import { getLotStatuses } from "../../helpers/functions.cache.js";
+export const handler = async (request, response) => {
+ const success = deleteLotStatus(request.body.lotStatusId, request.session);
+ const lotStatuses = getLotStatuses();
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+export default handler;
diff --git a/handlers/admin-post/doDeleteLotStatus.ts b/handlers/admin-post/doDeleteLotStatus.ts
new file mode 100644
index 00000000..ddd55799
--- /dev/null
+++ b/handlers/admin-post/doDeleteLotStatus.ts
@@ -0,0 +1,27 @@
+import type {
+ RequestHandler
+} from "express";
+
+import {
+ deleteLotStatus
+} from "../../helpers/lotOccupancyDB/deleteLotStatus.js";
+
+import {
+ getLotStatuses
+} from "../../helpers/functions.cache.js";
+
+
+export const handler: RequestHandler = async (request, response) => {
+
+ const success = deleteLotStatus(request.body.lotStatusId, request.session);
+
+ const lotStatuses = getLotStatuses();
+
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+
+
+export default handler;
\ No newline at end of file
diff --git a/handlers/admin-post/doMoveLotStatusDown.d.ts b/handlers/admin-post/doMoveLotStatusDown.d.ts
new file mode 100644
index 00000000..9621c611
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusDown.d.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from "express";
+export declare const handler: RequestHandler;
+export default handler;
diff --git a/handlers/admin-post/doMoveLotStatusDown.js b/handlers/admin-post/doMoveLotStatusDown.js
new file mode 100644
index 00000000..17bffe1b
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusDown.js
@@ -0,0 +1,11 @@
+import { moveLotStatusDown } from "../../helpers/lotOccupancyDB/moveLotStatusDown.js";
+import { getLotStatuses } from "../../helpers/functions.cache.js";
+export const handler = async (request, response) => {
+ const success = moveLotStatusDown(request.body.lotStatusId);
+ const lotStatuses = getLotStatuses();
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+export default handler;
diff --git a/handlers/admin-post/doMoveLotStatusDown.ts b/handlers/admin-post/doMoveLotStatusDown.ts
new file mode 100644
index 00000000..19219a0d
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusDown.ts
@@ -0,0 +1,27 @@
+import type {
+ RequestHandler
+} from "express";
+
+import {
+ moveLotStatusDown
+} from "../../helpers/lotOccupancyDB/moveLotStatusDown.js";
+
+import {
+ getLotStatuses
+} from "../../helpers/functions.cache.js";
+
+
+export const handler: RequestHandler = async (request, response) => {
+
+ const success = moveLotStatusDown(request.body.lotStatusId);
+
+ const lotStatuses = getLotStatuses();
+
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+
+
+export default handler;
\ No newline at end of file
diff --git a/handlers/admin-post/doMoveLotStatusUp.d.ts b/handlers/admin-post/doMoveLotStatusUp.d.ts
new file mode 100644
index 00000000..9621c611
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusUp.d.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from "express";
+export declare const handler: RequestHandler;
+export default handler;
diff --git a/handlers/admin-post/doMoveLotStatusUp.js b/handlers/admin-post/doMoveLotStatusUp.js
new file mode 100644
index 00000000..4ba3d37e
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusUp.js
@@ -0,0 +1,11 @@
+import { moveLotStatusUp } from "../../helpers/lotOccupancyDB/moveLotStatusUp.js";
+import { getLotStatuses } from "../../helpers/functions.cache.js";
+export const handler = async (request, response) => {
+ const success = moveLotStatusUp(request.body.lotStatusId);
+ const lotStatuses = getLotStatuses();
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+export default handler;
diff --git a/handlers/admin-post/doMoveLotStatusUp.ts b/handlers/admin-post/doMoveLotStatusUp.ts
new file mode 100644
index 00000000..3a28f84a
--- /dev/null
+++ b/handlers/admin-post/doMoveLotStatusUp.ts
@@ -0,0 +1,27 @@
+import type {
+ RequestHandler
+} from "express";
+
+import {
+ moveLotStatusUp
+} from "../../helpers/lotOccupancyDB/moveLotStatusUp.js";
+
+import {
+ getLotStatuses
+} from "../../helpers/functions.cache.js";
+
+
+export const handler: RequestHandler = async (request, response) => {
+
+ const success = moveLotStatusUp(request.body.lotStatusId);
+
+ const lotStatuses = getLotStatuses();
+
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+
+
+export default handler;
\ No newline at end of file
diff --git a/handlers/admin-post/doUpdateLotStatus.d.ts b/handlers/admin-post/doUpdateLotStatus.d.ts
new file mode 100644
index 00000000..9621c611
--- /dev/null
+++ b/handlers/admin-post/doUpdateLotStatus.d.ts
@@ -0,0 +1,3 @@
+import type { RequestHandler } from "express";
+export declare const handler: RequestHandler;
+export default handler;
diff --git a/handlers/admin-post/doUpdateLotStatus.js b/handlers/admin-post/doUpdateLotStatus.js
new file mode 100644
index 00000000..7ddfbb03
--- /dev/null
+++ b/handlers/admin-post/doUpdateLotStatus.js
@@ -0,0 +1,11 @@
+import { updateLotStatus } from "../../helpers/lotOccupancyDB/updateLotStatus.js";
+import { getLotStatuses } from "../../helpers/functions.cache.js";
+export const handler = async (request, response) => {
+ const success = updateLotStatus(request.body, request.session);
+ const lotStatuses = getLotStatuses();
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+export default handler;
diff --git a/handlers/admin-post/doUpdateLotStatus.ts b/handlers/admin-post/doUpdateLotStatus.ts
new file mode 100644
index 00000000..c4046989
--- /dev/null
+++ b/handlers/admin-post/doUpdateLotStatus.ts
@@ -0,0 +1,27 @@
+import type {
+ RequestHandler
+} from "express";
+
+import {
+ updateLotStatus
+} from "../../helpers/lotOccupancyDB/updateLotStatus.js";
+
+import {
+ getLotStatuses
+} from "../../helpers/functions.cache.js";
+
+
+export const handler: RequestHandler = async (request, response) => {
+
+ const success = updateLotStatus(request.body, request.session);
+
+ const lotStatuses = getLotStatuses();
+
+ response.json({
+ success,
+ lotStatuses
+ });
+};
+
+
+export default handler;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/addLotStatus.js b/helpers/lotOccupancyDB/addLotStatus.js
index 9cf48ba4..e99f15c9 100644
--- a/helpers/lotOccupancyDB/addLotStatus.js
+++ b/helpers/lotOccupancyDB/addLotStatus.js
@@ -10,7 +10,7 @@ export const addLotStatus = (lotStatusForm, requestSession) => {
" recordCreate_userName, recordCreate_timeMillis," +
" recordUpdate_userName, recordUpdate_timeMillis)" +
" values (?, ?, ?, ?, ?, ?)")
- .run(lotStatusForm.lotStatus, (lotStatusForm.orderNumber || 0), requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
+ .run(lotStatusForm.lotStatus, (lotStatusForm.orderNumber || -1), requestSession.user.userName, rightNowMillis, requestSession.user.userName, rightNowMillis);
database.close();
clearLotStatusesCache();
return result.lastInsertRowid;
diff --git a/helpers/lotOccupancyDB/addLotStatus.ts b/helpers/lotOccupancyDB/addLotStatus.ts
index 8b8e14d7..33b5d2f4 100644
--- a/helpers/lotOccupancyDB/addLotStatus.ts
+++ b/helpers/lotOccupancyDB/addLotStatus.ts
@@ -28,7 +28,7 @@ export const addLotStatus =
" recordUpdate_userName, recordUpdate_timeMillis)" +
" values (?, ?, ?, ?, ?, ?)")
.run(lotStatusForm.lotStatus,
- (lotStatusForm.orderNumber || 0),
+ (lotStatusForm.orderNumber || -1),
requestSession.user.userName,
rightNowMillis,
requestSession.user.userName,
diff --git a/helpers/lotOccupancyDB/deleteLotStatus.d.ts b/helpers/lotOccupancyDB/deleteLotStatus.d.ts
new file mode 100644
index 00000000..75d14acb
--- /dev/null
+++ b/helpers/lotOccupancyDB/deleteLotStatus.d.ts
@@ -0,0 +1,3 @@
+import type * as recordTypes from "../../types/recordTypes";
+export declare const deleteLotStatus: (lotStatusId: number | string, requestSession: recordTypes.PartialSession) => boolean;
+export default deleteLotStatus;
diff --git a/helpers/lotOccupancyDB/deleteLotStatus.js b/helpers/lotOccupancyDB/deleteLotStatus.js
new file mode 100644
index 00000000..b9bf874f
--- /dev/null
+++ b/helpers/lotOccupancyDB/deleteLotStatus.js
@@ -0,0 +1,17 @@
+import sqlite from "better-sqlite3";
+import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
+import { clearLotStatusesCache } from "../functions.cache.js";
+export const deleteLotStatus = (lotStatusId, requestSession) => {
+ const database = sqlite(databasePath);
+ const rightNowMillis = Date.now();
+ const result = database
+ .prepare("update LotStatuses" +
+ " set recordDelete_userName = ?," +
+ " recordDelete_timeMillis = ?" +
+ " where lotStatusId = ?")
+ .run(requestSession.user.userName, rightNowMillis, lotStatusId);
+ database.close();
+ clearLotStatusesCache();
+ return (result.changes > 0);
+};
+export default deleteLotStatus;
diff --git a/helpers/lotOccupancyDB/deleteLotStatus.ts b/helpers/lotOccupancyDB/deleteLotStatus.ts
new file mode 100644
index 00000000..88b958cc
--- /dev/null
+++ b/helpers/lotOccupancyDB/deleteLotStatus.ts
@@ -0,0 +1,39 @@
+import sqlite from "better-sqlite3";
+
+import {
+ lotOccupancyDB as databasePath
+} from "../../data/databasePaths.js";
+
+import {
+ clearLotStatusesCache
+} from "../functions.cache.js";
+
+import type * as recordTypes from "../../types/recordTypes";
+
+
+export const deleteLotStatus =
+ (lotStatusId: number | string,
+ requestSession: recordTypes.PartialSession): boolean => {
+
+ const database = sqlite(databasePath);
+
+ const rightNowMillis = Date.now();
+
+ const result = database
+ .prepare("update LotStatuses" +
+ " set recordDelete_userName = ?," +
+ " recordDelete_timeMillis = ?" +
+ " where lotStatusId = ?")
+ .run(requestSession.user.userName,
+ rightNowMillis,
+ lotStatusId);
+
+ database.close();
+
+ clearLotStatusesCache();
+
+ return (result.changes > 0);
+ };
+
+
+export default deleteLotStatus;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/deleteWorkOrderType.ts b/helpers/lotOccupancyDB/deleteWorkOrderType.ts
index 8c9ef8d9..110867c1 100644
--- a/helpers/lotOccupancyDB/deleteWorkOrderType.ts
+++ b/helpers/lotOccupancyDB/deleteWorkOrderType.ts
@@ -4,8 +4,11 @@ import {
lotOccupancyDB as databasePath
} from "../../data/databasePaths.js";
+import {
+ clearWorkOrderTypesCache
+} from "../functions.cache.js";
+
import type * as recordTypes from "../../types/recordTypes";
-import { clearWorkOrderTypesCache } from "../functions.cache.js";
export const deleteWorkOrderType =
diff --git a/helpers/lotOccupancyDB/getLotStatuses.js b/helpers/lotOccupancyDB/getLotStatuses.js
index 1dd7b641..116ec381 100644
--- a/helpers/lotOccupancyDB/getLotStatuses.js
+++ b/helpers/lotOccupancyDB/getLotStatuses.js
@@ -1,15 +1,24 @@
import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
export const getLotStatuses = () => {
- const database = sqlite(databasePath, {
- readonly: true
- });
+ const database = sqlite(databasePath);
const lotStatuses = database
.prepare("select lotStatusId, lotStatus" +
" from LotStatuses" +
" where recordDelete_timeMillis is null" +
" order by orderNumber, lotStatus")
.all();
+ let expectedOrderNumber = 0;
+ for (const lotStatus of lotStatuses) {
+ if (lotStatus.orderNumber !== expectedOrderNumber) {
+ database.prepare("update LotStatuses" +
+ " set orderNumber = ?" +
+ " where lotStatusId = ?")
+ .run(expectedOrderNumber, lotStatus.lotStatusId);
+ lotStatus.orderNumber = expectedOrderNumber;
+ }
+ expectedOrderNumber += 1;
+ }
database.close();
return lotStatuses;
};
diff --git a/helpers/lotOccupancyDB/getLotStatuses.ts b/helpers/lotOccupancyDB/getLotStatuses.ts
index e97c3dac..46b7ca80 100644
--- a/helpers/lotOccupancyDB/getLotStatuses.ts
+++ b/helpers/lotOccupancyDB/getLotStatuses.ts
@@ -1,26 +1,45 @@
import sqlite from "better-sqlite3";
-import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
+
+import {
+ lotOccupancyDB as databasePath
+} from "../../data/databasePaths.js";
import type * as recordTypes from "../../types/recordTypes";
export const getLotStatuses = (): recordTypes.LotStatus[] => {
- const database = sqlite(databasePath, {
- readonly: true
- });
+ const database = sqlite(databasePath);
const lotStatuses: recordTypes.LotStatus[] = database
- .prepare("select lotStatusId, lotStatus" +
- " from LotStatuses" +
- " where recordDelete_timeMillis is null" +
- " order by orderNumber, lotStatus")
- .all();
+ .prepare("select lotStatusId, lotStatus" +
+ " from LotStatuses" +
+ " where recordDelete_timeMillis is null" +
+ " order by orderNumber, lotStatus")
+ .all();
+
+ let expectedOrderNumber = 0;
+
+ for (const lotStatus of lotStatuses) {
+
+ if (lotStatus.orderNumber !== expectedOrderNumber) {
+
+ database.prepare("update LotStatuses" +
+ " set orderNumber = ?" +
+ " where lotStatusId = ?")
+ .run(expectedOrderNumber,
+ lotStatus.lotStatusId);
+
+ lotStatus.orderNumber = expectedOrderNumber;
+ }
+
+ expectedOrderNumber += 1;
+ }
database.close();
return lotStatuses;
- };
+};
export default getLotStatuses;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/moveLotStatusDown.d.ts b/helpers/lotOccupancyDB/moveLotStatusDown.d.ts
new file mode 100644
index 00000000..0a6e5dde
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusDown.d.ts
@@ -0,0 +1,2 @@
+export declare const moveLotStatusDown: (lotStatusId: number | string) => boolean;
+export default moveLotStatusDown;
diff --git a/helpers/lotOccupancyDB/moveLotStatusDown.js b/helpers/lotOccupancyDB/moveLotStatusDown.js
new file mode 100644
index 00000000..4f14baa6
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusDown.js
@@ -0,0 +1,26 @@
+import sqlite from "better-sqlite3";
+import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
+import { clearLotStatusesCache } from "../functions.cache.js";
+export const moveLotStatusDown = (lotStatusId) => {
+ const database = sqlite(databasePath);
+ const currentOrderNumber = database.prepare("select orderNumber" +
+ " from LotStatuses" +
+ " where lotStatusId = ?")
+ .get(lotStatusId)
+ .orderNumber;
+ database
+ .prepare("update LotStatuses" +
+ " set orderNumber = orderNumber - 1" +
+ " where recordDelete_timeMillis is null" +
+ " and orderNumber = ? + 1")
+ .run(currentOrderNumber);
+ const result = database
+ .prepare("update LotStatuses" +
+ " set orderNumber = ? + 1" +
+ " where lotStatusId = ?")
+ .run(currentOrderNumber, lotStatusId);
+ database.close();
+ clearLotStatusesCache();
+ return result.changes > 0;
+};
+export default moveLotStatusDown;
diff --git a/helpers/lotOccupancyDB/moveLotStatusDown.ts b/helpers/lotOccupancyDB/moveLotStatusDown.ts
new file mode 100644
index 00000000..730108e0
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusDown.ts
@@ -0,0 +1,44 @@
+import sqlite from "better-sqlite3";
+
+import {
+ lotOccupancyDB as databasePath
+} from "../../data/databasePaths.js";
+
+import {
+ clearLotStatusesCache
+} from "../functions.cache.js";
+
+
+export const moveLotStatusDown =
+ (lotStatusId: number | string): boolean => {
+
+ const database = sqlite(databasePath);
+
+ const currentOrderNumber: number = database.prepare("select orderNumber" +
+ " from LotStatuses" +
+ " where lotStatusId = ?")
+ .get(lotStatusId)
+ .orderNumber;
+
+ database
+ .prepare("update LotStatuses" +
+ " set orderNumber = orderNumber - 1" +
+ " where recordDelete_timeMillis is null" +
+ " and orderNumber = ? + 1")
+ .run(currentOrderNumber);
+
+ const result = database
+ .prepare("update LotStatuses" +
+ " set orderNumber = ? + 1" +
+ " where lotStatusId = ?")
+ .run(currentOrderNumber, lotStatusId);
+
+ database.close();
+
+ clearLotStatusesCache();
+
+ return result.changes > 0;
+ };
+
+
+export default moveLotStatusDown;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/moveLotStatusUp.d.ts b/helpers/lotOccupancyDB/moveLotStatusUp.d.ts
new file mode 100644
index 00000000..090b829e
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusUp.d.ts
@@ -0,0 +1,2 @@
+export declare const moveLotStatusUp: (lotStatusId: number | string) => boolean;
+export default moveLotStatusUp;
diff --git a/helpers/lotOccupancyDB/moveLotStatusUp.js b/helpers/lotOccupancyDB/moveLotStatusUp.js
new file mode 100644
index 00000000..ab83bca0
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusUp.js
@@ -0,0 +1,30 @@
+import sqlite from "better-sqlite3";
+import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
+import { clearLotStatusesCache } from "../functions.cache.js";
+export const moveLotStatusUp = (lotStatusId) => {
+ const database = sqlite(databasePath);
+ const currentOrderNumber = database.prepare("select orderNumber" +
+ " from LotStatuses" +
+ " where lotStatusId = ?")
+ .get(lotStatusId)
+ .orderNumber;
+ if (currentOrderNumber <= 0) {
+ database.close();
+ return true;
+ }
+ database
+ .prepare("update LotStatuses" +
+ " set orderNumber = orderNumber + 1" +
+ " where recordDelete_timeMillis is null" +
+ " and orderNumber = ? - 1")
+ .run(currentOrderNumber);
+ const result = database
+ .prepare("update LotStatuses" +
+ " set orderNumber = ? - 1" +
+ " where lotStatusId = ?")
+ .run(currentOrderNumber, lotStatusId);
+ database.close();
+ clearLotStatusesCache();
+ return result.changes > 0;
+};
+export default moveLotStatusUp;
diff --git a/helpers/lotOccupancyDB/moveLotStatusUp.ts b/helpers/lotOccupancyDB/moveLotStatusUp.ts
new file mode 100644
index 00000000..988ca9f6
--- /dev/null
+++ b/helpers/lotOccupancyDB/moveLotStatusUp.ts
@@ -0,0 +1,49 @@
+import sqlite from "better-sqlite3";
+
+import {
+ lotOccupancyDB as databasePath
+} from "../../data/databasePaths.js";
+
+import {
+ clearLotStatusesCache
+} from "../functions.cache.js";
+
+
+export const moveLotStatusUp =
+ (lotStatusId: number | string): boolean => {
+
+ const database = sqlite(databasePath);
+
+ const currentOrderNumber: number = database.prepare("select orderNumber" +
+ " from LotStatuses" +
+ " where lotStatusId = ?")
+ .get(lotStatusId)
+ .orderNumber;
+
+ if (currentOrderNumber <= 0) {
+ database.close();
+ return true;
+ }
+
+ database
+ .prepare("update LotStatuses" +
+ " set orderNumber = orderNumber + 1" +
+ " where recordDelete_timeMillis is null" +
+ " and orderNumber = ? - 1")
+ .run(currentOrderNumber);
+
+ const result = database
+ .prepare("update LotStatuses" +
+ " set orderNumber = ? - 1" +
+ " where lotStatusId = ?")
+ .run(currentOrderNumber, lotStatusId);
+
+ database.close();
+
+ clearLotStatusesCache();
+
+ return result.changes > 0;
+ };
+
+
+export default moveLotStatusUp;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/updateLotStatus.d.ts b/helpers/lotOccupancyDB/updateLotStatus.d.ts
new file mode 100644
index 00000000..671a77bd
--- /dev/null
+++ b/helpers/lotOccupancyDB/updateLotStatus.d.ts
@@ -0,0 +1,7 @@
+import type * as recordTypes from "../../types/recordTypes";
+interface UpdateLotStatusForm {
+ lotStatusId: number | string;
+ lotStatus: string;
+}
+export declare const updateLotStatus: (lotStatusForm: UpdateLotStatusForm, requestSession: recordTypes.PartialSession) => boolean;
+export default updateLotStatus;
diff --git a/helpers/lotOccupancyDB/updateLotStatus.js b/helpers/lotOccupancyDB/updateLotStatus.js
new file mode 100644
index 00000000..15b9f948
--- /dev/null
+++ b/helpers/lotOccupancyDB/updateLotStatus.js
@@ -0,0 +1,19 @@
+import sqlite from "better-sqlite3";
+import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
+import { clearLotStatusesCache } from "../functions.cache.js";
+export const updateLotStatus = (lotStatusForm, requestSession) => {
+ const database = sqlite(databasePath);
+ const rightNowMillis = Date.now();
+ const result = database
+ .prepare("update LotStatuses" +
+ " set lotStatus = ?," +
+ " recordUpdate_userName = ?," +
+ " recordUpdate_timeMillis = ?" +
+ " where lotStatusId = ?" +
+ " and recordDelete_timeMillis is null")
+ .run(lotStatusForm.lotStatus, requestSession.user.userName, rightNowMillis, lotStatusForm.lotStatusId);
+ database.close();
+ clearLotStatusesCache();
+ return result.changes > 0;
+};
+export default updateLotStatus;
diff --git a/helpers/lotOccupancyDB/updateLotStatus.ts b/helpers/lotOccupancyDB/updateLotStatus.ts
new file mode 100644
index 00000000..8e5d3ac8
--- /dev/null
+++ b/helpers/lotOccupancyDB/updateLotStatus.ts
@@ -0,0 +1,47 @@
+import sqlite from "better-sqlite3";
+
+import {
+ lotOccupancyDB as databasePath
+} from "../../data/databasePaths.js";
+
+import {
+ clearLotStatusesCache
+} from "../functions.cache.js";
+
+import type * as recordTypes from "../../types/recordTypes";
+
+
+interface UpdateLotStatusForm {
+ lotStatusId: number | string;
+ lotStatus: string;
+}
+
+
+export const updateLotStatus =
+ (lotStatusForm: UpdateLotStatusForm, requestSession: recordTypes.PartialSession): boolean => {
+
+ const database = sqlite(databasePath);
+
+ const rightNowMillis = Date.now();
+
+ const result = database
+ .prepare("update LotStatuses" +
+ " set lotStatus = ?," +
+ " recordUpdate_userName = ?," +
+ " recordUpdate_timeMillis = ?" +
+ " where lotStatusId = ?" +
+ " and recordDelete_timeMillis is null")
+ .run(lotStatusForm.lotStatus,
+ requestSession.user.userName,
+ rightNowMillis,
+ lotStatusForm.lotStatusId);
+
+ database.close();
+
+ clearLotStatusesCache();
+
+ return result.changes > 0;
+ };
+
+
+export default updateLotStatus;
\ No newline at end of file
diff --git a/helpers/lotOccupancyDB/updateWorkOrderType.ts b/helpers/lotOccupancyDB/updateWorkOrderType.ts
index 9b42d121..40902e26 100644
--- a/helpers/lotOccupancyDB/updateWorkOrderType.ts
+++ b/helpers/lotOccupancyDB/updateWorkOrderType.ts
@@ -4,8 +4,11 @@ import {
lotOccupancyDB as databasePath
} from "../../data/databasePaths.js";
+import {
+ clearWorkOrderTypesCache
+} from "../functions.cache.js";
+
import type * as recordTypes from "../../types/recordTypes";
-import { clearWorkOrderTypesCache } from "../functions.cache.js";
interface UpdateWorkOrderTypeForm {
diff --git a/public-typescript/adminTables.js b/public-typescript/adminTables.js
index daf80e10..9195505e 100644
--- a/public-typescript/adminTables.js
+++ b/public-typescript/adminTables.js
@@ -1,7 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
- const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
let workOrderTypes = exports.workOrderTypes;
delete exports.workOrderTypes;
@@ -178,4 +177,179 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
});
renderWorkOrderTypes();
+ let lotStatuses = exports.lotStatuses;
+ delete exports.lotStatuses;
+ const updateLotStatus = (submitEvent) => {
+ submitEvent.preventDefault();
+ cityssm.postJSON(urlPrefix + "/admin/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses;
+ bulmaJS.alert({
+ message: exports.aliases.lot + " Status Updated Successfully",
+ contextualColorName: "success"
+ });
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Updating " + exports.aliases.lot + " Status",
+ message: responseJSON.errorMessage,
+ contextualColorName: "danger"
+ });
+ }
+ });
+ };
+ const deleteLotStatus = (clickEvent) => {
+ const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const lotStatusId = tableRowElement.dataset.lotStatusId;
+ const doDelete = () => {
+ cityssm.postJSON(urlPrefix + "/admin/doDeleteLotStatus", {
+ lotStatusId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses;
+ if (lotStatuses.length === 0) {
+ renderLotStatuses();
+ }
+ else {
+ tableRowElement.remove();
+ }
+ bulmaJS.alert({
+ message: exports.aliases.lot + " Status Deleted Successfully",
+ contextualColorName: "success"
+ });
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Deleting " + exports.aliases.lot + " Status",
+ message: responseJSON.errorMessage,
+ contextualColorName: "danger"
+ });
+ }
+ });
+ };
+ bulmaJS.confirm({
+ title: "Delete " + exports.aliases.lot + " Status",
+ message: "Are you sure you want to delete this status?
" +
+ "Note that no " + exports.aliases.lots.toLowerCase() + " will be removed.",
+ messageIsHtml: true,
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Delete Status",
+ callbackFunction: doDelete
+ }
+ });
+ };
+ const moveLotStatusUp = (clickEvent) => {
+ const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const lotStatusId = tableRowElement.dataset.lotStatusId;
+ cityssm.postJSON(urlPrefix + "/admin/doMoveLotStatusUp", {
+ lotStatusId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses;
+ renderLotStatuses();
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Moving " + exports.aliases.lot + " Status",
+ message: responseJSON.errorMessage,
+ contextualColorName: "danger"
+ });
+ }
+ });
+ };
+ const moveLotStatusDown = (clickEvent) => {
+ const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const lotStatusId = tableRowElement.dataset.lotStatusId;
+ cityssm.postJSON(urlPrefix + "/admin/doMoveLotStatusDown", {
+ lotStatusId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses;
+ renderLotStatuses();
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Moving " + exports.aliases.lot + " Status",
+ message: responseJSON.errorMessage,
+ contextualColorName: "danger"
+ });
+ }
+ });
+ };
+ const renderLotStatuses = () => {
+ const containerElement = document.querySelector("#container--lotStatuses");
+ if (workOrderTypes.length === 0) {
+ containerElement.innerHTML = "
| <%= configFunctions.getProperty("aliases.lot") %> Status | +Options | +
|---|---|
| + + | +|