cityssm/lottery-licence-manager

View on GitHub
helpers/functions.config.js

Summary

Maintainability
A
50 mins
Test Coverage
A
95%
import { config } from "../data/config.js";
const configFallbackValues = new Map();
configFallbackValues.set("application.applicationName", "Lottery Licence System");
configFallbackValues.set("application.logoURL", "/images/bingoBalls.png");
configFallbackValues.set("application.httpPort", 3000);
configFallbackValues.set("application.useTestDatabases", false);
configFallbackValues.set("reverseProxy.disableCompression", false);
configFallbackValues.set("reverseProxy.disableEtag", false);
configFallbackValues.set("reverseProxy.urlPrefix", "");
configFallbackValues.set("session.cookieName", "lottery-licence-manager-user-sid");
configFallbackValues.set("session.secret", "cityssm/lottery-licence-manager");
configFallbackValues.set("session.maxAgeMillis", 60 * 60 * 1000);
configFallbackValues.set("session.doKeepAlive", false);
configFallbackValues.set("users.testing", []);
configFallbackValues.set("users.canLogin", ["administrator"]);
configFallbackValues.set("users.canCreate", []);
configFallbackValues.set("users.canUpdate", []);
configFallbackValues.set("users.isAdmin", ["administrator"]);
configFallbackValues.set("admin.defaultPassword", "");
configFallbackValues.set("user.createUpdateWindowMillis", 60 * 60 * 1000);
configFallbackValues.set("user.defaultProperties", {
    canCreate: false,
    canUpdate: false,
    isAdmin: false
});
configFallbackValues.set("defaults.city", "");
configFallbackValues.set("defaults.province", "ON");
configFallbackValues.set("defaults.countryCode", "CA");
configFallbackValues.set("reminders.preferredSortOrder", "date");
configFallbackValues.set("reminders.dismissingStatuses", []);
configFallbackValues.set("reminderCategories", []);
configFallbackValues.set("bankRecordTypes", [
    {
        bankRecordType: "statement",
        bankRecordTypeName: "Bank Statement"
    }, {
        bankRecordType: "cheques",
        bankRecordTypeName: "Cheques"
    }, {
        bankRecordType: "receipts",
        bankRecordTypeName: "Receipts"
    }
]);
configFallbackValues.set("licences.externalLicenceNumber.fieldLabel", "External Licence Number");
configFallbackValues.set("licences.externalLicenceNumber.newCalculation", "");
configFallbackValues.set("licences.externalLicenceNumber.isPreferredID", false);
configFallbackValues.set("licences.externalReceiptNumber.fieldLabel", "Receipt Number");
configFallbackValues.set("licences.feeCalculationFn", () => {
    return {
        fee: 10,
        message: "Using base licence fee.",
        licenceHasErrors: false
    };
});
configFallbackValues.set("licences.printTemplate", "licence-print");
configFallbackValues.set("licenceTypes", []);
configFallbackValues.set("amendments.displayCount", 5);
configFallbackValues.set("amendments.trackLicenceFeeUpdate", true);
configFallbackValues.set("amendments.trackDateTimeUpdate", true);
configFallbackValues.set("amendments.trackOrganizationUpdate", true);
configFallbackValues.set("amendments.trackLocationUpdate", true);
configFallbackValues.set("amendments.trackTicketTypeNew", true);
configFallbackValues.set("amendments.trackTicketTypeUpdate", true);
configFallbackValues.set("amendments.trackTicketTypeDelete", true);
export function getProperty(propertyName) {
    const propertyNameSplit = propertyName.split(".");
    let currentObject = config;
    for (const propertyNamePiece of propertyNameSplit) {
        if (currentObject[propertyNamePiece]) {
            currentObject = currentObject[propertyNamePiece];
        }
        else {
            return configFallbackValues.get(propertyName);
        }
    }
    return currentObject;
}
export const keepAliveMillis = getProperty("session.doKeepAlive")
    ? Math.max(getProperty("session.maxAgeMillis") / 2, getProperty("session.maxAgeMillis") - (10 * 60 * 1000))
    : 0;
const reminderTypeCache = new Map();
export const getReminderType = (reminderTypeKey) => {
    if (reminderTypeCache.size === 0) {
        for (const reminderCategory of getProperty("reminderCategories")) {
            for (const reminderType of reminderCategory.reminderTypes) {
                reminderType.reminderCategory = reminderCategory.reminderCategory;
                reminderTypeCache.set(reminderType.reminderTypeKey, reminderType);
            }
        }
    }
    return reminderTypeCache.get(reminderTypeKey);
};
const licenceTypeCache = new Map();
let licenceTypeKeyNameObject = {};
export const getLicenceType = (licenceTypeKey) => {
    if (!licenceTypeCache.has(licenceTypeKey)) {
        const licenceType = getProperty("licenceTypes")
            .find((element) => element.licenceTypeKey === licenceTypeKey);
        licenceTypeCache.set(licenceTypeKey, licenceType);
    }
    return licenceTypeCache.get(licenceTypeKey);
};
export const getLicenceTypeKeyToNameObject = () => {
    if (Object.keys(licenceTypeKeyNameObject).length === 0) {
        const list = {};
        for (const element of getProperty("licenceTypes")) {
            if (element.isActive) {
                list[element.licenceTypeKey] = element.licenceType;
            }
        }
        licenceTypeKeyNameObject = list;
    }
    return licenceTypeKeyNameObject;
};