From 92056cf6b709e103eeb89600f76fab23b1732d20 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Mon, 24 Mar 2025 12:21:55 -0400 Subject: [PATCH] filter search by funeral home --- database/getContracts.d.ts | 1 + database/getContracts.js | 5 ++ database/getContracts.ts | 7 +++ handlers/contracts-get/search.js | 3 ++ handlers/contracts-get/search.ts | 3 ++ views/contract-search.ejs | 82 +++++++++++++++++++++----------- 6 files changed, 72 insertions(+), 29 deletions(-) diff --git a/database/getContracts.d.ts b/database/getContracts.d.ts index 71fa231b..7b1bdf6d 100644 --- a/database/getContracts.d.ts +++ b/database/getContracts.d.ts @@ -12,6 +12,7 @@ export interface GetContractsFilters { burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith'; burialSiteName?: string; burialSiteTypeId?: number | string; + funeralHomeId?: number | string; workOrderId?: number | string; notWorkOrderId?: number | string; } diff --git a/database/getContracts.js b/database/getContracts.js index c31816e1..8821b3da 100644 --- a/database/getContracts.js +++ b/database/getContracts.js @@ -6,6 +6,7 @@ import getContractFees from './getContractFees.js'; import getContractInterments from './getContractInterments.js'; import getContractTransactions from './getContractTransactions.js'; import { acquireConnection } from './pool.js'; +// eslint-disable-next-line complexity function buildWhereClause(filters) { let sqlWhereClause = ' where o.recordDelete_timeMillis is null'; const sqlParameters = []; @@ -50,6 +51,10 @@ function buildWhereClause(filters) { sqlWhereClause += ' and l.burialSiteTypeId = ?'; sqlParameters.push(filters.burialSiteTypeId); } + if ((filters.funeralHomeId ?? '') !== '') { + sqlWhereClause += ' and o.funeralHomeId = ?'; + sqlParameters.push(filters.funeralHomeId); + } if ((filters.workOrderId ?? '') !== '') { sqlWhereClause += ' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)'; diff --git a/database/getContracts.ts b/database/getContracts.ts index a48948bd..13109f9e 100644 --- a/database/getContracts.ts +++ b/database/getContracts.ts @@ -31,6 +31,7 @@ export interface GetContractsFilters { burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith' burialSiteName?: string burialSiteTypeId?: number | string + funeralHomeId?: number | string workOrderId?: number | string notWorkOrderId?: number | string } @@ -44,6 +45,7 @@ export interface GetContractsOptions { includeTransactions: boolean } +// eslint-disable-next-line complexity function buildWhereClause(filters: GetContractsFilters): { sqlWhereClause: string sqlParameters: unknown[] @@ -116,6 +118,11 @@ function buildWhereClause(filters: GetContractsFilters): { sqlParameters.push(filters.burialSiteTypeId) } + if ((filters.funeralHomeId ?? '') !== '') { + sqlWhereClause += ' and o.funeralHomeId = ?' + sqlParameters.push(filters.funeralHomeId) + } + if ((filters.workOrderId ?? '') !== '') { sqlWhereClause += ' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)' diff --git a/handlers/contracts-get/search.js b/handlers/contracts-get/search.js index 1fd38083..49e7e83d 100644 --- a/handlers/contracts-get/search.js +++ b/handlers/contracts-get/search.js @@ -1,14 +1,17 @@ import getCemeteries from '../../database/getCemeteries.js'; +import getFuneralHomes from '../../database/getFuneralHomes.js'; import { getBurialSiteTypes, getContractTypes } from '../../helpers/functions.cache.js'; export default async function handler(request, response) { const cemeteries = await getCemeteries(); const burialSiteTypes = await getBurialSiteTypes(); const contractTypes = await getContractTypes(); + const funeralHomes = await getFuneralHomes(); response.render('contract-search', { headTitle: "Contract Search", cemeteries, burialSiteTypes, contractTypes, + funeralHomes, cemeteryId: request.query.cemeteryId }); } diff --git a/handlers/contracts-get/search.ts b/handlers/contracts-get/search.ts index 8671bc16..8e11dcd3 100644 --- a/handlers/contracts-get/search.ts +++ b/handlers/contracts-get/search.ts @@ -1,6 +1,7 @@ import type { Request, Response } from 'express' import getCemeteries from '../../database/getCemeteries.js' +import getFuneralHomes from '../../database/getFuneralHomes.js' import { getBurialSiteTypes, getContractTypes @@ -13,12 +14,14 @@ export default async function handler( const cemeteries = await getCemeteries() const burialSiteTypes = await getBurialSiteTypes() const contractTypes = await getContractTypes() + const funeralHomes = await getFuneralHomes() response.render('contract-search', { headTitle: "Contract Search", cemeteries, burialSiteTypes, contractTypes, + funeralHomes, cemeteryId: request.query.cemeteryId }) } diff --git a/views/contract-search.ejs b/views/contract-search.ejs index 9c6fbbbf..f06319a3 100644 --- a/views/contract-search.ejs +++ b/views/contract-search.ejs @@ -38,17 +38,6 @@
-
-
- -
- - - - -
-
-
@@ -67,6 +56,17 @@
+
+
+ +
+ + + + +
+
+
@@ -107,6 +107,47 @@
+
+ +
+
+
+ +
+ + + +
+
+ +
+
+
+ + +
+
+
+ +
+
+ +
+ + + +
+
+
@@ -126,24 +167,7 @@
- -
-
-
- -
- - - -
-
- -
-
+