UNPKG

@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
'use strict'; 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; }