show child cemeteries
parent
966a2fc869
commit
cd47832247
|
|
@ -1,2 +1,4 @@
|
||||||
import type { Cemetery } from '../types/recordTypes.js';
|
import type { Cemetery } from '../types/recordTypes.js';
|
||||||
export default function getCemeteries(): Promise<Cemetery[]>;
|
export default function getCemeteries(filters?: {
|
||||||
|
parentCemeteryId?: number | string;
|
||||||
|
}): Promise<Cemetery[]>;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,10 @@
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
export default async function getCemeteries() {
|
export default async function getCemeteries(filters) {
|
||||||
const database = await acquireConnection();
|
const database = await acquireConnection();
|
||||||
|
const sqlParameters = [];
|
||||||
|
if (filters?.parentCemeteryId !== undefined) {
|
||||||
|
sqlParameters.push(filters.parentCemeteryId);
|
||||||
|
}
|
||||||
const cemeteries = database
|
const cemeteries = database
|
||||||
.prepare(`select m.cemeteryId, m.cemeteryName, m.cemeteryKey, m.cemeteryDescription,
|
.prepare(`select m.cemeteryId, m.cemeteryName, m.cemeteryKey, m.cemeteryDescription,
|
||||||
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
||||||
|
|
@ -12,13 +16,14 @@ export default async function getCemeteries() {
|
||||||
left join Cemeteries p on m.parentCemeteryId = p.cemeteryId and p.recordDelete_timeMillis is null
|
left join Cemeteries p on m.parentCemeteryId = p.cemeteryId and p.recordDelete_timeMillis is null
|
||||||
left join BurialSites b on m.cemeteryId = b.cemeteryId and b.recordDelete_timeMillis is null
|
left join BurialSites b on m.cemeteryId = b.cemeteryId and b.recordDelete_timeMillis is null
|
||||||
where m.recordDelete_timeMillis is null
|
where m.recordDelete_timeMillis is null
|
||||||
|
${filters?.parentCemeteryId === undefined ? '' : 'and m.parentCemeteryId = ?'}
|
||||||
group by m.cemeteryId, m.cemeteryName, m.cemeteryDescription,
|
group by m.cemeteryId, m.cemeteryName, m.cemeteryDescription,
|
||||||
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
||||||
m.cemeteryAddress1, m.cemeteryAddress2, m.cemeteryCity, m.cemeteryProvince, m.cemeteryPostalCode,
|
m.cemeteryAddress1, m.cemeteryAddress2, m.cemeteryCity, m.cemeteryProvince, m.cemeteryPostalCode,
|
||||||
m.cemeteryPhoneNumber,
|
m.cemeteryPhoneNumber,
|
||||||
p.cemeteryId, p.cemeteryName
|
p.cemeteryId, p.cemeteryName
|
||||||
order by m.cemeteryName, m.cemeteryId`)
|
order by m.cemeteryName, m.cemeteryId`)
|
||||||
.all();
|
.all(sqlParameters);
|
||||||
database.release();
|
database.release();
|
||||||
return cemeteries;
|
return cemeteries;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,18 @@ import type { Cemetery } from '../types/recordTypes.js'
|
||||||
|
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export default async function getCemeteries(): Promise<Cemetery[]> {
|
export default async function getCemeteries(filters?: {
|
||||||
|
parentCemeteryId?: number | string
|
||||||
|
}
|
||||||
|
): Promise<Cemetery[]> {
|
||||||
const database = await acquireConnection()
|
const database = await acquireConnection()
|
||||||
|
|
||||||
|
const sqlParameters: Array<number | string> = []
|
||||||
|
|
||||||
|
if (filters?.parentCemeteryId !== undefined) {
|
||||||
|
sqlParameters.push(filters.parentCemeteryId)
|
||||||
|
}
|
||||||
|
|
||||||
const cemeteries = database
|
const cemeteries = database
|
||||||
.prepare(
|
.prepare(
|
||||||
`select m.cemeteryId, m.cemeteryName, m.cemeteryKey, m.cemeteryDescription,
|
`select m.cemeteryId, m.cemeteryName, m.cemeteryKey, m.cemeteryDescription,
|
||||||
|
|
@ -17,6 +26,7 @@ export default async function getCemeteries(): Promise<Cemetery[]> {
|
||||||
left join Cemeteries p on m.parentCemeteryId = p.cemeteryId and p.recordDelete_timeMillis is null
|
left join Cemeteries p on m.parentCemeteryId = p.cemeteryId and p.recordDelete_timeMillis is null
|
||||||
left join BurialSites b on m.cemeteryId = b.cemeteryId and b.recordDelete_timeMillis is null
|
left join BurialSites b on m.cemeteryId = b.cemeteryId and b.recordDelete_timeMillis is null
|
||||||
where m.recordDelete_timeMillis is null
|
where m.recordDelete_timeMillis is null
|
||||||
|
${filters?.parentCemeteryId === undefined ? '' : 'and m.parentCemeteryId = ?'}
|
||||||
group by m.cemeteryId, m.cemeteryName, m.cemeteryDescription,
|
group by m.cemeteryId, m.cemeteryName, m.cemeteryDescription,
|
||||||
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
m.cemeteryLatitude, m.cemeteryLongitude, m.cemeterySvg,
|
||||||
m.cemeteryAddress1, m.cemeteryAddress2, m.cemeteryCity, m.cemeteryProvince, m.cemeteryPostalCode,
|
m.cemeteryAddress1, m.cemeteryAddress2, m.cemeteryCity, m.cemeteryProvince, m.cemeteryPostalCode,
|
||||||
|
|
@ -24,7 +34,7 @@ export default async function getCemeteries(): Promise<Cemetery[]> {
|
||||||
p.cemeteryId, p.cemeteryName
|
p.cemeteryId, p.cemeteryName
|
||||||
order by m.cemeteryName, m.cemeteryId`
|
order by m.cemeteryName, m.cemeteryId`
|
||||||
)
|
)
|
||||||
.all() as Cemetery[]
|
.all(sqlParameters) as Cemetery[]
|
||||||
|
|
||||||
database.release()
|
database.release()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import getCemeteries from './getCemeteries.js';
|
||||||
import { acquireConnection } from './pool.js';
|
import { acquireConnection } from './pool.js';
|
||||||
export default async function getCemetery(cemeteryId, connectedDatabase) {
|
export default async function getCemetery(cemeteryId, connectedDatabase) {
|
||||||
return await _getCemetery('cemeteryId', cemeteryId, connectedDatabase);
|
return await _getCemetery('cemeteryId', cemeteryId, connectedDatabase);
|
||||||
|
|
@ -35,6 +36,12 @@ async function _getCemetery(keyColumn, cemeteryIdOrKey, connectedDatabase) {
|
||||||
m.recordUpdate_userName, m.recordUpdate_timeMillis,
|
m.recordUpdate_userName, m.recordUpdate_timeMillis,
|
||||||
m.recordDelete_userName, m.recordDelete_timeMillis`)
|
m.recordDelete_userName, m.recordDelete_timeMillis`)
|
||||||
.get(cemeteryIdOrKey);
|
.get(cemeteryIdOrKey);
|
||||||
|
if (cemetery !== undefined) {
|
||||||
|
cemetery.childCemeteries =
|
||||||
|
cemetery.parentCemeteryId === null
|
||||||
|
? await getCemeteries({ parentCemeteryId: cemetery.cemeteryId })
|
||||||
|
: [];
|
||||||
|
}
|
||||||
if (connectedDatabase === undefined) {
|
if (connectedDatabase === undefined) {
|
||||||
database.release();
|
database.release();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import type { PoolConnection } from 'better-sqlite-pool'
|
||||||
|
|
||||||
import type { Cemetery } from '../types/recordTypes.js'
|
import type { Cemetery } from '../types/recordTypes.js'
|
||||||
|
|
||||||
|
import getCemeteries from './getCemeteries.js'
|
||||||
import { acquireConnection } from './pool.js'
|
import { acquireConnection } from './pool.js'
|
||||||
|
|
||||||
export default async function getCemetery(
|
export default async function getCemetery(
|
||||||
|
|
@ -56,6 +57,13 @@ async function _getCemetery(
|
||||||
)
|
)
|
||||||
.get(cemeteryIdOrKey) as Cemetery | undefined
|
.get(cemeteryIdOrKey) as Cemetery | undefined
|
||||||
|
|
||||||
|
if (cemetery !== undefined) {
|
||||||
|
cemetery.childCemeteries =
|
||||||
|
cemetery.parentCemeteryId === null
|
||||||
|
? await getCemeteries({ parentCemeteryId: cemetery.cemeteryId })
|
||||||
|
: []
|
||||||
|
}
|
||||||
|
|
||||||
if (connectedDatabase === undefined) {
|
if (connectedDatabase === undefined) {
|
||||||
database.release()
|
database.release()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ export interface Cemetery extends Record {
|
||||||
cemeteryProvince: string;
|
cemeteryProvince: string;
|
||||||
cemeteryPhoneNumber: string;
|
cemeteryPhoneNumber: string;
|
||||||
burialSiteCount?: number;
|
burialSiteCount?: number;
|
||||||
|
childCemeteries?: Cemetery[];
|
||||||
}
|
}
|
||||||
export interface CommittalType extends Record {
|
export interface CommittalType extends Record {
|
||||||
committalTypeId: number;
|
committalTypeId: number;
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,7 @@ export interface Cemetery extends Record {
|
||||||
cemeteryPhoneNumber: string
|
cemeteryPhoneNumber: string
|
||||||
|
|
||||||
burialSiteCount?: number
|
burialSiteCount?: number
|
||||||
|
childCemeteries?: Cemetery[]
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface CommittalType extends Record {
|
export interface CommittalType extends Record {
|
||||||
|
|
@ -358,6 +359,7 @@ export interface FuneralHome extends Record {
|
||||||
|
|
||||||
export interface IntermentContainerType extends Record {
|
export interface IntermentContainerType extends Record {
|
||||||
intermentContainerTypeId: number
|
intermentContainerTypeId: number
|
||||||
|
|
||||||
intermentContainerType: string
|
intermentContainerType: string
|
||||||
intermentContainerTypeKey: string
|
intermentContainerTypeKey: string
|
||||||
isCremationType: boolean
|
isCremationType: boolean
|
||||||
|
|
@ -452,12 +454,14 @@ export interface WorkOrderMilestone extends Record, WorkOrder {
|
||||||
export interface WorkOrderMilestoneType extends Record {
|
export interface WorkOrderMilestoneType extends Record {
|
||||||
workOrderMilestoneTypeId: number
|
workOrderMilestoneTypeId: number
|
||||||
workOrderMilestoneType: string
|
workOrderMilestoneType: string
|
||||||
|
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface WorkOrderType extends Record {
|
export interface WorkOrderType extends Record {
|
||||||
workOrderTypeId: number
|
workOrderTypeId: number
|
||||||
workOrderType?: string
|
workOrderType?: string
|
||||||
|
|
||||||
orderNumber?: number
|
orderNumber?: number
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,19 @@
|
||||||
<%= (cemetery.parentCemeteryName ?? '') === '' ? "(No Name)" : cemetery.parentCemeteryName %>
|
<%= (cemetery.parentCemeteryName ?? '') === '' ? "(No Name)" : cemetery.parentCemeteryName %>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
<% } else if (cemetery.childCemeteries.length > 0) { %>
|
||||||
|
<div class="column">
|
||||||
|
<strong>Child Cemeteries</strong><br />
|
||||||
|
<ul>
|
||||||
|
<% for (const childCemetery of cemetery.childCemeteries) { %>
|
||||||
|
<li>
|
||||||
|
<a href="<%= urlPrefix %>/cemeteries/<%= childCemetery.cemeteryId %>">
|
||||||
|
<%= (childCemetery.cemeteryName ?? '') === '' ? "(No Name)" : childCemetery.cemeteryName %>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<% } %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue