@xiag-stc/react-basket
Version:
Order basket view: period of stay blocks containing the hotel blocks containing the room blocks; guest data forms with variations for Airline- and Airport-TO-s
108 lines (82 loc) • 3.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fromOccupancyRoom = fromOccupancyRoom;
exports.change = change;
exports.toOccupancyRoom = toOccupancyRoom;
var _accommodation = require('@stc-hotels-mys/accommodation');
// OccupancyRoom -> OccupancyConstraints -> OccupancyRoomCounts
function fromOccupancyRoom(occupancyRoom, occupancyConstraints) {
var children = 0;
var infants = 0;
var cribsLeft = occupancyConstraints.maxCribs;
if (occupancyRoom.children) {
for (var i = 0; i < occupancyRoom.children.length; i++) {
var child = occupancyRoom.children[i];
if (child.age <= 2 && cribsLeft > 0) {
infants++;
cribsLeft--;
} else {
children++;
}
}
}
return { adults: occupancyRoom.adults, children: children, infants: infants };
}
// Room -> OccupancyRoomCountsChange -> OccupancyRoomCounts
function change(_ref, theChange) {
var occupancyConstraints = _ref.roomType.occupancyConstraints,
occupancyRoomCounts = _ref.occupancyRoomCounts,
occupancyTotals = _ref.ratePlan.occupancyTotals;
var result = void 0;
if (theChange.adults) {
result = changeAdults(occupancyConstraints, occupancyRoomCounts, theChange.adults);
} else if (typeof theChange.children !== 'undefined') {
result = changeChildren(occupancyConstraints, occupancyRoomCounts, theChange.children);
} else if (typeof theChange.infants !== 'undefined') {
result = changeInfants(occupancyRoomCounts, theChange.infants);
}
var canonicalCoverage = (0, _accommodation.encodeOccupancy)(toOccupancyRoom(result));
var availableOccupancyCodes = occupancyTotals.map(function (oCost) {
return oCost.occupancyCode;
});
return (0, _accommodation.relativeOccupancyCoverage)(canonicalCoverage, availableOccupancyCodes).length > 0 ? result : occupancyRoomCounts;
}
// OccupancyRoomCounts -> OccupancyRoom
function toOccupancyRoom(_ref2) {
var adults = _ref2.adults,
children = _ref2.children,
infants = _ref2.infants;
return { adults: adults, children: arrayOfAges(6, children).concat(arrayOfAges(1, infants)) };
}
// --------------------------------------------------------------------------------------------------
// OccupancyConstraints -> OccupancyRoomCounts -> PoisitiveInteger -> OccupancyRoomCounts
function changeAdults(occupancyConstraints, orc, newCount) {
var adults = newCount;
var children = orc.children,
infants = orc.infants;
return children + newCount > occupancyConstraints.maxOccupancy ? orc : { adults: adults, children: children, infants: infants };
}
// OccupancyConstraints -> OccupancyRoomCounts -> PoisitiveInteger -> OccupancyRoomCounts
function changeChildren(occupancyConstraints, orc, newCount) {
var children = newCount;
var adults = orc.adults,
infants = orc.infants;
return adults + newCount > occupancyConstraints.maxOccupancy ? orc : { adults: adults, children: children, infants: infants };
}
// OccupancyRoomCounts -> PoisitiveInteger -> OccupancyRoomCounts
function changeInfants(orc, newCount) {
var adults = orc.adults,
children = orc.children;
var infants = newCount;
return { adults: adults, children: children, infants: infants };
}
// Integer -> Integer -> [{age: ...}]
function arrayOfAges(ageValue, count) {
var result = [];
for (var i = 0; i < count; i++) {
result.push({ age: ageValue });
}
return result;
}