@jonstuebe/allot-utils
Version:
Util functions for Allot
48 lines • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const date_fns_1 = require("date-fns");
const bill_1 = require("./bill");
const utils_1 = require("./utils");
function validatePayPeriod(payPeriod, bills, paychecks) {
return Object.assign(Object.assign({}, payPeriod), { bills: bills.filter((bill) => {
return bill_1.isBillInPayPeriod(bill, payPeriod);
}), paychecks: paychecks.filter((paycheck) => {
return isPaycheckInPayPeriod(paycheck, payPeriod);
}) });
}
exports.validatePayPeriod = validatePayPeriod;
function validatePayPeriods(payPeriods, bills, paychecks) {
return payPeriods.map(payPeriod => validatePayPeriod(payPeriod, bills, paychecks));
}
exports.validatePayPeriods = validatePayPeriods;
function totalIncomeInPayPeriod(payPeriod) {
return payPeriod.paychecks.reduce((acc, paycheck) => acc + paycheck.amount, 0);
}
exports.totalIncomeInPayPeriod = totalIncomeInPayPeriod;
function totalBillsInPayPeriod(payPeriod) {
return payPeriod.bills.reduce((acc, bill) => acc + bill_1.getBillAmountForPayPeriod(bill, payPeriod), 0);
}
exports.totalBillsInPayPeriod = totalBillsInPayPeriod;
function getPayPeriods(paydays) {
return paydays.map((payday, index) => {
let end = paydays[index + 1]
? date_fns_1.addDays(paydays[index + 1], -1)
: date_fns_1.addDays(payday, date_fns_1.differenceInDays(payday, paydays[index - 1]));
return {
start: payday,
end,
bills: [],
paychecks: []
};
});
}
exports.getPayPeriods = getPayPeriods;
function formatPayPeriodDate({ start, end }, formatType = "MMM do y") {
return `${date_fns_1.format(start, formatType)} - ${date_fns_1.format(end, formatType)}`;
}
exports.formatPayPeriodDate = formatPayPeriodDate;
function isPaycheckInPayPeriod(paycheck, payPeriod) {
return utils_1.isBetween(paycheck.date, payPeriod.start, payPeriod.end, true);
}
exports.isPaycheckInPayPeriod = isPaycheckInPayPeriod;
//# sourceMappingURL=payPeriod.js.map