@hyper.software/common-helpers 1.2.4 → 1.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/services/bookingService/bookingsService.d.ts +4 -25
- package/lib/services/bookingService/bookingsService.js +114 -108
- package/lib/services/bookingService/bookingsService.js.map +1 -1
- package/lib/services/bookingService/bookingsService.test.js +152 -74
- package/lib/services/bookingService/bookingsService.test.js.map +1 -1
- package/lib/services/roomBookingServices/index.d.ts +7 -2
- package/lib/services/roomBookingServices/index.js +34 -50
- package/lib/services/roomBookingServices/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Moment } from 'moment';
|
|
2
|
+
import { BOOKING_SOURCE, IRoomBooking, IRoomTypePricePlanPricingInformation, IRoomTypePricePlanPricingRules } from '../../interfaces';
|
|
2
3
|
export declare const getBreakfastCost: (roomBooking: IRoomBooking) => number;
|
|
3
4
|
export declare const getLengthOfStayRoomBooking: (roomBooking: IRoomBooking) => number;
|
|
4
|
-
export declare const getDiscountOrIncreaseAmount: (roomBooking: IRoomBooking, bookingSource?: BOOKING_SOURCE) => number;
|
|
5
5
|
export declare const getChildrenCost: (roomBooking: IRoomBooking) => number;
|
|
6
|
+
export declare const getTotalCostForRoomBooking: (roomBooking: IRoomBooking & {
|
|
7
|
+
price?: number;
|
|
8
|
+
pricingRules?: IRoomTypePricePlanPricingRules;
|
|
9
|
+
pricingInformation?: Partial<IRoomTypePricePlanPricingInformation>;
|
|
10
|
+
}, checkinDate: Moment, checkoutDate: Moment, applyDiscount?: boolean, bookingSource?: BOOKING_SOURCE) => number;
|
|
@@ -1,37 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
6
|
+
exports.getTotalCostForRoomBooking = exports.getChildrenCost = exports.getLengthOfStayRoomBooking = exports.getBreakfastCost = void 0;
|
|
30
7
|
var moment_1 = __importDefault(require("moment"));
|
|
31
8
|
var interfaces_1 = require("../../interfaces");
|
|
32
9
|
var dateService_1 = require("../dateService/dateService");
|
|
33
10
|
var bookingsService_1 = require("../bookingService/bookingsService");
|
|
34
|
-
var
|
|
11
|
+
var helpers_1 = require("../../helpers");
|
|
35
12
|
var getBreakfastCost = function (roomBooking) {
|
|
36
13
|
var _a, _b, _c;
|
|
37
14
|
if (!(roomBooking === null || roomBooking === void 0 ? void 0 : roomBooking.breakfastIncluded)) {
|
|
@@ -50,30 +27,6 @@ var getLengthOfStayRoomBooking = function (roomBooking) {
|
|
|
50
27
|
return (0, moment_1.default)((0, dateService_1.normalizeDate)(roomBooking.checkoutDate)).diff((0, moment_1.default)((0, dateService_1.normalizeDate)(roomBooking.checkinDate)), 'days');
|
|
51
28
|
};
|
|
52
29
|
exports.getLengthOfStayRoomBooking = getLengthOfStayRoomBooking;
|
|
53
|
-
var getDiscountOrIncreaseAmount = function (roomBooking, bookingSource) {
|
|
54
|
-
var _a, _b;
|
|
55
|
-
var applicablePricingRules = (0, bookingsService_1.getApplicablePricingRules)(roomBooking, bookingSource);
|
|
56
|
-
var sortedRules = applicablePricingRules.sort(function (a, b) { return a.numberOfAdults - b.numberOfAdults; });
|
|
57
|
-
var discountOrIncrease = sortedRules.find(function (rule) { return rule.active && rule.numberOfAdults >= roomBooking.numberOfAdults; });
|
|
58
|
-
if (!discountOrIncrease) {
|
|
59
|
-
discountOrIncrease = sortedRules[sortedRules.length - 1];
|
|
60
|
-
}
|
|
61
|
-
if (!discountOrIncrease || discountOrIncrease.value === undefined) {
|
|
62
|
-
return 0;
|
|
63
|
-
}
|
|
64
|
-
var checkinDate = (0, moment_1.default)(dateService.normalizeDate(roomBooking.checkinDate));
|
|
65
|
-
var checkoutDate = (0, moment_1.default)(dateService.normalizeDate(roomBooking.checkoutDate));
|
|
66
|
-
var basePrice = (0, bookingsService_1.getBaseAccommodationCost)([roomBooking], checkinDate, checkoutDate, bookingSource) /
|
|
67
|
-
(0, exports.getLengthOfStayRoomBooking)(roomBooking);
|
|
68
|
-
if (basePrice === 0)
|
|
69
|
-
return roomBooking.pricePerNight || 0;
|
|
70
|
-
var discountAmount = discountOrIncrease.type === interfaces_1.DISCOUNT_TYPE.PERCENTAGE
|
|
71
|
-
? basePrice * (discountOrIncrease.value / 100)
|
|
72
|
-
: discountOrIncrease.value;
|
|
73
|
-
var isDiscount = roomBooking.numberOfAdults < ((_b = (_a = roomBooking.room) === null || _a === void 0 ? void 0 : _a.roomType) === null || _b === void 0 ? void 0 : _b.maxNumberOfAdults);
|
|
74
|
-
return isDiscount ? -discountAmount : discountAmount;
|
|
75
|
-
};
|
|
76
|
-
exports.getDiscountOrIncreaseAmount = getDiscountOrIncreaseAmount;
|
|
77
30
|
var getChildrenCost = function (roomBooking) {
|
|
78
31
|
var _a, _b;
|
|
79
32
|
if (!((_b = (_a = roomBooking.room) === null || _a === void 0 ? void 0 : _a.roomType) === null || _b === void 0 ? void 0 : _b.childrenRates) || !roomBooking.numberOfChildren || roomBooking.numberOfChildren === 0) {
|
|
@@ -82,7 +35,7 @@ var getChildrenCost = function (roomBooking) {
|
|
|
82
35
|
var roomType = roomBooking.room.roomType;
|
|
83
36
|
var childrenRates = roomType.childrenRates;
|
|
84
37
|
var numberOfNights = (0, exports.getLengthOfStayRoomBooking)(roomBooking);
|
|
85
|
-
var childrenAges = roomBooking.childrenAges
|
|
38
|
+
var childrenAges = Array.isArray(roomBooking.childrenAges) ? roomBooking.childrenAges : [];
|
|
86
39
|
return childrenAges.reduce(function (total, child) {
|
|
87
40
|
var _a;
|
|
88
41
|
if (child.age !== null && child.age !== undefined) {
|
|
@@ -93,4 +46,35 @@ var getChildrenCost = function (roomBooking) {
|
|
|
93
46
|
}, 0);
|
|
94
47
|
};
|
|
95
48
|
exports.getChildrenCost = getChildrenCost;
|
|
49
|
+
var getTotalCostForRoomBooking = function (roomBooking, checkinDate, checkoutDate, applyDiscount, bookingSource) {
|
|
50
|
+
var _a, _b, _c, _d, _e, _f;
|
|
51
|
+
if (!roomBooking) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
var totalCost = 0;
|
|
55
|
+
var maxNumberOfAdults = ((_b = (_a = roomBooking === null || roomBooking === void 0 ? void 0 : roomBooking.room) === null || _a === void 0 ? void 0 : _a.roomType) === null || _b === void 0 ? void 0 : _b.maxNumberOfAdults) || ((_c = roomBooking === null || roomBooking === void 0 ? void 0 : roomBooking.roomType) === null || _c === void 0 ? void 0 : _c.maxNumberOfAdults);
|
|
56
|
+
var actualNumberOfAdults = roomBooking.numberOfAdults || 1;
|
|
57
|
+
var shouldIncreasePrice = actualNumberOfAdults > maxNumberOfAdults;
|
|
58
|
+
var adjustmentFactor = shouldIncreasePrice ? 1 : -1;
|
|
59
|
+
var applicablePricingRules = (0, bookingsService_1.getApplicablePricingRules)(roomBooking, bookingSource).sort(function (a, b) { return a.numberOfAdults - b.numberOfAdults; });
|
|
60
|
+
var discountOrIncrease = applicablePricingRules.find(function (rule) { return rule.numberOfAdults >= actualNumberOfAdults; }) ||
|
|
61
|
+
applicablePricingRules[applicablePricingRules.length - 1] ||
|
|
62
|
+
null;
|
|
63
|
+
var pricingInfo = roomBooking.pricingInformation ||
|
|
64
|
+
((_f = (0, bookingsService_1.getRoomTypePricePlanByType)((_e = (_d = roomBooking === null || roomBooking === void 0 ? void 0 : roomBooking.room) === null || _d === void 0 ? void 0 : _d.roomType) === null || _e === void 0 ? void 0 : _e.rTPricePlans, bookingSource)) === null || _f === void 0 ? void 0 : _f.pricing) ||
|
|
65
|
+
{};
|
|
66
|
+
var dateKey = checkinDate.format(helpers_1.DATE_FORMATS.YYYY_MM_DD);
|
|
67
|
+
var cost = roomBooking.pricePerNight || (0, bookingsService_1.ensureValueIsNumber)(pricingInfo[dateKey]);
|
|
68
|
+
var calculation = !applyDiscount || actualNumberOfAdults === maxNumberOfAdults || !(discountOrIncrease === null || discountOrIncrease === void 0 ? void 0 : discountOrIncrease.value)
|
|
69
|
+
? cost
|
|
70
|
+
: (discountOrIncrease === null || discountOrIncrease === void 0 ? void 0 : discountOrIncrease.type) === interfaces_1.DISCOUNT_TYPE.PERCENTAGE
|
|
71
|
+
? ((100 + (discountOrIncrease === null || discountOrIncrease === void 0 ? void 0 : discountOrIncrease.value) * adjustmentFactor) / 100) * cost || 0
|
|
72
|
+
: cost + (discountOrIncrease === null || discountOrIncrease === void 0 ? void 0 : discountOrIncrease.value) * adjustmentFactor;
|
|
73
|
+
while (checkoutDate.diff(checkinDate, 'days') > 0) {
|
|
74
|
+
totalCost += calculation;
|
|
75
|
+
checkinDate.add(1, 'days');
|
|
76
|
+
}
|
|
77
|
+
return totalCost;
|
|
78
|
+
};
|
|
79
|
+
exports.getTotalCostForRoomBooking = getTotalCostForRoomBooking;
|
|
96
80
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/roomBookingServices/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/roomBookingServices/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyper.software/common-helpers",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"author": "Raul Tomescu <tomescu.raul+hyper@gmail.com>",
|
|
5
5
|
"description": "Hyper Software Common Javascript Helpers",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@babel/preset-env": "^7.23.3",
|
|
38
|
-
"@hyper.software/common-models": "^2.3.
|
|
38
|
+
"@hyper.software/common-models": "^2.3.6",
|
|
39
39
|
"@hyper.software/tslint-config": "^1.0.1",
|
|
40
40
|
"@sentry/types": "^7.77.0",
|
|
41
41
|
"@types/cookie": "^0.5.3",
|