deepsource-autofix-76c6eb20
Dan Gowans 2024-10-31 10:47:03 -04:00
parent 7011ab1adc
commit 33e2bbe751
105 changed files with 546 additions and 577 deletions

2
app.ts
View File

@ -229,7 +229,7 @@ app.use(`${urlPrefix}/dashboard`, sessionChecker, routerDashboard)
app.use( app.use(
`${urlPrefix}/api/:apiKey`, `${urlPrefix}/api/:apiKey`,
permissionHandlers.apiGetHandler as RequestHandler, permissionHandlers.apiGetHandler,
routerApi routerApi
) )

View File

@ -1,5 +1,5 @@
export declare function moveFeeDown(feeId: number | string): Promise<boolean>; export declare function moveFeeDown(feeId: number | string): Promise<boolean>;
export declare function moveFeeDownToBottom(feeId: number | string): Promise<boolean>; export declare function moveFeeDownToBottom(feeId: number | string): Promise<boolean>;
export declare function moveFeeUp(feeId: number): Promise<boolean>; export declare function moveFeeUp(feeId: number | string): Promise<boolean>;
export declare function moveFeeUpToTop(feeId: number | string): Promise<boolean>; export declare function moveFeeUpToTop(feeId: number | string): Promise<boolean>;
export default moveFeeUp; export default moveFeeUp;

View File

