sunrise-cms/helpers/functions.cache.js

194 lines
7.2 KiB
JavaScript

import * as configFunctions from './functions.config.js';
import { getLotOccupantTypes as getLotOccupantTypesFromDatabase } from './lotOccupancyDB/getLotOccupantTypes.js';
import { getLotStatuses as getLotStatusesFromDatabase } from './lotOccupancyDB/getLotStatuses.js';
import { getLotTypes as getLotTypesFromDatabase } from './lotOccupancyDB/getLotTypes.js';
import { getOccupancyTypes as getOccupancyTypesFromDatabase } from './lotOccupancyDB/getOccupancyTypes.js';
import { getOccupancyTypeFields as getOccupancyTypeFieldsFromDatabase } from './lotOccupancyDB/getOccupancyTypeFields.js';
import { getWorkOrderTypes as getWorkOrderTypesFromDatabase } from './lotOccupancyDB/getWorkOrderTypes.js';
import { getWorkOrderMilestoneTypes as getWorkOrderMilestoneTypesFromDatabase } from './lotOccupancyDB/getWorkOrderMilestoneTypes.js';
let lotOccupantTypes;
export function getLotOccupantTypes() {
if (lotOccupantTypes === undefined) {
lotOccupantTypes = getLotOccupantTypesFromDatabase();
}
return lotOccupantTypes;
}
export function getLotOccupantTypeById(lotOccupantTypeId) {
const cachedLotOccupantTypes = getLotOccupantTypes();
return cachedLotOccupantTypes.find((currentLotOccupantType) => {
return currentLotOccupantType.lotOccupantTypeId === lotOccupantTypeId;
});
}
export function getLotOccupantTypeByLotOccupantType(lotOccupantType) {
const cachedLotOccupantTypes = getLotOccupantTypes();
const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase();
return cachedLotOccupantTypes.find((currentLotOccupantType) => {
return (currentLotOccupantType.lotOccupantType.toLowerCase() ===
lotOccupantTypeLowerCase);
});
}
function clearLotOccupantTypesCache() {
lotOccupantTypes = undefined;
}
let lotStatuses;
export function getLotStatuses() {
if (lotStatuses === undefined) {
lotStatuses = getLotStatusesFromDatabase();
}
return lotStatuses;
}
export function getLotStatusById(lotStatusId) {
const cachedLotStatuses = getLotStatuses();
return cachedLotStatuses.find((currentLotStatus) => {
return currentLotStatus.lotStatusId === lotStatusId;
});
}
export function getLotStatusByLotStatus(lotStatus) {
const cachedLotStatuses = getLotStatuses();
const lotStatusLowerCase = lotStatus.toLowerCase();
return cachedLotStatuses.find((currentLotStatus) => {
return currentLotStatus.lotStatus.toLowerCase() === lotStatusLowerCase;
});
}
function clearLotStatusesCache() {
lotStatuses = undefined;
}
let lotTypes;
export function getLotTypes() {
if (lotTypes === undefined) {
lotTypes = getLotTypesFromDatabase();
}
return lotTypes;
}
export function getLotTypeById(lotTypeId) {
const cachedLotTypes = getLotTypes();
return cachedLotTypes.find((currentLotType) => {
return currentLotType.lotTypeId === lotTypeId;
});
}
export function getLotTypesByLotType(lotType) {
const cachedLotTypes = getLotTypes();
const lotTypeLowerCase = lotType.toLowerCase();
return cachedLotTypes.find((currentLotType) => {
return currentLotType.lotType.toLowerCase() === lotTypeLowerCase;
});
}
function clearLotTypesCache() {
lotTypes = undefined;
}
let occupancyTypes;
let allOccupancyTypeFields;
export function getOccupancyTypes() {
if (occupancyTypes === undefined) {
occupancyTypes = getOccupancyTypesFromDatabase();
}
return occupancyTypes;
}
export function getAllOccupancyTypeFields() {
if (allOccupancyTypeFields === undefined) {
allOccupancyTypeFields = getOccupancyTypeFieldsFromDatabase();
}
return allOccupancyTypeFields;
}
export function getOccupancyTypeById(occupancyTypeId) {
const cachedOccupancyTypes = getOccupancyTypes();
return cachedOccupancyTypes.find((currentOccupancyType) => {
return currentOccupancyType.occupancyTypeId === occupancyTypeId;
});
}
export function getOccupancyTypeByOccupancyType(occupancyTypeString) {
const cachedOccupancyTypes = getOccupancyTypes();
const occupancyTypeLowerCase = occupancyTypeString.toLowerCase();
return cachedOccupancyTypes.find((currentOccupancyType) => {
return (currentOccupancyType.occupancyType.toLowerCase() ===
occupancyTypeLowerCase);
});
}
export function getOccupancyTypePrintsById(occupancyTypeId) {
const occupancyType = getOccupancyTypeById(occupancyTypeId);
if (occupancyType === undefined ||
(occupancyType.occupancyTypePrints ?? []).length === 0) {
return [];
}
if (occupancyType.occupancyTypePrints.includes('*')) {
return configFunctions.getProperty('settings.lotOccupancy.prints');
}
return occupancyType.occupancyTypePrints;
}
function clearOccupancyTypesCache() {
occupancyTypes = undefined;
allOccupancyTypeFields = undefined;
}
let workOrderTypes;
export function getWorkOrderTypes() {
if (workOrderTypes === undefined) {
workOrderTypes = getWorkOrderTypesFromDatabase();
}
return workOrderTypes;
}
export function getWorkOrderTypeById(workOrderTypeId) {
const cachedWorkOrderTypes = getWorkOrderTypes();
return cachedWorkOrderTypes.find((currentWorkOrderType) => {
return currentWorkOrderType.workOrderTypeId === workOrderTypeId;
});
}
function clearWorkOrderTypesCache() {
workOrderTypes = undefined;
}
let workOrderMilestoneTypes;
export function getWorkOrderMilestoneTypes() {
if (workOrderMilestoneTypes === undefined) {
workOrderMilestoneTypes = getWorkOrderMilestoneTypesFromDatabase();
}
return workOrderMilestoneTypes;
}
export function getWorkOrderMilestoneTypeByWorkOrderMilestoneTypeId(workOrderMilestoneTypeId) {
const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes();
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => {
return (currentWorkOrderMilestoneType.workOrderMilestoneTypeId ===
workOrderMilestoneTypeId);
});
}
export function getWorkOrderMilestoneTypeByWorkOrderMilestoneType(workOrderMilestoneTypeString) {
const cachedWorkOrderMilestoneTypes = getWorkOrderMilestoneTypes();
const workOrderMilestoneTypeLowerCase = workOrderMilestoneTypeString.toLowerCase();
return cachedWorkOrderMilestoneTypes.find((currentWorkOrderMilestoneType) => {
return (currentWorkOrderMilestoneType.workOrderMilestoneType.toLowerCase() ===
workOrderMilestoneTypeLowerCase);
});
}
function clearWorkOrderMilestoneTypesCache() {
workOrderMilestoneTypes = undefined;
}
export function clearCacheByTableName(tableName) {
switch (tableName) {
case 'LotOccupantTypes': {
clearLotOccupantTypesCache();
break;
}
case 'LotStatuses': {
clearLotStatusesCache();
break;
}
case 'LotTypes':
case 'LotTypeFields': {
clearLotTypesCache();
break;
}
case 'OccupancyTypes':
case 'OccupancyTypeFields':
case 'OccupancyTypePrints': {
clearOccupancyTypesCache();
break;
}
case 'WorkOrderMilestoneTypes': {
clearWorkOrderMilestoneTypesCache();
break;
}
case 'WorkOrderTypes': {
clearWorkOrderTypesCache();
break;
}
}
}