@turnbuckle/aprs-calculator-services
Version:
Anchorpoint Risk Calculator Service.
36 lines (35 loc) • 1.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createWeightedRecoveries = void 0;
var date_and_time_module_1 = require("../../../common/date-and-time.module");
var sort_module_1 = require("../../../common/sort.module");
var hazard_rate_helper_module_1 = require("../../../common/hazard-rate-helper.module");
var create_aggregated_defaults_by_bucket_hashmap_1 = require("./create-aggregated-defaults-by-bucket-hashmap");
var sum_amount_before_date_1 = require("../../../common/sum-amount-before-date");
function createWeightedRecoveries(defaultsTable) {
(0, sort_module_1.sortByDateAndThenBucket)(defaultsTable);
if (defaultsTable.length > 0) {
var lastDate = (0, date_and_time_module_1.getEndOfMonth)(defaultsTable[defaultsTable.length - 1].date);
var maxTerms = (0, date_and_time_module_1.monthsBetweenDates)(defaultsTable[0].date, lastDate);
var output = {
buckets: (0, create_aggregated_defaults_by_bucket_hashmap_1.createAggregatedDefaultsByBucketHashmap)(defaultsTable),
recoveries: (0, hazard_rate_helper_module_1.createNumberArray)(maxTerms),
maxTerms: maxTerms,
lastDate: lastDate,
};
for (var i = 1; i < maxTerms; i++) {
var endDate = (0, date_and_time_module_1.getEndOfMonth)(lastDate, -i);
var currentBucketTotal = (0, sum_amount_before_date_1.sumAmountBeforeDate)(output.buckets[i.toString()], endDate);
var previousBucketTotal = (0, sum_amount_before_date_1.sumAmountBeforeDate)(output.buckets[(i - 1).toString()], endDate);
output.recoveries[i] = previousBucketTotal - currentBucketTotal;
}
return output;
}
else {
return {
buckets: {},
recoveries: [],
};
}
}
exports.createWeightedRecoveries = createWeightedRecoveries;