@ -67,7 +67,7 @@ export async function moveFeeDownToBottom(
return true return true
} }
export async function moveFeeUp(feeId: number): Promise<boolean> { export async function moveFeeUp(feeId: number | string): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
const currentFee = (await getFee(feeId, database)) as Fee const currentFee = (await getFee(feeId, database)) as Fee

View File

@ -1,4 +1,4 @@
export declare function moveOccupancyTypeFieldDown(occupancyTypeFieldId: number): Promise<boolean>; export declare function moveOccupancyTypeFieldDown(occupancyTypeFieldId: number | string): Promise<boolean>;
export declare function moveOccupancyTypeFieldDownToBottom(occupancyTypeFieldId: number): Promise<boolean>; export declare function moveOccupancyTypeFieldDownToBottom(occupancyTypeFieldId: number | string): Promise<boolean>;
export declare function moveOccupancyTypeFieldUp(occupancyTypeFieldId: number): Promise<boolean>; export declare function moveOccupancyTypeFieldUp(occupancyTypeFieldId: number | string): Promise<boolean>;
export declare function moveOccupancyTypeFieldUpToTop(occupancyTypeFieldId: number): Promise<boolean>; export declare function moveOccupancyTypeFieldUpToTop(occupancyTypeFieldId: number | string): Promise<boolean>;

View File

@ -6,7 +6,7 @@ import { acquireConnection } from './pool.js'
import { updateRecordOrderNumber } from './updateRecordOrderNumber.js' import { updateRecordOrderNumber } from './updateRecordOrderNumber.js'
function getCurrentField( function getCurrentField(
occupancyTypeFieldId: number, occupancyTypeFieldId: number | string,
connectedDatabase: PoolConnection connectedDatabase: PoolConnection
): { occupancyTypeId?: number; orderNumber: number } { ): { occupancyTypeId?: number; orderNumber: number } {
return connectedDatabase return connectedDatabase
@ -22,7 +22,7 @@ function getCurrentField(
} }
export async function moveOccupancyTypeFieldDown( export async function moveOccupancyTypeFieldDown(
occupancyTypeFieldId: number occupancyTypeFieldId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -57,7 +57,7 @@ export async function moveOccupancyTypeFieldDown(
} }
export async function moveOccupancyTypeFieldDownToBottom( export async function moveOccupancyTypeFieldDownToBottom(
occupancyTypeFieldId: number occupancyTypeFieldId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -116,7 +116,7 @@ export async function moveOccupancyTypeFieldDownToBottom(
} }
export async function moveOccupancyTypeFieldUp( export async function moveOccupancyTypeFieldUp(
occupancyTypeFieldId: number occupancyTypeFieldId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -156,7 +156,7 @@ export async function moveOccupancyTypeFieldUp(
} }
export async function moveOccupancyTypeFieldUpToTop( export async function moveOccupancyTypeFieldUpToTop(
occupancyTypeFieldId: number occupancyTypeFieldId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()

View File

@ -1,6 +1,6 @@
type RecordTable = 'FeeCategories' | 'LotOccupantTypes' | 'LotStatuses' | 'LotTypes' | 'OccupancyTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes'; type RecordTable = 'FeeCategories' | 'LotOccupantTypes' | 'LotStatuses' | 'LotTypes' | 'OccupancyTypes' | 'WorkOrderMilestoneTypes' | 'WorkOrderTypes';
export declare function moveRecordDown(recordTable: RecordTable, recordId: number): Promise<boolean>; export declare function moveRecordDown(recordTable: RecordTable, recordId: number | string): Promise<boolean>;
export declare function moveRecordDownToBottom(recordTable: RecordTable, recordId: number): Promise<boolean>; export declare function moveRecordDownToBottom(recordTable: RecordTable, recordId: number | string): Promise<boolean>;
export declare function moveRecordUp(recordTable: RecordTable, recordId: number): Promise<boolean>; export declare function moveRecordUp(recordTable: RecordTable, recordId: number | string): Promise<boolean>;
export declare function moveRecordUpToTop(recordTable: RecordTable, recordId: number): Promise<boolean>; export declare function moveRecordUpToTop(recordTable: RecordTable, recordId: number | string): Promise<boolean>;
export {}; export {};

View File

@ -33,7 +33,7 @@ function getCurrentOrderNumber(
.prepare( .prepare(
`select orderNumber `select orderNumber
from ${recordTable} from ${recordTable}
where ${recordIdColumns.get(recordTable)!} = ?` where ${recordIdColumns.get(recordTable)} = ?`
) )
.get(recordId) as { orderNumber: number } .get(recordId) as { orderNumber: number }
).orderNumber ).orderNumber
@ -43,7 +43,7 @@ function getCurrentOrderNumber(
export async function moveRecordDown( export async function moveRecordDown(
recordTable: RecordTable, recordTable: RecordTable,
recordId: number recordId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -78,7 +78,7 @@ export async function moveRecordDown(
export async function moveRecordDownToBottom( export async function moveRecordDownToBottom(
recordTable: RecordTable, recordTable: RecordTable,
recordId: number recordId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -120,7 +120,7 @@ export async function moveRecordDownToBottom(
export async function moveRecordUp( export async function moveRecordUp(
recordTable: RecordTable, recordTable: RecordTable,
recordId: number recordId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()
@ -160,7 +160,7 @@ export async function moveRecordUp(
export async function moveRecordUpToTop( export async function moveRecordUpToTop(
recordTable: RecordTable, recordTable: RecordTable,
recordId: number recordId: number | string
): Promise<boolean> { ): Promise<boolean> {
const database = await acquireConnection() const database = await acquireConnection()

View File

@ -11,7 +11,7 @@ export const config = tseslint.config(...configWebApp, {
'warn', 'warn',
{ {
cspell: { cspell: {
words: [...cspellWords, 'ical', 'ntfy'] words: [...cspellWords, 'ical', 'preneed', 'ntfy']
} }
} }
] ]

View File

@ -12,7 +12,7 @@ export const config = tseslint.config(...configWebApp, {
'warn', 'warn',
{ {
cspell: { cspell: {
words: [...cspellWords, 'ical', 'ntfy'] words: [...cspellWords, 'ical', 'preneed', 'ntfy']
} }
} }
] ]

View File

@ -1,5 +1,3 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, n/no-unpublished-import */
import gulp from 'gulp'; import gulp from 'gulp';
import gulpSass from 'gulp-sass'; import gulpSass from 'gulp-sass';
import * as dartSass from 'sass'; import * as dartSass from 'sass';

View File

@ -1,6 +1,3 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return, n/no-unpublished-import */
import gulp from 'gulp' import gulp from 'gulp'
import gulpSass from 'gulp-sass' import gulpSass from 'gulp-sass'
import * as dartSass from 'sass' import * as dartSass from 'sass'

View File

@ -1,2 +1,4 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderTypeId: string;
}>, response: Response): Promise<void>;

View File

@ -4,12 +4,12 @@ import { deleteRecord } from '../../database/deleteRecord.js'
import { getWorkOrderTypes } from '../../helpers/functions.cache.js' import { getWorkOrderTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, { workOrderTypeId: string }>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await deleteRecord( const success = await deleteRecord(
'WorkOrderTypes', 'WorkOrderTypes',
request.body.workOrderTypeId as string, request.body.workOrderTypeId,
request.session.user as User request.session.user as User
) )
@ -20,4 +20,3 @@ export default async function handler(
workOrderTypes workOrderTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
feeCategoryId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,7 +7,11 @@ import {
} from '../../database/moveRecord.js' } from '../../database/moveRecord.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ feeCategoryId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
feeCategoryId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -4,7 +4,7 @@ import getFeeCategories from '../../database/getFeeCategories.js'
import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js' import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, { feeCategoryId: string; moveToEnd: '0' | '1' }>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
feeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -4,7 +4,7 @@ import getFeeCategories from '../../database/getFeeCategories.js'
import { moveFeeDown, moveFeeDownToBottom } from '../../database/moveFee.js' import { moveFeeDown, moveFeeDownToBottom } from '../../database/moveFee.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, { feeId: string; moveToEnd: '0' | '1' }>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
feeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -4,7 +4,7 @@ import getFeeCategories from '../../database/getFeeCategories.js'
import { moveFeeUp, moveFeeUpToTop } from '../../database/moveFee.js' import { moveFeeUp, moveFeeUpToTop } from '../../database/moveFee.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, { feeId: string; moveToEnd: '0' | '1' }>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotOccupantTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,7 +7,11 @@ import {
import { getLotOccupantTypes } from '../../helpers/functions.cache.js' import { getLotOccupantTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotOccupantTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -25,4 +29,3 @@ export default async function handler(
lotOccupantTypes lotOccupantTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotOccupantTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,18 +1,22 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { getLotOccupantTypes } from '../../helpers/functions.cache.js' import { getLotOccupantTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotOccupantTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
request.body.moveToEnd === '1' request.body.moveToEnd === '1'
? await moveRecordUpToTop('LotOccupantTypes', request.body.lotOccupantTypeId) ? await moveRecordUpToTop(
'LotOccupantTypes',
request.body.lotOccupantTypeId
)
: await moveRecordUp('LotOccupantTypes', request.body.lotOccupantTypeId) : await moveRecordUp('LotOccupantTypes', request.body.lotOccupantTypeId)
const lotOccupantTypes = await getLotOccupantTypes() const lotOccupantTypes = await getLotOccupantTypes()
@ -22,4 +26,3 @@ export default async function handler(
lotOccupantTypes lotOccupantTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotStatusId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,7 +7,11 @@ import {
import { getLotStatuses } from '../../helpers/functions.cache.js' import { getLotStatuses } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotStatusId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -22,4 +26,3 @@ export default async function handler(
lotStatuses lotStatuses
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotStatusId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,13 +1,14 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { getLotStatuses } from '../../helpers/functions.cache.js' import { getLotStatuses } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotStatusId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -22,4 +23,3 @@ export default async function handler(
lotStatuses lotStatuses
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,7 +7,11 @@ import {
import { getLotTypes } from '../../helpers/functions.cache.js' import { getLotTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -22,4 +26,3 @@ export default async function handler(
lotTypes lotTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotTypeFieldId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -4,11 +4,14 @@ import {
moveLotTypeFieldDown, moveLotTypeFieldDown,
moveLotTypeFieldDownToBottom moveLotTypeFieldDownToBottom
} from '../../database/moveLotTypeField.js' } from '../../database/moveLotTypeField.js'
import { getLotTypes } from '../../helpers/functions.cache.js' import { getLotTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotTypeFieldId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -23,4 +26,3 @@ export default async function handler(
lotTypes lotTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotTypeFieldId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -4,11 +4,14 @@ import {
moveLotTypeFieldUp, moveLotTypeFieldUp,
moveLotTypeFieldUpToTop moveLotTypeFieldUpToTop
} from '../../database/moveLotTypeField.js' } from '../../database/moveLotTypeField.js'
import { getLotTypes } from '../../helpers/functions.cache.js' import { getLotTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotTypeFieldId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -23,4 +26,3 @@ export default async function handler(
lotTypes lotTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,13 +1,14 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { getLotTypes } from '../../helpers/functions.cache.js' import { getLotTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -22,4 +23,3 @@ export default async function handler(
lotTypes lotTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -10,12 +10,19 @@ import {
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
request.body.moveToEnd === '1' request.body.moveToEnd === '1'
? await moveRecordDownToBottom('OccupancyTypes', request.body.occupancyTypeId) ? await moveRecordDownToBottom(
'OccupancyTypes',
request.body.occupancyTypeId
)
: await moveRecordDown('OccupancyTypes', request.body.occupancyTypeId) : await moveRecordDown('OccupancyTypes', request.body.occupancyTypeId)
const occupancyTypes = await getOccupancyTypes() const occupancyTypes = await getOccupancyTypes()
@ -27,4 +34,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeFieldId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,10 +1,9 @@
import { moveOccupancyTypeFieldDown, moveOccupancyTypeFieldDownToBottom } from '../../database/moveOccupancyTypeField.js'; import { moveOccupancyTypeFieldDown, moveOccupancyTypeFieldDownToBottom } from '../../database/moveOccupancyTypeField.js';
import { getAllOccupancyTypeFields, getOccupancyTypes } from '../../helpers/functions.cache.js'; import { getAllOccupancyTypeFields, getOccupancyTypes } from '../../helpers/functions.cache.js';
export default async function handler(request, response) { export default async function handler(request, response) {
const occupancyTypeFieldId = Number.parseInt(request.body.occupancyTypeFieldId, 10);
const success = request.body.moveToEnd === '1' const success = request.body.moveToEnd === '1'
? await moveOccupancyTypeFieldDownToBottom(occupancyTypeFieldId) ? await moveOccupancyTypeFieldDownToBottom(request.body.occupancyTypeFieldId)
: await moveOccupancyTypeFieldDown(occupancyTypeFieldId); : await moveOccupancyTypeFieldDown(request.body.occupancyTypeFieldId);
const occupancyTypes = await getOccupancyTypes(); const occupancyTypes = await getOccupancyTypes();
const allOccupancyTypeFields = await getAllOccupancyTypeFields(); const allOccupancyTypeFields = await getAllOccupancyTypeFields();
response.json({ response.json({

View File

@ -4,25 +4,25 @@ import {
moveOccupancyTypeFieldDown, moveOccupancyTypeFieldDown,
moveOccupancyTypeFieldDownToBottom moveOccupancyTypeFieldDownToBottom
} from '../../database/moveOccupancyTypeField.js' } from '../../database/moveOccupancyTypeField.js'
import { import {
getAllOccupancyTypeFields, getAllOccupancyTypeFields,
getOccupancyTypes getOccupancyTypes
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeFieldId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const occupancyTypeFieldId = Number.parseInt(
request.body.occupancyTypeFieldId,
10
)
const success = const success =
request.body.moveToEnd === '1' request.body.moveToEnd === '1'
? await moveOccupancyTypeFieldDownToBottom(occupancyTypeFieldId) ? await moveOccupancyTypeFieldDownToBottom(
: await moveOccupancyTypeFieldDown(occupancyTypeFieldId) request.body.occupancyTypeFieldId
)
: await moveOccupancyTypeFieldDown(request.body.occupancyTypeFieldId)
const occupancyTypes = await getOccupancyTypes() const occupancyTypes = await getOccupancyTypes()
const allOccupancyTypeFields = await getAllOccupancyTypeFields() const allOccupancyTypeFields = await getAllOccupancyTypeFields()
@ -33,4 +33,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeFieldId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,10 +1,9 @@
import { moveOccupancyTypeFieldUp, moveOccupancyTypeFieldUpToTop } from '../../database/moveOccupancyTypeField.js'; import { moveOccupancyTypeFieldUp, moveOccupancyTypeFieldUpToTop } from '../../database/moveOccupancyTypeField.js';
import { getAllOccupancyTypeFields, getOccupancyTypes } from '../../helpers/functions.cache.js'; import { getAllOccupancyTypeFields, getOccupancyTypes } from '../../helpers/functions.cache.js';
export default async function handler(request, response) { export default async function handler(request, response) {
const occupancyTypeFieldId = Number.parseInt(request.body.occupancyTypeFieldId, 10);
const success = request.body.moveToEnd === '1' const success = request.body.moveToEnd === '1'
? await moveOccupancyTypeFieldUpToTop(occupancyTypeFieldId) ? await moveOccupancyTypeFieldUpToTop(request.body.occupancyTypeFieldId)
: await moveOccupancyTypeFieldUp(occupancyTypeFieldId); : await moveOccupancyTypeFieldUp(request.body.occupancyTypeFieldId);
const occupancyTypes = await getOccupancyTypes(); const occupancyTypes = await getOccupancyTypes();
const allOccupancyTypeFields = await getAllOccupancyTypeFields(); const allOccupancyTypeFields = await getAllOccupancyTypeFields();
response.json({ response.json({

View File

@ -4,25 +4,23 @@ import {
moveOccupancyTypeFieldUp, moveOccupancyTypeFieldUp,
moveOccupancyTypeFieldUpToTop moveOccupancyTypeFieldUpToTop
} from '../../database/moveOccupancyTypeField.js' } from '../../database/moveOccupancyTypeField.js'
import { import {
getAllOccupancyTypeFields, getAllOccupancyTypeFields,
getOccupancyTypes getOccupancyTypes
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeFieldId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const occupancyTypeFieldId = Number.parseInt(
request.body.occupancyTypeFieldId,
10
)
const success = const success =
request.body.moveToEnd === '1' request.body.moveToEnd === '1'
? await moveOccupancyTypeFieldUpToTop(occupancyTypeFieldId) ? await moveOccupancyTypeFieldUpToTop(request.body.occupancyTypeFieldId)
: await moveOccupancyTypeFieldUp(occupancyTypeFieldId) : await moveOccupancyTypeFieldUp(request.body.occupancyTypeFieldId)
const occupancyTypes = await getOccupancyTypes() const occupancyTypes = await getOccupancyTypes()
const allOccupancyTypeFields = await getAllOccupancyTypeFields() const allOccupancyTypeFields = await getAllOccupancyTypeFields()
@ -33,4 +31,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,6 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeId: string;
printEJS: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -10,7 +10,11 @@ import {
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeId: string; printEJS: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -33,4 +37,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,6 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeId: string;
printEJS: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -10,7 +10,11 @@ import {
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeId: string; printEJS: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -33,4 +37,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,16 +1,17 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { import {
getAllOccupancyTypeFields, getAllOccupancyTypeFields,
getOccupancyTypes getOccupancyTypes
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -27,4 +28,3 @@ export default async function handler(
allOccupancyTypeFields allOccupancyTypeFields
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderMilestoneTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,7 +7,11 @@ import {
import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js' import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ workOrderMilestoneTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -28,4 +32,3 @@ export default async function handler(
workOrderMilestoneTypes workOrderMilestoneTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderMilestoneTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,13 +1,14 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js' import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ workOrderMilestoneTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -28,4 +29,3 @@ export default async function handler(
workOrderMilestoneTypes workOrderMilestoneTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -7,12 +7,19 @@ import {
import { getWorkOrderTypes } from '../../helpers/functions.cache.js' import { getWorkOrderTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ workOrderTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
request.body.moveToEnd === '1' request.body.moveToEnd === '1'
? await moveRecordDownToBottom('WorkOrderTypes', request.body.workOrderTypeId) ? await moveRecordDownToBottom(
'WorkOrderTypes',
request.body.workOrderTypeId
)
: await moveRecordDown('WorkOrderTypes', request.body.workOrderTypeId) : await moveRecordDown('WorkOrderTypes', request.body.workOrderTypeId)
const workOrderTypes = await getWorkOrderTypes() const workOrderTypes = await getWorkOrderTypes()
@ -22,4 +29,3 @@ export default async function handler(
workOrderTypes workOrderTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderTypeId: string;
moveToEnd: '0' | '1';
}>, response: Response): Promise<void>;

View File

@ -1,13 +1,14 @@
import type { Request, Response } from 'express' import type { Request, Response } from 'express'
import { import { moveRecordUp, moveRecordUpToTop } from '../../database/moveRecord.js'
moveRecordUp,
moveRecordUpToTop
} from '../../database/moveRecord.js'
import { getWorkOrderTypes } from '../../helpers/functions.cache.js' import { getWorkOrderTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ workOrderTypeId: string; moveToEnd: '0' | '1' }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = const success =
@ -22,4 +23,3 @@ export default async function handler(
workOrderTypes workOrderTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotStatusId: string;
lotStatus: string;
}>, response: Response): Promise<void>;

View File

@ -4,13 +4,17 @@ import { updateRecord } from '../../database/updateRecord.js'
import { getLotStatuses } from '../../helpers/functions.cache.js' import { getLotStatuses } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ lotStatusId: string; lotStatus: string }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await updateRecord( const success = await updateRecord(
'LotStatuses', 'LotStatuses',
request.body.lotStatusId as string, request.body.lotStatusId,
request.body.lotStatus as string, request.body.lotStatus,
request.session.user as User request.session.user as User
) )

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
lotTypeId: string;
lotType: string;
}>, response: Response): Promise<void>;

View File

@ -4,13 +4,13 @@ import { updateRecord } from '../../database/updateRecord.js'
import { getLotTypes } from '../../helpers/functions.cache.js' import { getLotTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, { lotTypeId: string; lotType: string }>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await updateRecord( const success = await updateRecord(
'LotTypes', 'LotTypes',
request.body.lotTypeId as string, request.body.lotTypeId,
request.body.lotType as string, request.body.lotType,
request.session.user as User request.session.user as User
) )
@ -21,4 +21,3 @@ export default async function handler(
lotTypes lotTypes
}) })
} }

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
occupancyTypeId: string;
occupancyType: string;
}>, response: Response): Promise<void>;

View File

@ -7,13 +7,17 @@ import {
} from '../../helpers/functions.cache.js' } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ occupancyTypeId: string; occupancyType: string }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await updateRecord( const success = await updateRecord(
'OccupancyTypes', 'OccupancyTypes',
request.body.occupancyTypeId as string, request.body.occupancyTypeId,
request.body.occupancyType as string, request.body.occupancyType,
request.session.user as User request.session.user as User
) )

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderMilestoneTypeId: string;
workOrderMilestoneType: string;
}>, response: Response): Promise<void>;

View File

@ -4,13 +4,17 @@ import { updateRecord } from '../../database/updateRecord.js'
import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js' import { getWorkOrderMilestoneTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<
unknown,
unknown,
{ workOrderMilestoneTypeId: string; workOrderMilestoneType: string }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await updateRecord( const success = await updateRecord(
'WorkOrderMilestoneTypes', 'WorkOrderMilestoneTypes',
request.body.workOrderMilestoneTypeId as string, request.body.workOrderMilestoneTypeId,
request.body.workOrderMilestoneType as string, request.body.workOrderMilestoneType,
request.session.user as User request.session.user as User
) )

View File

@ -1,2 +1,5 @@
import type { Request, Response } from 'express'; import type { Request, Response } from 'express';
export default function handler(request: Request, response: Response): Promise<void>; export default function handler(request: Request<unknown, unknown, {
workOrderTypeId: string;
workOrderType: string;
}>, response: Response): Promise<void>;

View File

@ -4,13 +4,13 @@ import { updateRecord } from '../../database/updateRecord.js'
import { getWorkOrderTypes } from '../../helpers/functions.cache.js' import { getWorkOrderTypes } from '../../helpers/functions.cache.js'
export default async function handler( export default async function handler(
request: Request, request: Request<unknown, unknown, {workOrderTypeId: string; workOrderType: string}>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const success = await updateRecord( const success = await updateRecord(
'WorkOrderTypes', 'WorkOrderTypes',
request.body.workOrderTypeId as string, request.body.workOrderTypeId,
request.body.workOrderType as string, request.body.workOrderType,
request.session.user as User request.session.user as User
) )

View File

@ -1,6 +1,6 @@
import fs from 'node:fs/promises'; import fs from 'node:fs/promises';
import Debug from 'debug'; import Debug from 'debug';
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidV4 } from 'uuid';
const debug = Debug('lot-occupancy-system:functions.api'); const debug = Debug('lot-occupancy-system:functions.api');
const apiKeyPath = 'data/apiKeys.json'; const apiKeyPath = 'data/apiKeys.json';
let apiKeys; let apiKeys;
@ -23,7 +23,7 @@ async function saveApiKeys() {
} }
} }
function generateApiKey(apiKeyPrefix) { function generateApiKey(apiKeyPrefix) {
return `${apiKeyPrefix}-${uuidv4()}-${Date.now().toString()}`; return `${apiKeyPrefix}-${uuidV4()}-${Date.now().toString()}`;
} }
export async function regenerateApiKey(userName) { export async function regenerateApiKey(userName) {
apiKeys[userName] = generateApiKey(userName); apiKeys[userName] = generateApiKey(userName);

View File

@ -1,12 +1,12 @@
import fs from 'node:fs/promises' import fs from 'node:fs/promises'
import Debug from 'debug' import Debug from 'debug'
import { v4 as uuidv4 } from 'uuid' import { v4 as uuidV4 } from 'uuid'
const debug = Debug('lot-occupancy-system:functions.api') const debug = Debug('lot-occupancy-system:functions.api')
const apiKeyPath = 'data/apiKeys.json' const apiKeyPath = 'data/apiKeys.json'
let apiKeys: Record<string, string> let apiKeys: Record<string, string> | undefined
async function loadApiKeys(): Promise<void> { async function loadApiKeys(): Promise<void> {
try { try {
@ -27,7 +27,7 @@ async function saveApiKeys(): Promise<void> {
} }
function generateApiKey(apiKeyPrefix: string): string { function generateApiKey(apiKeyPrefix: string): string {
return `${apiKeyPrefix}-${uuidv4()}-${Date.now().toString()}` return `${apiKeyPrefix}-${uuidV4()}-${Date.now().toString()}`
} }
export async function regenerateApiKey(userName: string): Promise<void> { export async function regenerateApiKey(userName: string): Promise<void> {

View File

@ -1,2 +1,2 @@
export declare function authenticate(userName: string, password: string): Promise<boolean>; export declare function authenticate(userName: string | undefined, password: string | undefined): Promise<boolean>;
export declare function getSafeRedirectURL(possibleRedirectURL?: string): string; export declare function getSafeRedirectURL(possibleRedirectURL?: string): string;

View File

@ -23,8 +23,9 @@ export async function authenticate(userName, password) {
if ((userName ?? '') === '' || (password ?? '') === '') { if ((userName ?? '') === '' || (password ?? '') === '') {
return false; return false;
} }
return await authenticateViaActiveDirectory(userName, password); return await authenticateViaActiveDirectory(userName ?? '', password ?? '');
} }
/* eslint-disable @cspell/spellchecker */
const safeRedirects = new Set([ const safeRedirects = new Set([
'/admin/cleanup', '/admin/cleanup',
'/admin/fees', '/admin/fees',
@ -43,6 +44,7 @@ const safeRedirects = new Set([
'/workorders/outlook', '/workorders/outlook',
'/reports' '/reports'
]); ]);
/* eslint-enable @cspell/spellchecker */
const recordUrl = /^\/(?:maps|lots|lotoccupancies|workorders)\/\d+(?:\/edit)?$/; const recordUrl = /^\/(?:maps|lots|lotoccupancies|workorders)\/\d+(?:\/edit)?$/;
const printUrl = /^\/print\/(?:pdf|screen)\/[\d/=?A-Za-z-]+$/; const printUrl = /^\/print\/(?:pdf|screen)\/[\d/=?A-Za-z-]+$/;
export function getSafeRedirectURL(possibleRedirectURL = '') { export function getSafeRedirectURL(possibleRedirectURL = '') {

View File

@ -30,16 +30,18 @@ async function authenticateViaActiveDirectory(
} }
export async function authenticate( export async function authenticate(
userName: string, userName: string | undefined,
password: string password: string | undefined
): Promise<boolean> { ): Promise<boolean> {
if ((userName ?? '') === '' || (password ?? '') === '') { if ((userName ?? '') === '' || (password ?? '') === '') {
return false return false
} }
return await authenticateViaActiveDirectory(userName, password) return await authenticateViaActiveDirectory(userName ?? '', password ?? '')
} }
/* eslint-disable @cspell/spellchecker */
const safeRedirects = new Set([ const safeRedirects = new Set([
'/admin/cleanup', '/admin/cleanup',
'/admin/fees', '/admin/fees',
@ -59,6 +61,8 @@ const safeRedirects = new Set([
'/reports' '/reports'
]) ])
/* eslint-enable @cspell/spellchecker */
const recordUrl = /^\/(?:maps|lots|lotoccupancies|workorders)\/\d+(?:\/edit)?$/ const recordUrl = /^\/(?:maps|lots|lotoccupancies|workorders)\/\d+(?:\/edit)?$/
const printUrl = /^\/print\/(?:pdf|screen)\/[\d/=?A-Za-z-]+$/ const printUrl = /^\/print\/(?:pdf|screen)\/[\d/=?A-Za-z-]+$/

View File

@ -1,4 +1,5 @@
import { Configurator } from '@cityssm/configurator'; import { Configurator } from '@cityssm/configurator';
import { secondsToMillis } from '@cityssm/to-millis';
import { configDefaultValues } from '../data/config.defaultValues.js'; import { configDefaultValues } from '../data/config.defaultValues.js';
import { config } from '../data/config.js'; import { config } from '../data/config.js';
const configurator = new Configurator(configDefaultValues, config); const configurator = new Configurator(configDefaultValues, config);
@ -6,5 +7,5 @@ export function getConfigProperty(propertyName, fallbackValue) {
return configurator.getConfigProperty(propertyName, fallbackValue); return configurator.getConfigProperty(propertyName, fallbackValue);
} }
export const keepAliveMillis = getConfigProperty('session.doKeepAlive') export const keepAliveMillis = getConfigProperty('session.doKeepAlive')
? Math.max(getConfigProperty('session.maxAgeMillis') / 2, getConfigProperty('session.maxAgeMillis') - 10 * 60 * 1000) ? Math.max(getConfigProperty('session.maxAgeMillis') / 2, getConfigProperty('session.maxAgeMillis') - secondsToMillis(10))
: 0; : 0;

View File

@ -1,4 +1,5 @@
import { Configurator } from '@cityssm/configurator' import { Configurator } from '@cityssm/configurator'
import { secondsToMillis } from '@cityssm/to-millis'
import { configDefaultValues } from '../data/config.defaultValues.js' import { configDefaultValues } from '../data/config.defaultValues.js'
import { config } from '../data/config.js' import { config } from '../data/config.js'
@ -21,6 +22,6 @@ export function getConfigProperty<K extends keyof typeof configDefaultValues>(
export const keepAliveMillis = getConfigProperty('session.doKeepAlive') export const keepAliveMillis = getConfigProperty('session.doKeepAlive')
? Math.max( ? Math.max(
getConfigProperty('session.maxAgeMillis') / 2, getConfigProperty('session.maxAgeMillis') / 2,
getConfigProperty('session.maxAgeMillis') - 10 * 60 * 1000 getConfigProperty('session.maxAgeMillis') - secondsToMillis (10)
) )
: 0 : 0

View File

@ -1,16 +1,12 @@
export function filterOccupantsByLotOccupantType(lotOccupancy, lotOccupantType) { export function filterOccupantsByLotOccupantType(lotOccupancy, lotOccupantType) {
const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase(); const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase();
return (lotOccupancy.lotOccupancyOccupants ?? []).filter((possibleOccupant) => { return (lotOccupancy.lotOccupancyOccupants ?? []).filter((possibleOccupant) => possibleOccupant.lotOccupantType.toLowerCase() ===
return (possibleOccupant.lotOccupantType.toLowerCase() === lotOccupantTypeLowerCase);
lotOccupantTypeLowerCase);
});
} }
export function getFieldValueByOccupancyTypeField(lotOccupancy, occupancyTypeField) { export function getFieldValueByOccupancyTypeField(lotOccupancy, occupancyTypeField) {
const occupancyTypeFieldLowerCase = occupancyTypeField.toLowerCase(); const occupancyTypeFieldLowerCase = occupancyTypeField.toLowerCase();
const field = (lotOccupancy.lotOccupancyFields ?? []).find((possibleField) => { const field = (lotOccupancy.lotOccupancyFields ?? []).find((possibleField) => possibleField.occupancyTypeField.toLowerCase() ===
return (possibleField.occupancyTypeField.toLowerCase() === occupancyTypeFieldLowerCase);
occupancyTypeFieldLowerCase);
});
if (field === undefined) { if (field === undefined) {
return undefined; return undefined;
} }
@ -18,14 +14,12 @@ export function getFieldValueByOccupancyTypeField(lotOccupancy, occupancyTypeFie
} }
export function getFeesByFeeCategory(lotOccupancy, feeCategory, feeCategoryContains = false) { export function getFeesByFeeCategory(lotOccupancy, feeCategory, feeCategoryContains = false) {
const feeCategoryLowerCase = feeCategory.toLowerCase(); const feeCategoryLowerCase = feeCategory.toLowerCase();
return (lotOccupancy.lotOccupancyFees ?? []).filter((possibleFee) => { return (lotOccupancy.lotOccupancyFees ?? []).filter((possibleFee) => feeCategoryContains
return feeCategoryContains ? possibleFee.feeCategory
? possibleFee.feeCategory .toLowerCase()
.toLowerCase() .includes(feeCategoryLowerCase)
.includes(feeCategoryLowerCase) : possibleFee.feeCategory.toLowerCase() ===
: possibleFee.feeCategory.toLowerCase() === feeCategoryLowerCase);
feeCategoryLowerCase;
});
} }
export function getTransactionTotal(lotOccupancy) { export function getTransactionTotal(lotOccupancy) {
let transactionTotal = 0; let transactionTotal = 0;

View File

@ -1,4 +1,8 @@
import type { LotOccupancy, LotOccupancyFee, LotOccupancyOccupant } from '../types/recordTypes' import type {
LotOccupancy,
LotOccupancyFee,
LotOccupancyOccupant
} from '../types/recordTypes'
export function filterOccupantsByLotOccupantType( export function filterOccupantsByLotOccupantType(
lotOccupancy: LotOccupancy, lotOccupancy: LotOccupancy,
@ -7,12 +11,9 @@ export function filterOccupantsByLotOccupantType(
const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase() const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase()
return (lotOccupancy.lotOccupancyOccupants ?? []).filter( return (lotOccupancy.lotOccupancyOccupants ?? []).filter(
(possibleOccupant) => { (possibleOccupant) =>
return ( (possibleOccupant.lotOccupantType as string).toLowerCase() ===
(possibleOccupant.lotOccupantType as string).toLowerCase() === lotOccupantTypeLowerCase
lotOccupantTypeLowerCase
)
}
) )
} }
@ -23,12 +24,9 @@ export function getFieldValueByOccupancyTypeField(
const occupancyTypeFieldLowerCase = occupancyTypeField.toLowerCase() const occupancyTypeFieldLowerCase = occupancyTypeField.toLowerCase()
const field = (lotOccupancy.lotOccupancyFields ?? []).find( const field = (lotOccupancy.lotOccupancyFields ?? []).find(
(possibleField) => { (possibleField) =>
return ( (possibleField.occupancyTypeField as string).toLowerCase() ===
(possibleField.occupancyTypeField as string).toLowerCase() === occupancyTypeFieldLowerCase
occupancyTypeFieldLowerCase
)
}
) )
if (field === undefined) { if (field === undefined) {
@ -45,19 +43,17 @@ export function getFeesByFeeCategory(
): LotOccupancyFee[] { ): LotOccupancyFee[] {
const feeCategoryLowerCase = feeCategory.toLowerCase() const feeCategoryLowerCase = feeCategory.toLowerCase()
return (lotOccupancy.lotOccupancyFees ?? []).filter((possibleFee) => { return (lotOccupancy.lotOccupancyFees ?? []).filter((possibleFee) =>
return feeCategoryContains feeCategoryContains
? (possibleFee.feeCategory as string) ? (possibleFee.feeCategory as string)
.toLowerCase() .toLowerCase()
.includes(feeCategoryLowerCase) .includes(feeCategoryLowerCase)
: (possibleFee.feeCategory as string).toLowerCase() === : (possibleFee.feeCategory as string).toLowerCase() ===
feeCategoryLowerCase feeCategoryLowerCase
}) )
} }
export function getTransactionTotal( export function getTransactionTotal(lotOccupancy: LotOccupancy): number {
lotOccupancy: LotOccupancy
): number {
let transactionTotal = 0 let transactionTotal = 0
for (const transaction of lotOccupancy.lotOccupancyTransactions ?? []) { for (const transaction of lotOccupancy.lotOccupancyTransactions ?? []) {

View File

@ -1,6 +1,6 @@
import fs from 'node:fs/promises' import fs from 'node:fs/promises'
let mapSVGs: string[] let mapSVGs: string[] | undefined
export async function getMapSVGs(): Promise<string[]> { export async function getMapSVGs(): Promise<string[]> {
if (mapSVGs === undefined) { if (mapSVGs === undefined) {

View File

@ -1,11 +1,8 @@
// skipcq: JS-C1003 - Added to ReportData
import * as dateTimeFunctions from '@cityssm/utils-datetime'; import * as dateTimeFunctions from '@cityssm/utils-datetime';
import getLot from '../database/getLot.js'; import getLot from '../database/getLot.js';
import getLotOccupancy from '../database/getLotOccupancy.js'; import getLotOccupancy from '../database/getLotOccupancy.js';
import getWorkOrder from '../database/getWorkOrder.js'; import getWorkOrder from '../database/getWorkOrder.js';
// skipcq: JS-C1003 - Added to ReportData
import * as configFunctions from './functions.config.js'; import * as configFunctions from './functions.config.js';
// skipcq: JS-C1003 - Added to ReportData
import * as lotOccupancyFunctions from './functions.lotOccupancy.js'; import * as lotOccupancyFunctions from './functions.lotOccupancy.js';
const screenPrintConfigs = { const screenPrintConfigs = {
lotOccupancy: { lotOccupancy: {
@ -60,7 +57,7 @@ export async function getReportData(printConfig, requestQuery) {
if (printConfig.params.includes('lotOccupancyId') && if (printConfig.params.includes('lotOccupancyId') &&
typeof requestQuery.lotOccupancyId === 'string') { typeof requestQuery.lotOccupancyId === 'string') {
const lotOccupancy = await getLotOccupancy(requestQuery.lotOccupancyId); const lotOccupancy = await getLotOccupancy(requestQuery.lotOccupancyId);
if (lotOccupancy !== undefined && (lotOccupancy?.lotId ?? -1) !== -1) { if (lotOccupancy !== undefined && (lotOccupancy.lotId ?? -1) !== -1) {
reportData.lot = await getLot(lotOccupancy.lotId ?? -1); reportData.lot = await getLot(lotOccupancy.lotId ?? -1);
} }
reportData.lotOccupancy = lotOccupancy; reportData.lotOccupancy = lotOccupancy;

View File

@ -1,4 +1,3 @@
// skipcq: JS-C1003 - Added to ReportData
import * as dateTimeFunctions from '@cityssm/utils-datetime' import * as dateTimeFunctions from '@cityssm/utils-datetime'
import getLot from '../database/getLot.js' import getLot from '../database/getLot.js'
@ -6,9 +5,7 @@ import getLotOccupancy from '../database/getLotOccupancy.js'
import getWorkOrder from '../database/getWorkOrder.js' import getWorkOrder from '../database/getWorkOrder.js'
import type { Lot, LotOccupancy, WorkOrder } from '../types/recordTypes.js' import type { Lot, LotOccupancy, WorkOrder } from '../types/recordTypes.js'
// skipcq: JS-C1003 - Added to ReportData
import * as configFunctions from './functions.config.js' import * as configFunctions from './functions.config.js'
// skipcq: JS-C1003 - Added to ReportData
import * as lotOccupancyFunctions from './functions.lotOccupancy.js' import * as lotOccupancyFunctions from './functions.lotOccupancy.js'
interface PrintConfig { interface PrintConfig {
@ -102,7 +99,7 @@ export async function getReportData(
) { ) {
const lotOccupancy = await getLotOccupancy(requestQuery.lotOccupancyId) const lotOccupancy = await getLotOccupancy(requestQuery.lotOccupancyId)
if (lotOccupancy !== undefined && (lotOccupancy?.lotId ?? -1) !== -1) { if (lotOccupancy !== undefined && (lotOccupancy.lotId ?? -1) !== -1) {
reportData.lot = await getLot(lotOccupancy.lotId ?? -1) reportData.lot = await getLot(lotOccupancy.lotId ?? -1)
} }

View File

@ -15,7 +15,5 @@ export async function apiKeyIsValid(request) {
if (userName === undefined) { if (userName === undefined) {
return false; return false;
} }
return getConfigProperty('users.canLogin').some((currentUserName) => { return getConfigProperty('users.canLogin').some((currentUserName) => userName === currentUserName.toLowerCase());
return userName === currentUserName.toLowerCase();
});
} }

View File

@ -34,7 +34,7 @@ export async function apiKeyIsValid(request: APIRequest): Promise<boolean> {
return false return false
} }
return getConfigProperty('users.canLogin').some((currentUserName) => { return getConfigProperty('users.canLogin').some(
return userName === currentUserName.toLowerCase() (currentUserName) => userName === currentUserName.toLowerCase()
}) )
} }

View File

@ -1,3 +1,5 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @typescript-eslint/no-magic-numbers */
import Debug from 'debug'; import Debug from 'debug';
import { lotOccupancyDB as databasePath } from '../data/databasePaths.js'; import { lotOccupancyDB as databasePath } from '../data/databasePaths.js';
import addFeeCategory from '../database/addFeeCategory.js'; import addFeeCategory from '../database/addFeeCategory.js';

View File

@ -1,3 +1,6 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @typescript-eslint/no-magic-numbers */
import Debug from 'debug' import Debug from 'debug'
import { lotOccupancyDB as databasePath } from '../data/databasePaths.js' import { lotOccupancyDB as databasePath } from '../data/databasePaths.js'

View File

@ -1,3 +1,5 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @cspell/spellchecker, no-secrets/no-secrets */
import sqlite from 'better-sqlite3'; import sqlite from 'better-sqlite3';
import debug from 'debug'; import debug from 'debug';
import { lotOccupancyDB as databasePath } from '../data/databasePaths.js'; import { lotOccupancyDB as databasePath } from '../data/databasePaths.js';
@ -46,7 +48,6 @@ const createStatements = [
occupancyTypeFieldValues text, isRequired bit not null default 0, pattern varchar(100), occupancyTypeFieldValues text, isRequired bit not null default 0, pattern varchar(100),
minimumLength smallint not null default 1 check (minimumLength >= 0), maximumLength smallint not null default 100 check (maximumLength >= 0), orderNumber smallint not null default 0, ${recordColumns}, minimumLength smallint not null default 1 check (minimumLength >= 0), maximumLength smallint not null default 100 check (maximumLength >= 0), orderNumber smallint not null default 0, ${recordColumns},
foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
// eslint-disable-next-line no-secrets/no-secrets
'create index if not exists idx_occupancytypefields_ordernumber on OccupancyTypeFields (occupancyTypeId, orderNumber, occupancyTypeField)', 'create index if not exists idx_occupancytypefields_ordernumber on OccupancyTypeFields (occupancyTypeId, orderNumber, occupancyTypeField)',
`create table if not exists OccupancyTypePrints (occupancyTypeId integer not null, printEJS varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns}, primary key (occupancyTypeId, printEJS), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, `create table if not exists OccupancyTypePrints (occupancyTypeId integer not null, printEJS varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns}, primary key (occupancyTypeId, printEJS), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
'create index if not exists idx_occupancytypeprints_ordernumber on OccupancyTypePrints (occupancyTypeId, orderNumber, printEJS)', 'create index if not exists idx_occupancytypeprints_ordernumber on OccupancyTypePrints (occupancyTypeId, orderNumber, printEJS)',
@ -57,7 +58,6 @@ const createStatements = [
occupantCommentTitle varchar(50) not null default '', occupantCommentTitle varchar(50) not null default '',
orderNumber smallint not null default 0, orderNumber smallint not null default 0,
${recordColumns})`, ${recordColumns})`,
// eslint-disable-next-line no-secrets/no-secrets
'create index if not exists idx_lotoccupanttypes_ordernumber on LotOccupantTypes (orderNumber, lotOccupantType)', 'create index if not exists idx_lotoccupanttypes_ordernumber on LotOccupantTypes (orderNumber, lotOccupantType)',
`create table if not exists LotOccupancies (lotOccupancyId integer not null primary key autoincrement, occupancyTypeId integer not null, lotId integer, occupancyStartDate integer not null check (occupancyStartDate > 0), occupancyEndDate integer check (occupancyEndDate > 0), ${recordColumns}, foreign key (lotId) references Lots (lotId), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, `create table if not exists LotOccupancies (lotOccupancyId integer not null primary key autoincrement, occupancyTypeId integer not null, lotId integer, occupancyStartDate integer not null check (occupancyStartDate > 0), occupancyEndDate integer check (occupancyEndDate > 0), ${recordColumns}, foreign key (lotId) references Lots (lotId), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
`create table if not exists LotOccupancyOccupants (lotOccupancyId integer not null, lotOccupantIndex integer not null, occupantName varchar(200) not null, occupantAddress1 varchar(50), occupantAddress2 varchar(50), occupantCity varchar(20), occupantProvince varchar(2), occupantPostalCode varchar(7), occupantPhoneNumber varchar(30), occupantEmailAddress varchar(200), lotOccupantTypeId integer not null, occupantComment text not null default '', ${recordColumns}, primary key (lotOccupancyId, lotOccupantIndex), foreign key (lotOccupancyId) references LotOccupancies (lotOccupancyId), foreign key (lotOccupantTypeId) references LotOccupantTypes (lotOccupantTypeId)) without rowid`, `create table if not exists LotOccupancyOccupants (lotOccupancyId integer not null, lotOccupantIndex integer not null, occupantName varchar(200) not null, occupantAddress1 varchar(50), occupantAddress2 varchar(50), occupantCity varchar(20), occupantProvince varchar(2), occupantPostalCode varchar(7), occupantPhoneNumber varchar(30), occupantEmailAddress varchar(200), lotOccupantTypeId integer not null, occupantComment text not null default '', ${recordColumns}, primary key (lotOccupancyId, lotOccupantIndex), foreign key (lotOccupancyId) references LotOccupancies (lotOccupancyId), foreign key (lotOccupantTypeId) references LotOccupantTypes (lotOccupantTypeId)) without rowid`,

View File

@ -1,3 +1,6 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable @cspell/spellchecker, no-secrets/no-secrets */
import sqlite from 'better-sqlite3' import sqlite from 'better-sqlite3'
import debug from 'debug' import debug from 'debug'
@ -62,7 +65,6 @@ const createStatements = [
minimumLength smallint not null default 1 check (minimumLength >= 0), maximumLength smallint not null default 100 check (maximumLength >= 0), orderNumber smallint not null default 0, ${recordColumns}, minimumLength smallint not null default 1 check (minimumLength >= 0), maximumLength smallint not null default 100 check (maximumLength >= 0), orderNumber smallint not null default 0, ${recordColumns},
foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
// eslint-disable-next-line no-secrets/no-secrets
'create index if not exists idx_occupancytypefields_ordernumber on OccupancyTypeFields (occupancyTypeId, orderNumber, occupancyTypeField)', 'create index if not exists idx_occupancytypefields_ordernumber on OccupancyTypeFields (occupancyTypeId, orderNumber, occupancyTypeField)',
`create table if not exists OccupancyTypePrints (occupancyTypeId integer not null, printEJS varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns}, primary key (occupancyTypeId, printEJS), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, `create table if not exists OccupancyTypePrints (occupancyTypeId integer not null, printEJS varchar(100) not null, orderNumber smallint not null default 0, ${recordColumns}, primary key (occupancyTypeId, printEJS), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
'create index if not exists idx_occupancytypeprints_ordernumber on OccupancyTypePrints (occupancyTypeId, orderNumber, printEJS)', 'create index if not exists idx_occupancytypeprints_ordernumber on OccupancyTypePrints (occupancyTypeId, orderNumber, printEJS)',
@ -73,7 +75,7 @@ const createStatements = [
occupantCommentTitle varchar(50) not null default '', occupantCommentTitle varchar(50) not null default '',
orderNumber smallint not null default 0, orderNumber smallint not null default 0,
${recordColumns})`, ${recordColumns})`,
// eslint-disable-next-line no-secrets/no-secrets
'create index if not exists idx_lotoccupanttypes_ordernumber on LotOccupantTypes (orderNumber, lotOccupantType)', 'create index if not exists idx_lotoccupanttypes_ordernumber on LotOccupantTypes (orderNumber, lotOccupantType)',
`create table if not exists LotOccupancies (lotOccupancyId integer not null primary key autoincrement, occupancyTypeId integer not null, lotId integer, occupancyStartDate integer not null check (occupancyStartDate > 0), occupancyEndDate integer check (occupancyEndDate > 0), ${recordColumns}, foreign key (lotId) references Lots (lotId), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`, `create table if not exists LotOccupancies (lotOccupancyId integer not null primary key autoincrement, occupancyTypeId integer not null, lotId integer, occupancyStartDate integer not null check (occupancyStartDate > 0), occupancyEndDate integer check (occupancyEndDate > 0), ${recordColumns}, foreign key (lotId) references Lots (lotId), foreign key (occupancyTypeId) references OccupancyTypes (occupancyTypeId))`,
`create table if not exists LotOccupancyOccupants (lotOccupancyId integer not null, lotOccupantIndex integer not null, occupantName varchar(200) not null, occupantAddress1 varchar(50), occupantAddress2 varchar(50), occupantCity varchar(20), occupantProvince varchar(2), occupantPostalCode varchar(7), occupantPhoneNumber varchar(30), occupantEmailAddress varchar(200), lotOccupantTypeId integer not null, occupantComment text not null default '', ${recordColumns}, primary key (lotOccupancyId, lotOccupantIndex), foreign key (lotOccupancyId) references LotOccupancies (lotOccupancyId), foreign key (lotOccupantTypeId) references LotOccupantTypes (lotOccupantTypeId)) without rowid`, `create table if not exists LotOccupancyOccupants (lotOccupancyId integer not null, lotOccupantIndex integer not null, occupantName varchar(200) not null, occupantAddress1 varchar(50), occupantAddress2 varchar(50), occupantCity varchar(20), occupantProvince varchar(2), occupantPostalCode varchar(7), occupantPhoneNumber varchar(30), occupantEmailAddress varchar(200), lotOccupantTypeId integer not null, occupantComment text not null default '', ${recordColumns}, primary key (lotOccupancyId, lotOccupantIndex), foreign key (lotOccupancyId) references LotOccupancies (lotOccupancyId), foreign key (lotOccupantTypeId) references LotOccupantTypes (lotOccupantTypeId)) without rowid`,

8
package-lock.json generated
View File

@ -86,7 +86,7 @@
"gulp-sass": "^5.1.0", "gulp-sass": "^5.1.0",
"nodemon": "^3.1.7", "nodemon": "^3.1.7",
"prettier-config-cityssm": "^1.0.0", "prettier-config-cityssm": "^1.0.0",
"sass": "^1.80.4" "sass": "^1.80.5"
}, },
"engines": { "engines": {
"node": ">=18.0.0" "node": ">=18.0.0"
@ -14651,9 +14651,9 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.80.4", "version": "1.80.5",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.80.4.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.5.tgz",
"integrity": "sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==", "integrity": "sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {

View File

@ -110,6 +110,6 @@
"gulp-sass": "^5.1.0", "gulp-sass": "^5.1.0",
"nodemon": "^3.1.7", "nodemon": "^3.1.7",
"prettier-config-cityssm": "^1.0.0", "prettier-config-cityssm": "^1.0.0",
"sass": "^1.80.4" "sass": "^1.80.5"
} }
} }

View File

@ -1,6 +1,4 @@
"use strict"; "use strict";
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable unicorn/prefer-module */
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
@ -64,9 +62,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
function openEditOccupancyType(clickEvent) { function openEditOccupancyType(clickEvent) {
const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId ?? '', 10); const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId ?? '', 10);
const occupancyType = occupancyTypes.find((currentOccupancyType) => { const occupancyType = occupancyTypes.find((currentOccupancyType) => occupancyTypeId === currentOccupancyType.occupancyTypeId);
return occupancyTypeId === currentOccupancyType.occupancyTypeId;
});
let editCloseModalFunction; let editCloseModalFunction;
function doEdit(submitEvent) { function doEdit(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
@ -142,15 +138,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) { function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) {
let occupancyType; let occupancyType;
if (occupancyTypeId) { if (occupancyTypeId) {
occupancyType = occupancyTypes.find((currentOccupancyType) => { occupancyType = occupancyTypes.find((currentOccupancyType) => currentOccupancyType.occupancyTypeId === occupancyTypeId);
return currentOccupancyType.occupancyTypeId === occupancyTypeId;
});
} }
const occupancyTypeField = (occupancyType const occupancyTypeField = (occupancyType
? occupancyType.occupancyTypeFields ?? [] ? occupancyType.occupancyTypeFields ?? []
: allOccupancyTypeFields).find((currentOccupancyTypeField) => { : allOccupancyTypeFields).find((currentOccupancyTypeField) => currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId);
return (currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId);
});
let fieldTypeElement; let fieldTypeElement;
let minimumLengthElement; let minimumLengthElement;
let maximumLengthElement; let maximumLengthElement;

View File

@ -1,6 +1,3 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable unicorn/prefer-module */
import type { BulmaJS } from '@cityssm/bulma-js/types.js' import type { BulmaJS } from '@cityssm/bulma-js/types.js'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
@ -139,9 +136,10 @@ type ResponseJSON =
10 10
) )
const occupancyType = occupancyTypes.find((currentOccupancyType) => { const occupancyType = occupancyTypes.find(
return occupancyTypeId === currentOccupancyType.occupancyTypeId (currentOccupancyType) =>
}) as OccupancyType occupancyTypeId === currentOccupancyType.occupancyTypeId
) as OccupancyType
let editCloseModalFunction: () => void let editCloseModalFunction: () => void
@ -289,20 +287,20 @@ type ResponseJSON =
let occupancyType: OccupancyType | undefined let occupancyType: OccupancyType | undefined
if (occupancyTypeId) { if (occupancyTypeId) {
occupancyType = occupancyTypes.find((currentOccupancyType) => { occupancyType = occupancyTypes.find(
return currentOccupancyType.occupancyTypeId === occupancyTypeId (currentOccupancyType) =>
}) currentOccupancyType.occupancyTypeId === occupancyTypeId
)
} }
const occupancyTypeField = ( const occupancyTypeField = (
occupancyType occupancyType
? occupancyType.occupancyTypeFields ?? [] ? occupancyType.occupancyTypeFields ?? []
: allOccupancyTypeFields : allOccupancyTypeFields
).find((currentOccupancyTypeField) => { ).find(
return ( (currentOccupancyTypeField) =>
currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId
) ) as OccupancyTypeField
}) as OccupancyTypeField
let fieldTypeElement: HTMLSelectElement let fieldTypeElement: HTMLSelectElement
let minimumLengthElement: HTMLInputElement let minimumLengthElement: HTMLInputElement

View File

@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
function refreshFontAwesomeIcon(changeEvent) { function refreshFontAwesomeIcon(changeEvent) {
const inputElement = changeEvent.currentTarget; const inputElement = changeEvent.currentTarget;
const fontAwesomeIconClass = inputElement.value; const fontAwesomeIconClass = inputElement.value;
(inputElement.closest('.field')?.querySelectorAll('.button.is-static' (inputElement
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access .closest('.field')
))[1].innerHTML = ?.querySelectorAll('.button.is-static'))[1].innerHTML =
`<i class="fas fa-fw fa-${fontAwesomeIconClass}" aria-hidden="true"></i>`; `<i class="fas fa-fw fa-${fontAwesomeIconClass}" aria-hidden="true"></i>`;
} }
/** /**

View File

@ -23,10 +23,9 @@ declare const bulmaJS: BulmaJS
// eslint-disable-next-line no-unsanitized/property // eslint-disable-next-line no-unsanitized/property
;( ;(
inputElement.closest('.field')?.querySelectorAll( inputElement
'.button.is-static' .closest('.field')
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access ?.querySelectorAll('.button.is-static') as NodeListOf<HTMLButtonElement>
) as NodeListOf<HTMLButtonElement>
)[1].innerHTML = )[1].innerHTML =
`<i class="fas fa-fw fa-${fontAwesomeIconClass}" aria-hidden="true"></i>` `<i class="fas fa-fw fa-${fontAwesomeIconClass}" aria-hidden="true"></i>`
} }

View File

@ -1,4 +1,4 @@
import { type RequestHandler, Router } from 'express' import { Router } from 'express'
import handler_database from '../handlers/admin-get/database.js' import handler_database from '../handlers/admin-get/database.js'
import handler_fees from '../handlers/admin-get/fees.js' import handler_fees from '../handlers/admin-get/fees.js'
@ -72,257 +72,170 @@ export const router = Router()
* Fees * Fees
*/ */
router.get('/fees', handler_fees as RequestHandler) router.get('/fees', handler_fees)
router.post('/doAddFeeCategory', handler_doAddFeeCategory as RequestHandler) router.post('/doAddFeeCategory', handler_doAddFeeCategory)
router.post( router.post('/doUpdateFeeCategory', handler_doUpdateFeeCategory)
'/doUpdateFeeCategory',
handler_doUpdateFeeCategory as RequestHandler
)
router.post( router.post('/doMoveFeeCategoryUp', handler_doMoveFeeCategoryUp)
'/doMoveFeeCategoryUp',
handler_doMoveFeeCategoryUp as RequestHandler
)
router.post( router.post('/doMoveFeeCategoryDown', handler_doMoveFeeCategoryDown)
'/doMoveFeeCategoryDown',
handler_doMoveFeeCategoryDown as RequestHandler
)
router.post( router.post('/doDeleteFeeCategory', handler_doDeleteFeeCategory)
'/doDeleteFeeCategory',
handler_doDeleteFeeCategory as RequestHandler
)
router.post('/doAddFee', handler_doAddFee as RequestHandler) router.post('/doAddFee', handler_doAddFee)
router.post('/doUpdateFee', handler_doUpdateFee as RequestHandler) router.post('/doUpdateFee', handler_doUpdateFee)
router.post('/doUpdateFeeAmount', handler_doUpdateFeeAmount as RequestHandler) router.post('/doUpdateFeeAmount', handler_doUpdateFeeAmount)
router.post('/doMoveFeeUp', handler_doMoveFeeUp as RequestHandler) router.post('/doMoveFeeUp', handler_doMoveFeeUp)
router.post('/doMoveFeeDown', handler_doMoveFeeDown as RequestHandler) router.post('/doMoveFeeDown', handler_doMoveFeeDown)
router.post('/doDeleteFee', handler_doDeleteFee as RequestHandler) router.post('/doDeleteFee', handler_doDeleteFee)
/* /*
* Occupancy Type Management * Occupancy Type Management
*/ */
router.get('/occupancyTypes', handler_occupancyTypes as RequestHandler) router.get('/occupancyTypes', handler_occupancyTypes)
router.post('/doAddOccupancyType', handler_doAddOccupancyType as RequestHandler) router.post('/doAddOccupancyType', handler_doAddOccupancyType)
router.post( router.post('/doUpdateOccupancyType', handler_doUpdateOccupancyType)
'/doUpdateOccupancyType',
handler_doUpdateOccupancyType as RequestHandler
)
router.post( router.post('/doMoveOccupancyTypeUp', handler_doMoveOccupancyTypeUp)
'/doMoveOccupancyTypeUp',
handler_doMoveOccupancyTypeUp as RequestHandler
)
router.post( router.post('/doMoveOccupancyTypeDown', handler_doMoveOccupancyTypeDown)
'/doMoveOccupancyTypeDown',
handler_doMoveOccupancyTypeDown as RequestHandler
)
router.post( router.post('/doDeleteOccupancyType', handler_doDeleteOccupancyType)
'/doDeleteOccupancyType',
handler_doDeleteOccupancyType as RequestHandler
)
// Occupancy Type Fields // Occupancy Type Fields
router.post( router.post('/doAddOccupancyTypeField', handler_doAddOccupancyTypeField)
'/doAddOccupancyTypeField',
handler_doAddOccupancyTypeField as RequestHandler
)
router.post( router.post('/doUpdateOccupancyTypeField', handler_doUpdateOccupancyTypeField)
'/doUpdateOccupancyTypeField',
handler_doUpdateOccupancyTypeField as RequestHandler
)
router.post( router.post('/doMoveOccupancyTypeFieldUp', handler_doMoveOccupancyTypeFieldUp)
'/doMoveOccupancyTypeFieldUp',
handler_doMoveOccupancyTypeFieldUp as RequestHandler
)
router.post( router.post(
'/doMoveOccupancyTypeFieldDown', '/doMoveOccupancyTypeFieldDown',
handler_doMoveOccupancyTypeFieldDown as RequestHandler handler_doMoveOccupancyTypeFieldDown
) )
router.post( router.post('/doDeleteOccupancyTypeField', handler_doDeleteOccupancyTypeField)
'/doDeleteOccupancyTypeField',
handler_doDeleteOccupancyTypeField as RequestHandler
)
// Occupancy Type Prints // Occupancy Type Prints
router.post( router.post('/doAddOccupancyTypePrint', handler_doAddOccupancyTypePrint)
'/doAddOccupancyTypePrint',
handler_doAddOccupancyTypePrint as RequestHandler
)
router.post( router.post('/doMoveOccupancyTypePrintUp', handler_doMoveOccupancyTypePrintUp)
'/doMoveOccupancyTypePrintUp',
handler_doMoveOccupancyTypePrintUp as RequestHandler
)
router.post( router.post(
'/doMoveOccupancyTypePrintDown', '/doMoveOccupancyTypePrintDown',
handler_doMoveOccupancyTypePrintDown as RequestHandler handler_doMoveOccupancyTypePrintDown
) )
router.post( router.post('/doDeleteOccupancyTypePrint', handler_doDeleteOccupancyTypePrint)
'/doDeleteOccupancyTypePrint',
handler_doDeleteOccupancyTypePrint as RequestHandler
)
/* /*
* Lot Type Management * Lot Type Management
*/ */
router.get('/lotTypes', handler_lotTypes as RequestHandler) router.get('/lotTypes', handler_lotTypes)
router.post('/doAddLotType', handler_doAddLotType as RequestHandler) router.post('/doAddLotType', handler_doAddLotType)
router.post('/doUpdateLotType', handler_doUpdateLotType as RequestHandler) router.post('/doUpdateLotType', handler_doUpdateLotType)
router.post('/doMoveLotTypeUp', handler_doMoveLotTypeUp as RequestHandler) router.post('/doMoveLotTypeUp', handler_doMoveLotTypeUp)
router.post('/doMoveLotTypeDown', handler_doMoveLotTypeDown as RequestHandler) router.post('/doMoveLotTypeDown', handler_doMoveLotTypeDown)
router.post('/doDeleteLotType', handler_doDeleteLotType as RequestHandler) router.post('/doDeleteLotType', handler_doDeleteLotType)
// Lot Type Fields // Lot Type Fields
router.post('/doAddLotTypeField', handler_doAddLotTypeField as RequestHandler) router.post('/doAddLotTypeField', handler_doAddLotTypeField)
router.post( router.post('/doUpdateLotTypeField', handler_doUpdateLotTypeField)
'/doUpdateLotTypeField',
handler_doUpdateLotTypeField as RequestHandler
)
router.post( router.post('/doMoveLotTypeFieldUp', handler_doMoveLotTypeFieldUp)
'/doMoveLotTypeFieldUp',
handler_doMoveLotTypeFieldUp as RequestHandler
)
router.post( router.post('/doMoveLotTypeFieldDown', handler_doMoveLotTypeFieldDown)
'/doMoveLotTypeFieldDown',
handler_doMoveLotTypeFieldDown as RequestHandler
)
router.post( router.post('/doDeleteLotTypeField', handler_doDeleteLotTypeField)
'/doDeleteLotTypeField',
handler_doDeleteLotTypeField as RequestHandler
)
/* /*
* Config Tables * Config Tables
*/ */
router.get('/tables', handler_tables as RequestHandler) router.get('/tables', handler_tables)
// Config Tables - Work Order Types // Config Tables - Work Order Types
router.post('/doAddWorkOrderType', handler_doAddWorkOrderType as RequestHandler) router.post('/doAddWorkOrderType', handler_doAddWorkOrderType)
router.post( router.post('/doUpdateWorkOrderType', handler_doUpdateWorkOrderType)
'/doUpdateWorkOrderType',
handler_doUpdateWorkOrderType as RequestHandler
)
router.post( router.post('/doMoveWorkOrderTypeUp', handler_doMoveWorkOrderTypeUp)
'/doMoveWorkOrderTypeUp',
handler_doMoveWorkOrderTypeUp as RequestHandler
)
router.post( router.post('/doMoveWorkOrderTypeDown', handler_doMoveWorkOrderTypeDown)
'/doMoveWorkOrderTypeDown',
handler_doMoveWorkOrderTypeDown as RequestHandler
)
router.post( router.post('/doDeleteWorkOrderType', handler_doDeleteWorkOrderType)
'/doDeleteWorkOrderType',
handler_doDeleteWorkOrderType as RequestHandler
)
// Config Tables - Work Order Milestone Types // Config Tables - Work Order Milestone Types
router.post( router.post(
'/doAddWorkOrderMilestoneType', '/doAddWorkOrderMilestoneType',
handler_doAddWorkOrderMilestoneType as RequestHandler handler_doAddWorkOrderMilestoneType
) )
router.post( router.post(
'/doUpdateWorkOrderMilestoneType', '/doUpdateWorkOrderMilestoneType',
handler_doUpdateWorkOrderMilestoneType as RequestHandler handler_doUpdateWorkOrderMilestoneType
) )
router.post( router.post(
'/doMoveWorkOrderMilestoneTypeUp', '/doMoveWorkOrderMilestoneTypeUp',
handler_doMoveWorkOrderMilestoneTypeUp as RequestHandler handler_doMoveWorkOrderMilestoneTypeUp
) )
router.post( router.post(
'/doMoveWorkOrderMilestoneTypeDown', '/doMoveWorkOrderMilestoneTypeDown',
handler_doMoveWorkOrderMilestoneTypeDown as RequestHandler handler_doMoveWorkOrderMilestoneTypeDown
) )
router.post( router.post(
'/doDeleteWorkOrderMilestoneType', '/doDeleteWorkOrderMilestoneType',
handler_doDeleteWorkOrderMilestoneType as RequestHandler handler_doDeleteWorkOrderMilestoneType
) )
// Config Tables - Lot Statuses // Config Tables - Lot Statuses
router.post('/doAddLotStatus', handler_doAddLotStatus as RequestHandler) router.post('/doAddLotStatus', handler_doAddLotStatus)
router.post('/doUpdateLotStatus', handler_doUpdateLotStatus as RequestHandler) router.post('/doUpdateLotStatus', handler_doUpdateLotStatus)
router.post('/doMoveLotStatusUp', handler_doMoveLotStatusUp as RequestHandler) router.post('/doMoveLotStatusUp', handler_doMoveLotStatusUp)
router.post( router.post('/doMoveLotStatusDown', handler_doMoveLotStatusDown)
'/doMoveLotStatusDown',
handler_doMoveLotStatusDown as RequestHandler
)
router.post('/doDeleteLotStatus', handler_doDeleteLotStatus as RequestHandler) router.post('/doDeleteLotStatus', handler_doDeleteLotStatus)
// Config Tables - Lot Occupant Types // Config Tables - Lot Occupant Types
router.post( router.post('/doAddLotOccupantType', handler_doAddLotOccupantType)
'/doAddLotOccupantType',
handler_doAddLotOccupantType as RequestHandler
)
router.post( router.post('/doUpdateLotOccupantType', handler_doUpdateLotOccupantType)
'/doUpdateLotOccupantType',
handler_doUpdateLotOccupantType as RequestHandler
)
router.post( router.post('/doMoveLotOccupantTypeUp', handler_doMoveLotOccupantTypeUp)
'/doMoveLotOccupantTypeUp',
handler_doMoveLotOccupantTypeUp as RequestHandler
)
router.post( router.post('/doMoveLotOccupantTypeDown', handler_doMoveLotOccupantTypeDown)
'/doMoveLotOccupantTypeDown',
handler_doMoveLotOccupantTypeDown as RequestHandler
)
router.post( router.post('/doDeleteLotOccupantType', handler_doDeleteLotOccupantType)
'/doDeleteLotOccupantType',
handler_doDeleteLotOccupantType as RequestHandler
)
/* /*
* Database Maintenance * Database Maintenance
@ -330,9 +243,9 @@ router.post(
router.get('/database', handler_database) router.get('/database', handler_database)
router.post('/doBackupDatabase', handler_doBackupDatabase as RequestHandler) router.post('/doBackupDatabase', handler_doBackupDatabase)
router.post('/doCleanupDatabase', handler_doCleanupDatabase as RequestHandler) router.post('/doCleanupDatabase', handler_doCleanupDatabase)
// Ntfy Startup // Ntfy Startup

View File

@ -1,9 +1,9 @@
import { type RequestHandler, Router } from 'express' import { Router } from 'express'
import handler_milestoneICS from '../handlers/api-get/milestoneICS.js' import handler_milestoneICS from '../handlers/api-get/milestoneICS.js'
export const router = Router() export const router = Router()
router.get('/milestoneICS', handler_milestoneICS as RequestHandler) router.get('/milestoneICS', handler_milestoneICS)
export default router export default router

View File

@ -1,9 +1,9 @@
import { type RequestHandler, Router } from 'express' import { Router } from 'express'
import handler_dashboard from '../handlers/dashboard-get/dashboard.js' import handler_dashboard from '../handlers/dashboard-get/dashboard.js'
export const router = Router() export const router = Router()
router.get('/', handler_dashboard as RequestHandler) router.get('/', handler_dashboard)
export default router export default router

View File

@ -39,19 +39,13 @@ async function postHandler(request, response) {
else if (userName !== '' && passwordPlain !== '') { else if (userName !== '' && passwordPlain !== '') {
isAuthenticated = await authenticate(userName, passwordPlain); isAuthenticated = await authenticate(userName, passwordPlain);
} }
let userObject; let userObject = undefined;
if (isAuthenticated) { if (isAuthenticated) {
const userNameLowerCase = userName.toLowerCase(); const userNameLowerCase = userName.toLowerCase();
const canLogin = getConfigProperty('users.canLogin').some((currentUserName) => { const canLogin = getConfigProperty('users.canLogin').some((currentUserName) => userNameLowerCase === currentUserName.toLowerCase());
return userNameLowerCase === currentUserName.toLowerCase();
});
if (canLogin) { if (canLogin) {
const canUpdate = getConfigProperty('users.canUpdate').some((currentUserName) => { const canUpdate = getConfigProperty('users.canUpdate').some((currentUserName) => userNameLowerCase === currentUserName.toLowerCase());
return userNameLowerCase === currentUserName.toLowerCase(); const isAdmin = getConfigProperty('users.isAdmin').some((currentUserName) => userNameLowerCase === currentUserName.toLowerCase());
});
const isAdmin = getConfigProperty('users.isAdmin').some((currentUserName) => {
return userNameLowerCase === currentUserName.toLowerCase();
});
const apiKey = await getApiKey(userNameLowerCase); const apiKey = await getApiKey(userNameLowerCase);
userObject = { userObject = {
userName: userNameLowerCase, userName: userNameLowerCase,
@ -76,8 +70,5 @@ async function postHandler(request, response) {
}); });
} }
} }
router router.route('/').get(getHandler).post(postHandler);
.route('/')
.get(getHandler)
.post(postHandler);
export default router; export default router;

View File

@ -1,10 +1,5 @@
import Debug from 'debug' import Debug from 'debug'
import { import { type Request, type Response, Router } from 'express'
type Request,
type RequestHandler,
type Response,
Router
} from 'express'
import { useTestDatabases } from '../data/databasePaths.js' import { useTestDatabases } from '../data/databasePaths.js'
import { getApiKey } from '../helpers/functions.api.js' import { getApiKey } from '../helpers/functions.api.js'
@ -41,7 +36,11 @@ function getHandler(request: Request, response: Response): void {
} }
async function postHandler( async function postHandler(
request: Request, request: Request<
unknown,
unknown,
{ userName: string; password: string; redirect: string }
>,
response: Response response: Response
): Promise<void> { ): Promise<void> {
const userName = ( const userName = (
@ -72,28 +71,22 @@ async function postHandler(
isAuthenticated = await authenticate(userName, passwordPlain) isAuthenticated = await authenticate(userName, passwordPlain)
} }
let userObject: User | undefined let userObject: User | undefined = undefined
if (isAuthenticated) { if (isAuthenticated) {
const userNameLowerCase = userName.toLowerCase() const userNameLowerCase = userName.toLowerCase()
const canLogin = getConfigProperty('users.canLogin').some( const canLogin = getConfigProperty('users.canLogin').some(
(currentUserName) => { (currentUserName) => userNameLowerCase === currentUserName.toLowerCase()
return userNameLowerCase === currentUserName.toLowerCase()
}
) )
if (canLogin) { if (canLogin) {
const canUpdate = getConfigProperty('users.canUpdate').some( const canUpdate = getConfigProperty('users.canUpdate').some(
(currentUserName) => { (currentUserName) => userNameLowerCase === currentUserName.toLowerCase()
return userNameLowerCase === currentUserName.toLowerCase()
}
) )
const isAdmin = getConfigProperty('users.isAdmin').some( const isAdmin = getConfigProperty('users.isAdmin').some(
(currentUserName) => { (currentUserName) => userNameLowerCase === currentUserName.toLowerCase()
return userNameLowerCase === currentUserName.toLowerCase()
}
) )
const apiKey = await getApiKey(userNameLowerCase) const apiKey = await getApiKey(userNameLowerCase)
@ -123,9 +116,6 @@ async function postHandler(
} }
} }
router router.route('/').get(getHandler).post(postHandler)
.route('/')
.get(getHandler)
.post(postHandler as RequestHandler)
export default router export default router

View File

@ -1,4 +1,4 @@
import { type RequestHandler, Router } from 'express' import { Router } from 'express'
import handler_edit from '../handlers/lotOccupancies-get/edit.js' import handler_edit from '../handlers/lotOccupancies-get/edit.js'
import handler_new from '../handlers/lotOccupancies-get/new.js' import handler_new from '../handlers/lotOccupancies-get/new.js'
@ -33,57 +33,57 @@ export const router = Router()
// Search // Search
router.get('/', handler_search as RequestHandler) router.get('/', handler_search)
router.post( router.post(
'/doSearchLotOccupancies', '/doSearchLotOccupancies',
handler_doSearchLotOccupancies as RequestHandler handler_doSearchLotOccupancies
) )
// Create // Create
router.get('/new', updateGetHandler, handler_new as RequestHandler) router.get('/new', updateGetHandler, handler_new)
router.post( router.post(
'/doGetOccupancyTypeFields', '/doGetOccupancyTypeFields',
updatePostHandler, updatePostHandler,
handler_doGetOccupancyTypeFields as RequestHandler handler_doGetOccupancyTypeFields
) )
router.post( router.post(
'/doCreateLotOccupancy', '/doCreateLotOccupancy',
updatePostHandler, updatePostHandler,
handler_doCreateLotOccupancy as RequestHandler handler_doCreateLotOccupancy
) )
// View // View
router.get('/:lotOccupancyId', handler_view as RequestHandler) router.get('/:lotOccupancyId', handler_view)
// Edit // Edit
router.get( router.get(
'/:lotOccupancyId/edit', '/:lotOccupancyId/edit',
updateGetHandler, updateGetHandler,
handler_edit as RequestHandler handler_edit
) )
router.post( router.post(
'/doUpdateLotOccupancy', '/doUpdateLotOccupancy',
updatePostHandler, updatePostHandler,
handler_doUpdateLotOccupancy as RequestHandler handler_doUpdateLotOccupancy
) )
router.post( router.post(
'/doCopyLotOccupancy', '/doCopyLotOccupancy',
updatePostHandler, updatePostHandler,
handler_doCopyLotOccupancy as RequestHandler handler_doCopyLotOccupancy
) )
router.post( router.post(
'/doDeleteLotOccupancy', '/doDeleteLotOccupancy',
updatePostHandler, updatePostHandler,
handler_doDeleteLotOccupancy as RequestHandler handler_doDeleteLotOccupancy
) )
// Occupants // Occupants
@ -91,25 +91,25 @@ router.post(
router.post( router.post(
'/doSearchPastOccupants', '/doSearchPastOccupants',
updatePostHandler, updatePostHandler,
handler_doSearchPastOccupants as RequestHandler handler_doSearchPastOccupants
) )
router.post( router.post(
'/doAddLotOccupancyOccupant', '/doAddLotOccupancyOccupant',
updatePostHandler, updatePostHandler,
handler_doAddLotOccupancyOccupant as RequestHandler handler_doAddLotOccupancyOccupant
) )
router.post( router.post(
'/doUpdateLotOccupancyOccupant', '/doUpdateLotOccupancyOccupant',
updatePostHandler, updatePostHandler,
handler_doUpdateLotOccupancyOccupant as RequestHandler handler_doUpdateLotOccupancyOccupant
) )
router.post( router.post(
'/doDeleteLotOccupancyOccupant', '/doDeleteLotOccupancyOccupant',
updatePostHandler, updatePostHandler,
handler_doDeleteLotOccupancyOccupant as RequestHandler handler_doDeleteLotOccupancyOccupant
) )
// Comments // Comments
@ -117,19 +117,19 @@ router.post(
router.post( router.post(
'/doAddLotOccupancyComment', '/doAddLotOccupancyComment',
updatePostHandler, updatePostHandler,
handler_doAddLotOccupancyComment as RequestHandler handler_doAddLotOccupancyComment
) )
router.post( router.post(
'/doUpdateLotOccupancyComment', '/doUpdateLotOccupancyComment',
updatePostHandler, updatePostHandler,
handler_doUpdateLotOccupancyComment as RequestHandler handler_doUpdateLotOccupancyComment
) )
router.post( router.post(
'/doDeleteLotOccupancyComment', '/doDeleteLotOccupancyComment',
updatePostHandler, updatePostHandler,
handler_doDeleteLotOccupancyComment as RequestHandler handler_doDeleteLotOccupancyComment
) )
// Fees // Fees
@ -137,31 +137,31 @@ router.post(
router.post( router.post(
'/doGetFees', '/doGetFees',
updatePostHandler, updatePostHandler,
handler_doGetFees as RequestHandler handler_doGetFees
) )
router.post( router.post(
'/doAddLotOccupancyFee', '/doAddLotOccupancyFee',
updatePostHandler, updatePostHandler,
handler_doAddLotOccupancyFee as RequestHandler handler_doAddLotOccupancyFee
) )
router.post( router.post(
'/doAddLotOccupancyFeeCategory', '/doAddLotOccupancyFeeCategory',
updatePostHandler, updatePostHandler,
handler_doAddLotOccupancyFeeCategory as RequestHandler handler_doAddLotOccupancyFeeCategory
) )
router.post( router.post(
'/doUpdateLotOccupancyFeeQuantity', '/doUpdateLotOccupancyFeeQuantity',
updatePostHandler, updatePostHandler,
handler_doUpdateLotOccupancyFeeQuantity as RequestHandler handler_doUpdateLotOccupancyFeeQuantity
) )
router.post( router.post(
'/doDeleteLotOccupancyFee', '/doDeleteLotOccupancyFee',
updatePostHandler, updatePostHandler,
handler_doDeleteLotOccupancyFee as RequestHandler handler_doDeleteLotOccupancyFee
) )
// Transactions // Transactions
@ -170,26 +170,26 @@ if (getConfigProperty('settings.dynamicsGP.integrationIsEnabled')) {
router.post( router.post(
'/doGetDynamicsGPDocument', '/doGetDynamicsGPDocument',
updatePostHandler, updatePostHandler,
handler_doGetDynamicsGPDocument as RequestHandler handler_doGetDynamicsGPDocument
) )
} }
router.post( router.post(
'/doAddLotOccupancyTransaction', '/doAddLotOccupancyTransaction',
updatePostHandler, updatePostHandler,
handler_doAddLotOccupancyTransaction as RequestHandler handler_doAddLotOccupancyTransaction
) )
router.post( router.post(
'/doUpdateLotOccupancyTransaction', '/doUpdateLotOccupancyTransaction',
updatePostHandler, updatePostHandler,
handler_doUpdateLotOccupancyTransaction as RequestHandler handler_doUpdateLotOccupancyTransaction
) )
router.post( router.post(
'/doDeleteLotOccupancyTransaction', '/doDeleteLotOccupancyTransaction',
updatePostHandler, updatePostHandler,
handler_doDeleteLotOccupancyTransaction as RequestHandler handler_doDeleteLotOccupancyTransaction
) )
export default router export default router

View File

@ -1,4 +1,4 @@
import { type RequestHandler, Router } from 'express' import { Router } from 'express'
import handler_edit from '../handlers/lots-get/edit.js' import handler_edit from '../handlers/lots-get/edit.js'
import handler_new from '../handlers/lots-get/new.js' import handler_new from '../handlers/lots-get/new.js'
@ -22,64 +22,64 @@ export const router = Router()
* Lot Search * Lot Search
*/ */
router.get('/', handler_search as RequestHandler) router.get('/', handler_search)
router.post('/doSearchLots', handler_doSearchLots as RequestHandler) router.post('/doSearchLots', handler_doSearchLots)
/* /*
* Lot View / Edit * Lot View / Edit
*/ */
router.get('/new', updateGetHandler, handler_new as RequestHandler) router.get('/new', updateGetHandler, handler_new)
router.get('/:lotId', handler_view as RequestHandler) router.get('/:lotId', handler_view)
router.get('/:lotId/next', handler_next as RequestHandler) router.get('/:lotId/next', handler_next)
router.get('/:lotId/previous', handler_previous as RequestHandler) router.get('/:lotId/previous', handler_previous)
router.get('/:lotId/edit', updateGetHandler, handler_edit as RequestHandler) router.get('/:lotId/edit', updateGetHandler, handler_edit)
router.post( router.post(
'/doGetLotTypeFields', '/doGetLotTypeFields',
updatePostHandler, updatePostHandler,
handler_doGetLotTypeFields as RequestHandler handler_doGetLotTypeFields
) )
router.post( router.post(
'/doCreateLot', '/doCreateLot',
updatePostHandler, updatePostHandler,
handler_doCreateLot as RequestHandler handler_doCreateLot
) )
router.post( router.post(
'/doUpdateLot', '/doUpdateLot',
updatePostHandler, updatePostHandler,
handler_doUpdateLot as RequestHandler handler_doUpdateLot
) )
router.post( router.post(
'/doDeleteLot', '/doDeleteLot',
updatePostHandler, updatePostHandler,
handler_doDeleteLot as RequestHandler handler_doDeleteLot
) )
router.post( router.post(
'/doAddLotComment', '/doAddLotComment',
updatePostHandler, updatePostHandler,
handler_doAddLotComment as RequestHandler handler_doAddLotComment
) )
router.post( router.post(
'/doUpdateLotComment', '/doUpdateLotComment',
updatePostHandler, updatePostHandler,
handler_doUpdateLotComment as RequestHandler handler_doUpdateLotComment
) )
router.post( router.post(
'/doDeleteLotComment', '/doDeleteLotComment',
updatePostHandler, updatePostHandler,
handler_doDeleteLotComment as RequestHandler handler_doDeleteLotComment
) )
export default router export default router

Some files were not shown because too many files have changed in this diff Show More