filter search by funeral home
parent
df44ab95f7
commit
92056cf6b7
|
|
@ -12,6 +12,7 @@ export interface GetContractsFilters {
|
||||||
burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith';
|
burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith';
|
||||||
burialSiteName?: string;
|
burialSiteName?: string;
|
||||||
burialSiteTypeId?: number | string;
|
burialSiteTypeId?: number | string;
|
||||||
|
funeralHomeId?: number | string;
|
||||||
workOrderId?: number | string;
|
workOrderId?: number | string;
|
||||||
notWorkOrderId?: number | string;
|
notWorkOrderId?: number | string;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import getContractFees from './getContractFees.js';
|
||||||
import getContractInterments from './getContractInterments.js';
|
import getContractInterments from './getContractInterments.js';
|
||||||
import getContractTransactions from './getContractTransactions.js';
|
import getContractTransactions from './getContractTransactions.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
|
// eslint-disable-next-line complexity
|
||||||
function buildWhereClause(filters) {
|
function buildWhereClause(filters) {
|
||||||
let sqlWhereClause = ' where o.recordDelete_timeMillis is null';
|
let sqlWhereClause = ' where o.recordDelete_timeMillis is null';
|
||||||
const sqlParameters = [];
|
const sqlParameters = [];
|
||||||
|
|
@ -50,6 +51,10 @@ function buildWhereClause(filters) {
|
||||||
sqlWhereClause += ' and l.burialSiteTypeId = ?';
|
sqlWhereClause += ' and l.burialSiteTypeId = ?';
|
||||||
sqlParameters.push(filters.burialSiteTypeId);
|
sqlParameters.push(filters.burialSiteTypeId);
|
||||||
}
|
}
|
||||||
|
if ((filters.funeralHomeId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and o.funeralHomeId = ?';
|
||||||
|
sqlParameters.push(filters.funeralHomeId);
|
||||||
|
}
|
||||||
if ((filters.workOrderId ?? '') !== '') {
|
if ((filters.workOrderId ?? '') !== '') {
|
||||||
sqlWhereClause +=
|
sqlWhereClause +=
|
||||||
' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)';
|
' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)';
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ export interface GetContractsFilters {
|
||||||
burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith'
|
burialSiteNameSearchType?: '' | 'startsWith' | 'endsWith'
|
||||||
burialSiteName?: string
|
burialSiteName?: string
|
||||||
burialSiteTypeId?: number | string
|
burialSiteTypeId?: number | string
|
||||||
|
funeralHomeId?: number | string
|
||||||
workOrderId?: number | string
|
workOrderId?: number | string
|
||||||
notWorkOrderId?: number | string
|
notWorkOrderId?: number | string
|
||||||
}
|
}
|
||||||
|
|
@ -44,6 +45,7 @@ export interface GetContractsOptions {
|
||||||
includeTransactions: boolean
|
includeTransactions: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// eslint-disable-next-line complexity
|
||||||
function buildWhereClause(filters: GetContractsFilters): {
|
function buildWhereClause(filters: GetContractsFilters): {
|
||||||
sqlWhereClause: string
|
sqlWhereClause: string
|
||||||
sqlParameters: unknown[]
|
sqlParameters: unknown[]
|
||||||
|
|
@ -116,6 +118,11 @@ function buildWhereClause(filters: GetContractsFilters): {
|
||||||
sqlParameters.push(filters.burialSiteTypeId)
|
sqlParameters.push(filters.burialSiteTypeId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((filters.funeralHomeId ?? '') !== '') {
|
||||||
|
sqlWhereClause += ' and o.funeralHomeId = ?'
|
||||||
|
sqlParameters.push(filters.funeralHomeId)
|
||||||
|
}
|
||||||
|
|
||||||
if ((filters.workOrderId ?? '') !== '') {
|
if ((filters.workOrderId ?? '') !== '') {
|
||||||
sqlWhereClause +=
|
sqlWhereClause +=
|
||||||
' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)'
|
' and o.contractId in (select contractId from WorkOrderContracts where recordDelete_timeMillis is null and workOrderId = ?)'
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,17 @@
|
||||||
import getCemeteries from '../../database/getCemeteries.js';
|
import getCemeteries from '../../database/getCemeteries.js';
|
||||||
|
import getFuneralHomes from '../../database/getFuneralHomes.js';
|
||||||
import { getBurialSiteTypes, getContractTypes } from '../../helpers/functions.cache.js';
|
import { getBurialSiteTypes, getContractTypes } from '../../helpers/functions.cache.js';
|
||||||
export default async function handler(request, response) {
|
export default async function handler(request, response) {
|
||||||
const cemeteries = await getCemeteries();
|
const cemeteries = await getCemeteries();
|
||||||
const burialSiteTypes = await getBurialSiteTypes();
|
const burialSiteTypes = await getBurialSiteTypes();
|
||||||
const contractTypes = await getContractTypes();
|
const contractTypes = await getContractTypes();
|
||||||
|
const funeralHomes = await getFuneralHomes();
|
||||||
response.render('contract-search', {
|
response.render('contract-search', {
|
||||||
headTitle: "Contract Search",
|
headTitle: "Contract Search",
|
||||||
cemeteries,
|
cemeteries,
|
||||||
burialSiteTypes,
|
burialSiteTypes,
|
||||||
contractTypes,
|
contractTypes,
|
||||||
|
funeralHomes,
|
||||||
cemeteryId: request.query.cemeteryId
|
cemeteryId: request.query.cemeteryId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import type { Request, Response } from 'express'
|
import type { Request, Response } from 'express'
|
||||||
|
|
||||||
import getCemeteries from '../../database/getCemeteries.js'
|
import getCemeteries from '../../database/getCemeteries.js'
|
||||||
|
import getFuneralHomes from '../../database/getFuneralHomes.js'
|
||||||
import {
|
import {
|
||||||
getBurialSiteTypes,
|
getBurialSiteTypes,
|
||||||
getContractTypes
|
getContractTypes
|
||||||
|
|
@ -13,12 +14,14 @@ export default async function handler(
|
||||||
const cemeteries = await getCemeteries()
|
const cemeteries = await getCemeteries()
|
||||||
const burialSiteTypes = await getBurialSiteTypes()
|
const burialSiteTypes = await getBurialSiteTypes()
|
||||||
const contractTypes = await getContractTypes()
|
const contractTypes = await getContractTypes()
|
||||||
|
const funeralHomes = await getFuneralHomes()
|
||||||
|
|
||||||
response.render('contract-search', {
|
response.render('contract-search', {
|
||||||
headTitle: "Contract Search",
|
headTitle: "Contract Search",
|
||||||
cemeteries,
|
cemeteries,
|
||||||
burialSiteTypes,
|
burialSiteTypes,
|
||||||
contractTypes,
|
contractTypes,
|
||||||
|
funeralHomes,
|
||||||
cemeteryId: request.query.cemeteryId
|
cemeteryId: request.query.cemeteryId
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,17 +38,6 @@
|
||||||
<input id="searchFilter--limit" name="limit" type="hidden" value="100" />
|
<input id="searchFilter--limit" name="limit" type="hidden" value="100" />
|
||||||
<input id="searchFilter--offset" name="offset" type="hidden" value="0" />
|
<input id="searchFilter--offset" name="offset" type="hidden" value="0" />
|
||||||
<div class="columns">
|
<div class="columns">
|
||||||
<div class="column">
|
|
||||||
<div class="field">
|
|
||||||
<label class="label" for="searchFilter--deceasedName">Deceased Name</label>
|
|
||||||
<div class="control has-icons-left">
|
|
||||||
<input class="input" id="searchFilter--deceasedName" name="deceasedName" accesskey="f" />
|
|
||||||
<span class="icon is-small is-left">
|
|
||||||
<i class="fas fa-search" aria-hidden="true"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="searchFilter--contractTypeId">Contract Type</label>
|
<label class="label" for="searchFilter--contractTypeId">Contract Type</label>
|
||||||
|
|
@ -67,6 +56,17 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="field">
|
||||||
|
<label class="label" for="searchFilter--deceasedName">Recipient / Deceased Name</label>
|
||||||
|
<div class="control has-icons-left">
|
||||||
|
<input class="input" id="searchFilter--deceasedName" name="deceasedName" accesskey="f" />
|
||||||
|
<span class="icon is-small is-left">
|
||||||
|
<i class="fas fa-search" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="searchFilter--contractTime">Contract Time</label>
|
<label class="label" for="searchFilter--contractTime">Contract Time</label>
|
||||||
|
|
@ -108,24 +108,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="field">
|
|
||||||
<label class="label" for="searchFilter--burialSiteTypeId">Burial Site Type</label>
|
|
||||||
<div class="control has-icons-left">
|
|
||||||
<div class="select is-fullwidth">
|
|
||||||
<select id="searchFilter--burialSiteTypeId" name="burialSiteTypeId">
|
|
||||||
<option value="">(All Burial Site Types)</option>
|
|
||||||
<% for (const burialSiteType of burialSiteTypes) { %>
|
|
||||||
<option value="<%= burialSiteType.burialSiteTypeId %>"><%= burialSiteType.burialSiteType %></option>
|
|
||||||
<% } %>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<span class="icon is-small is-left">
|
|
||||||
<i class="fas fa-search" aria-hidden="true"></i>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<label class="label" for="searchFilter--burialSiteName">Burial Site</label>
|
<label class="label" for="searchFilter--burialSiteName">Burial Site</label>
|
||||||
<div class="field has-addons">
|
<div class="field has-addons">
|
||||||
<div class="control has-icons-left">
|
<div class="control has-icons-left">
|
||||||
|
|
@ -144,6 +126,48 @@
|
||||||
<input class="input" id="searchFilter--burialSiteName" name="burialSiteName" />
|
<input class="input" id="searchFilter--burialSiteName" name="burialSiteName" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="columns">
|
||||||
|
<div class="column">
|
||||||
|
<div class="field">
|
||||||
|
<label class="label" for="searchFilter--funeralHomeId">Funeral Home</label>
|
||||||
|
<div class="control has-icons-left">
|
||||||
|
<div class="select is-fullwidth">
|
||||||
|
<select id="searchFilter--funeralHomeId" name="funeralHomeId">
|
||||||
|
<option value="">(All Funeral Homes)</option>
|
||||||
|
<% for (const funeralHome of funeralHomes) { %>
|
||||||
|
<option value="<%= funeralHome.funeralHomeId %>"><%= funeralHome.funeralHomeName %></option>
|
||||||
|
<% } %>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<span class="icon is-small is-left">
|
||||||
|
<i class="fas fa-search" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div class="field">
|
||||||
|
<label class="label" for="searchFilter--burialSiteTypeId">Burial Site Type</label>
|
||||||
|
<div class="control has-icons-left">
|
||||||
|
<div class="select is-fullwidth">
|
||||||
|
<select id="searchFilter--burialSiteTypeId" name="burialSiteTypeId">
|
||||||
|
<option value="">(All Burial Site Types)</option>
|
||||||
|
<% for (const burialSiteType of burialSiteTypes) { %>
|
||||||
|
<option value="<%= burialSiteType.burialSiteTypeId %>"><%= burialSiteType.burialSiteType %></option>
|
||||||
|
<% } %>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<span class="icon is-small is-left">
|
||||||
|
<i class="fas fa-search" aria-hidden="true"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue