sunrise-cms/helpers/functions.lotOccupancy.ts

63 lines
1.9 KiB
TypeScript

import type * as recordTypes from "../types/recordTypes";
export function filterOccupantsByLotOccupantType(
lotOccupancy: recordTypes.LotOccupancy,
lotOccupantType: string
): recordTypes.LotOccupancyOccupant[] {
const lotOccupantTypeLowerCase = lotOccupantType.toLowerCase();
const occupants = (lotOccupancy.lotOccupancyOccupants || []).filter((possibleOccupant) => {
return (
(possibleOccupant.lotOccupantType as string).toLowerCase() === lotOccupantTypeLowerCase
);
});
return occupants;
}
export function getFieldValueByOccupancyTypeField(
lotOccupancy: recordTypes.LotOccupancy,
occupancyTypeField: string
): string | undefined {
const occupancyTypeFieldLowerCase = occupancyTypeField.toLowerCase();
const field = (lotOccupancy.lotOccupancyFields || []).find((possibleField) => {
return (
(possibleField.occupancyTypeField as string).toLowerCase() ===
occupancyTypeFieldLowerCase
);
});
if (field) {
return field.lotOccupancyFieldValue;
}
return undefined;
}
export function getFeesByFeeCategory(
lotOccupancy: recordTypes.LotOccupancy,
feeCategory: string,
feeCategoryContains = false
) {
const feeCategoryLowerCase = feeCategory.toLowerCase();
const fees = (lotOccupancy.lotOccupancyFees || []).filter((possibleFee) => {
return feeCategoryContains
? (possibleFee.feeCategory as string).toLowerCase().includes(feeCategoryLowerCase)
: (possibleFee.feeCategory as string).toLowerCase() === feeCategoryLowerCase;
});
return fees;
}
export function getTransactionTotal(lotOccupancy: recordTypes.LotOccupancy) {
let transactionTotal = 0;
for (const transaction of lotOccupancy.lotOccupancyTransactions || []) {
transactionTotal += transaction.transactionAmount;
}
return transactionTotal;
}