@roomstay/frontend 2.1.7 → 2.1.10

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.
Files changed (112) hide show
  1. package/dist/201.bundle.js +1 -1
  2. package/dist/449.bundle.js +1 -1
  3. package/dist/535.bundle.js +2 -0
  4. package/dist/559.bundle.js +1 -1
  5. package/dist/760.bundle.js +1 -1
  6. package/dist/882.bundle.js +1 -1
  7. package/dist/main.bundle.js +1 -1
  8. package/dist/src/components/generic/Icon/Icon.d.ts +1 -0
  9. package/dist/src/components/generic/Icon/Icon.js +2 -1
  10. package/dist/src/components/generic/Icon/Icon.js.map +1 -1
  11. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.d.ts +3 -0
  12. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js +28 -0
  13. package/dist/src/components/generic/Layout/StepLayout/StepLayoutContainer.js.map +1 -0
  14. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.d.ts +3 -0
  15. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js +25 -0
  16. package/dist/src/components/generic/Layout/StepLayout/StepLayoutLeftContent.js.map +1 -0
  17. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.d.ts +3 -0
  18. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js +25 -0
  19. package/dist/src/components/generic/Layout/StepLayout/StepLayoutRightContent.js.map +1 -0
  20. package/dist/src/components/generic/Layout/StepLayout/index.d.ts +3 -0
  21. package/dist/src/components/generic/Layout/StepLayout/index.js +13 -0
  22. package/dist/src/components/generic/Layout/StepLayout/index.js.map +1 -0
  23. package/dist/src/components/generic/date/DatePicker.js +10 -11
  24. package/dist/src/components/generic/date/DatePicker.js.map +1 -1
  25. package/dist/src/components/steps/addons/AddonList.js +32 -12
  26. package/dist/src/components/steps/addons/AddonList.js.map +1 -1
  27. package/dist/src/components/steps/hotel/HotelCard.js +24 -11
  28. package/dist/src/components/steps/hotel/HotelCard.js.map +1 -1
  29. package/dist/src/components/summary/BESummaryAddonRow.js +4 -3
  30. package/dist/src/components/summary/BESummaryAddonRow.js.map +1 -1
  31. package/dist/src/contexts/BasketContext/BasketContextType.d.ts +1 -0
  32. package/dist/src/contexts/BasketContext/BasketContextType.js.map +1 -1
  33. package/dist/src/contexts/BasketContext/BasketContextWrapper.js +38 -8
  34. package/dist/src/contexts/BasketContext/BasketContextWrapper.js.map +1 -1
  35. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js +1 -0
  36. package/dist/src/contexts/ConfirmationStepContext/ConfirmationStepContextWrapper.js.map +1 -1
  37. package/dist/src/index.d.ts +1 -0
  38. package/dist/src/index.js +3 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/models/Addon/Addon.d.ts +1 -0
  41. package/dist/src/models/Addon/Addon.js +10 -1
  42. package/dist/src/models/Addon/Addon.js.map +1 -1
  43. package/dist/src/models/BasketAddonRow.js +26 -19
  44. package/dist/src/models/BasketAddonRow.js.map +1 -1
  45. package/dist/src/pages/findReservation/ReservationRow.js +4 -6
  46. package/dist/src/pages/findReservation/ReservationRow.js.map +1 -1
  47. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js +32 -9
  48. package/dist/src/pages/steps/StepAddon/StepAddonComponent.js.map +1 -1
  49. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js +45 -44
  50. package/dist/src/pages/steps/StepAddon/StepAddonLoader.js.map +1 -1
  51. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js +35 -12
  52. package/dist/src/pages/steps/StepConfirmation/StepConfirmationComponent.js.map +1 -1
  53. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js +10 -10
  54. package/dist/src/pages/steps/StepConfirmation/StepConfirmationLoader.js.map +1 -1
  55. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js +33 -33
  56. package/dist/src/pages/steps/StepRoom/StepRoomComponent.js.map +1 -1
  57. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js +10 -10
  58. package/dist/src/pages/steps/StepRoom/StepRoomLoader.js.map +1 -1
  59. package/dist/src/providers/FeatureProvider.js +2 -0
  60. package/dist/src/providers/FeatureProvider.js.map +1 -1
  61. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.d.ts +6 -0
  62. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js +10 -0
  63. package/dist/src/providers/feature/FullPageEngineSmallSpacingFeature.js.map +1 -0
  64. package/dist/src/reducers/BasketReducer.d.ts +2 -1
  65. package/dist/src/reducers/BasketReducer.js +7 -0
  66. package/dist/src/reducers/BasketReducer.js.map +1 -1
  67. package/dist/src/util/TotalCalculator.js +7 -1
  68. package/dist/src/util/TotalCalculator.js.map +1 -1
  69. package/dist/test.bundle.js +1 -1
  70. package/dist/vendors.bundle.js +1 -1
  71. package/package.json +1 -1
  72. package/dist/399.bundle.js +0 -2
  73. package/dist/tests/jest/engines/RoomstayThemeEngine.test.d.ts +0 -1
  74. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js +0 -41
  75. package/dist/tests/jest/engines/RoomstayThemeEngine.test.js.map +0 -1
  76. package/dist/tests/jest/events/EventManager.test.d.ts +0 -1
  77. package/dist/tests/jest/events/EventManager.test.js +0 -101
  78. package/dist/tests/jest/events/EventManager.test.js.map +0 -1
  79. package/dist/tests/jest/helpers/ObjectHelper.test.d.ts +0 -1
  80. package/dist/tests/jest/helpers/ObjectHelper.test.js +0 -72
  81. package/dist/tests/jest/helpers/ObjectHelper.test.js.map +0 -1
  82. package/dist/tests/jest/models/RoomRate.test.d.ts +0 -1
  83. package/dist/tests/jest/models/RoomRate.test.js +0 -133
  84. package/dist/tests/jest/models/RoomRate.test.js.map +0 -1
  85. package/dist/tests/jest/providers/LanguageProvider.test.d.ts +0 -1
  86. package/dist/tests/jest/providers/LanguageProvider.test.js +0 -32
  87. package/dist/tests/jest/providers/LanguageProvider.test.js.map +0 -1
  88. package/dist/tests/jest/providers/SessionProvider.test.d.ts +0 -1
  89. package/dist/tests/jest/providers/SessionProvider.test.js +0 -230
  90. package/dist/tests/jest/providers/SessionProvider.test.js.map +0 -1
  91. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.d.ts +0 -1
  92. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js +0 -126
  93. package/dist/tests/jest/providers/storage/LocalStorageProvider.test.js.map +0 -1
  94. package/dist/tests/jest/reducers/BasketReducer.test.d.ts +0 -1
  95. package/dist/tests/jest/reducers/BasketReducer.test.js +0 -103
  96. package/dist/tests/jest/reducers/BasketReducer.test.js.map +0 -1
  97. package/dist/tests/offline/RoomstayBestRateAlert.d.ts +0 -1
  98. package/dist/tests/offline/RoomstayBestRateAlert.js +0 -48
  99. package/dist/tests/offline/RoomstayBestRateAlert.js.map +0 -1
  100. package/dist/tests/offline/entry/ReactWrapper.d.ts +0 -1
  101. package/dist/tests/offline/entry/ReactWrapper.js +0 -136
  102. package/dist/tests/offline/entry/ReactWrapper.js.map +0 -1
  103. package/dist/tests/offline/entry/allEngines.d.ts +0 -1
  104. package/dist/tests/offline/entry/allEngines.js +0 -50
  105. package/dist/tests/offline/entry/allEngines.js.map +0 -1
  106. package/dist/tests/offline/entry/components/TestPicker.d.ts +0 -1
  107. package/dist/tests/offline/entry/components/TestPicker.js +0 -156
  108. package/dist/tests/offline/entry/components/TestPicker.js.map +0 -1
  109. package/dist/tests/setupTests.d.ts +0 -0
  110. package/dist/tests/setupTests.js +0 -12
  111. package/dist/tests/setupTests.js.map +0 -1
  112. /package/dist/{399.bundle.js.LICENSE.txt → 535.bundle.js.LICENSE.txt} +0 -0
@@ -0,0 +1,6 @@
1
+ import { Feature } from './Feature';
2
+ declare class FullPageEngineSmallSpacingFeature extends Feature {
3
+ constructor();
4
+ }
5
+ declare const _default: FullPageEngineSmallSpacingFeature;
6
+ export default _default;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Feature_1 = require("./Feature");
4
+ class FullPageEngineSmallSpacingFeature extends Feature_1.Feature {
5
+ constructor() {
6
+ super('FullPageEngineSmallSpacingFeature');
7
+ }
8
+ }
9
+ exports.default = new FullPageEngineSmallSpacingFeature();
10
+ //# sourceMappingURL=FullPageEngineSmallSpacingFeature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FullPageEngineSmallSpacingFeature.js","sourceRoot":"/","sources":["src/providers/feature/FullPageEngineSmallSpacingFeature.ts"],"names":[],"mappings":";;AAAA,yDAAsD;AAEtD,MAAM,iCAAkC,SAAQ,iBAAO;IACnD;QACI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC/C,CAAC;CACJ;AAED,kBAAe,IAAI,iCAAiC,EAAE,CAAC","sourcesContent":["import { Feature } from '@/providers/feature/Feature';\n\nclass FullPageEngineSmallSpacingFeature extends Feature {\n public constructor() {\n super('FullPageEngineSmallSpacingFeature');\n }\n}\n\nexport default new FullPageEngineSmallSpacingFeature();\n"]}
@@ -1,8 +1,9 @@
1
1
  import BasketRow from '../models/BasketRow';
2
2
  import { RoomRate } from '../models/Room/RoomRate';
3
3
  export type BasketReducerType = {
4
- method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate';
4
+ method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate' | 'Init';
5
5
  row?: BasketRow;
6
6
  rate?: RoomRate;
7
+ rows?: BasketRow[];
7
8
  };
8
9
  export declare const BasketReducer: (rows: BasketRow[], action: BasketReducerType) => BasketRow[];
@@ -9,6 +9,7 @@ const RemoveFromCartEvent_1 = require("../events/actions/RemoveFromCartEvent");
9
9
  const RoomstayEventManager_1 = __importDefault(require("../events/RoomstayEventManager"));
10
10
  const events_1 = require("../events/index.js");
11
11
  const BasketReducer = (rows, action) => {
12
+ var _a;
12
13
  const checkAndSetRowDates = (row) => {
13
14
  if (!row.getStartDate()) {
14
15
  row.setStartDate((0, dayjs_1.default)('now'));
@@ -75,6 +76,12 @@ const BasketReducer = (rows, action) => {
75
76
  });
76
77
  }
77
78
  return rows;
79
+ case 'Init': {
80
+ if ((_a = action.rows) === null || _a === void 0 ? void 0 : _a.length) {
81
+ action.rows.forEach((row) => checkAndSetRowDates(row));
82
+ }
83
+ return action.rows || [];
84
+ }
78
85
  }
79
86
  };
80
87
  exports.BasketReducer = BasketReducer;
@@ -1 +1 @@
1
- {"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '@/models/BasketRow';\nimport dayjs from 'dayjs';\nimport { RemoveFromCartEvent } from '@/events/actions/RemoveFromCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { AddToCartEvent } from '@frontend/events';\n\nexport type BasketReducerType = {\n method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate';\n row?: BasketRow;\n rate?: RoomRate;\n};\n\nexport const BasketReducer = (rows: BasketRow[], action: BasketReducerType): BasketRow[] => {\n const checkAndSetRowDates = (row: BasketRow) => {\n if (!row.getStartDate()) {\n row.setStartDate(dayjs('now'));\n }\n\n if (!row.getEndDate()) {\n row.setEndDate(dayjs('now').add(1, 'day'));\n }\n };\n\n switch (action.method) {\n case 'Add':\n if (action.row) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n return [...rows, row];\n }\n return rows;\n case 'AddRate':\n if (action.row && action.rate) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n row.setRate(action.rate);\n\n let hasRowIncluded = false;\n // Let us loop through all of our rows and see if it's in array\n // if target row isn't included, we'll add it to the end.\n const newRows = rows.map((mappedRow) => {\n if (mappedRow.getID() === action.row?.getID()) {\n hasRowIncluded = true;\n return action.row;\n } else {\n return mappedRow;\n }\n });\n\n if (!hasRowIncluded) {\n newRows.push(row);\n }\n\n // Reason we raise this event here, and not in the reducer for example is\n // this is the only sure way we can trust a room is being added to the cart\n const addToCartEvent = new AddToCartEvent(row, newRows);\n RoomstayEventManager.raise(addToCartEvent);\n\n return [...newRows];\n }\n\n return rows;\n case 'Remove':\n if (action.row) {\n const newRows = rows.filter((item) => item.getID() !== action.row?.getID());\n\n const removeFromCartEvent = new RemoveFromCartEvent(action.row, newRows);\n RoomstayEventManager.raise(removeFromCartEvent);\n\n return newRows;\n }\n\n return rows;\n case 'Clear':\n return [];\n case 'Update':\n if (action.row) {\n return rows.map((row) => {\n if (row.getID() === (action.row as BasketRow).getID()) {\n return action.row as BasketRow;\n } else {\n return row;\n }\n });\n }\n\n return rows;\n }\n};\n"]}
1
+ {"version":3,"file":"BasketReducer.js","sourceRoot":"/","sources":["src/reducers/BasketReducer.ts"],"names":[],"mappings":"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","sourcesContent":["import BasketRow from '@/models/BasketRow';\nimport dayjs from 'dayjs';\nimport { RemoveFromCartEvent } from '@/events/actions/RemoveFromCartEvent';\nimport RoomstayEventManager from '@/events/RoomstayEventManager';\nimport { RoomRate } from '@/models/Room/RoomRate';\nimport { AddToCartEvent } from '@frontend/events';\n\nexport type BasketReducerType = {\n method: 'Add' | 'Remove' | 'Update' | 'Clear' | 'AddRate' | 'Init';\n row?: BasketRow;\n rate?: RoomRate;\n rows?: BasketRow[];\n};\n\nexport const BasketReducer = (rows: BasketRow[], action: BasketReducerType): BasketRow[] => {\n const checkAndSetRowDates = (row: BasketRow) => {\n if (!row.getStartDate()) {\n row.setStartDate(dayjs('now'));\n }\n\n if (!row.getEndDate()) {\n row.setEndDate(dayjs('now').add(1, 'day'));\n }\n };\n\n switch (action.method) {\n case 'Add':\n if (action.row) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n return [...rows, row];\n }\n return rows;\n case 'AddRate':\n if (action.row && action.rate) {\n const { row } = action;\n\n checkAndSetRowDates(row);\n\n row.setRate(action.rate);\n\n let hasRowIncluded = false;\n // Let us loop through all of our rows and see if it's in array\n // if target row isn't included, we'll add it to the end.\n const newRows = rows.map((mappedRow) => {\n if (mappedRow.getID() === action.row?.getID()) {\n hasRowIncluded = true;\n return action.row;\n } else {\n return mappedRow;\n }\n });\n\n if (!hasRowIncluded) {\n newRows.push(row);\n }\n\n // Reason we raise this event here, and not in the reducer for example is\n // this is the only sure way we can trust a room is being added to the cart\n const addToCartEvent = new AddToCartEvent(row, newRows);\n RoomstayEventManager.raise(addToCartEvent);\n\n return [...newRows];\n }\n\n return rows;\n case 'Remove':\n if (action.row) {\n const newRows = rows.filter((item) => item.getID() !== action.row?.getID());\n\n const removeFromCartEvent = new RemoveFromCartEvent(action.row, newRows);\n RoomstayEventManager.raise(removeFromCartEvent);\n\n return newRows;\n }\n\n return rows;\n case 'Clear':\n return [];\n case 'Update':\n if (action.row) {\n return rows.map((row) => {\n if (row.getID() === (action.row as BasketRow).getID()) {\n return action.row as BasketRow;\n } else {\n return row;\n }\n });\n }\n\n return rows;\n case 'Init': {\n if (action.rows?.length) {\n action.rows.forEach((row) => checkAndSetRowDates(row));\n }\n return action.rows || [];\n }\n }\n};\n"]}
@@ -15,6 +15,12 @@ const calculateReservationAddonTotal = (addons) => {
15
15
  if (addon.price && addon.quantity) {
16
16
  indPrice += addon.quantity * Number(addon.price);
17
17
  }
18
+ if (addon.pricingType === Addon_1.AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {
19
+ indPrice *= addon.adultQuantity;
20
+ }
21
+ else if (addon.pricingType === Addon_1.AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {
22
+ indPrice *= addon.childQuantity;
23
+ }
18
24
  let indAdultPrice = 0;
19
25
  if (addon.adultPrice && addon.adultQuantity) {
20
26
  indAdultPrice += addon.adultQuantity * Number(addon.adultPrice);
@@ -24,7 +30,7 @@ const calculateReservationAddonTotal = (addons) => {
24
30
  indChildPrice += addon.childQuantity * Number(addon.childPrice);
25
31
  }
26
32
  let addonTotal = indPrice + indAdultPrice + indChildPrice;
27
- if ((addon.pricingType === Addon_1.AddonPricingType.PER_NIGHT || addon.pricingType === Addon_1.AddonPricingType.PER_PERSON_PER_NIGHT) && addon.nights) {
33
+ if (Addon_1.ADDON_PER_NIGHT_TYPES.includes(addon.pricingType) && addon.nights) {
28
34
  addonTotal *= addon.nights;
29
35
  }
30
36
  price += indPrice;
@@ -1 +1 @@
1
- {"version":3,"file":"TotalCalculator.js","sourceRoot":"/","sources":["src/util/TotalCalculator.ts"],"names":[],"mappings":";;;AAGA,gDAAwD;AAEjD,MAAM,8BAA8B,GAAG,CAAC,MAAmD,EAAE,EAAE;IAClG,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;KACrB;IAED,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;YAC/B,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACpD;QAED,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE;YACzC,aAAa,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACnE;QAED,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE;YACzC,aAAa,IAAI,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACnE;QAED,IAAI,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,wBAAgB,CAAC,SAAS,IAAI,KAAK,CAAC,WAAW,KAAK,wBAAgB,CAAC,oBAAoB,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE;YACnI,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;SAC9B;QAED,KAAK,IAAI,QAAQ,CAAC;QAClB,UAAU,IAAI,aAAa,CAAC;QAC5B,UAAU,IAAI,aAAa,CAAC;QAE5B,KAAK,IAAI,UAAU,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO;QACH,KAAK;QACL,UAAU;QACV,UAAU;QACV,KAAK;KACR,CAAC;AACN,CAAC,CAAC;AA7CW,QAAA,8BAA8B,kCA6CzC;AAEK,MAAM,4BAA4B,GAAG,CAAC,WAA4B,EAAE,EAAE;IACzE,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,EAAE;;QAC/C,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QACtC,MAAM,SAAS,GAAG,MAAA,MAAA,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,0CAAE,MAAM,mCAAI,CAAC,CAAC;QAEjE,IAAI,MAAA,aAAa,CAAC,MAAM,0CAAE,MAAM,EAAE;YAC9B,MAAM,MAAM,GAAG,CAAC,MAAA,aAAa,CAAC,MAAM,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtD,uCAAY,KAAK,KAAE,MAAM,EAAE,SAAS,IAAG;YAC3C,CAAC,CAAC,CAAC;YAEH,KAAK,IAAI,MAAA,IAAA,sCAA8B,EAAC,MAAM,CAAC,0CAAE,KAAK,CAAC;SAC1D;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAjBW,QAAA,4BAA4B,gCAiBvC","sourcesContent":["import type { ReservationAddonDTO } from '@/models/Api/ReservationsDTO';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\n\nimport { AddonPricingType } from '@/models/Addon/Addon';\n\nexport const calculateReservationAddonTotal = (addons: ReservationAddonDTO | ReservationAddonDTO[]) => {\n let price = 0;\n let adultPrice = 0;\n let childPrice = 0;\n\n let total = 0;\n\n if (!Array.isArray(addons)) {\n addons = [addons];\n }\n\n addons.forEach((addon) => {\n let indPrice = 0;\n if (addon.price && addon.quantity) {\n indPrice += addon.quantity * Number(addon.price);\n }\n\n let indAdultPrice = 0;\n if (addon.adultPrice && addon.adultQuantity) {\n indAdultPrice += addon.adultQuantity * Number(addon.adultPrice);\n }\n\n let indChildPrice = 0;\n if (addon.childPrice && addon.childQuantity) {\n indChildPrice += addon.childQuantity * Number(addon.childPrice);\n }\n\n let addonTotal = indPrice + indAdultPrice + indChildPrice;\n if ((addon.pricingType === AddonPricingType.PER_NIGHT || addon.pricingType === AddonPricingType.PER_PERSON_PER_NIGHT) && addon.nights) {\n addonTotal *= addon.nights;\n }\n\n price += indPrice;\n adultPrice += indAdultPrice;\n childPrice += indChildPrice;\n\n total += addonTotal;\n });\n\n return {\n price,\n adultPrice,\n childPrice,\n total,\n };\n};\n\nexport const calculateTotalForReservation = (reservation: ReservationsDTO) => {\n let total = 0;\n\n reservation.reservations.forEach((individualRes) => {\n total += individualRes.total.afterTax;\n const resNights = Object.keys(individualRes.nights)?.length ?? 0;\n\n if (individualRes.addons?.length) {\n const addons = (individualRes.addons ?? []).map((addon) => {\n return { ...addon, nights: resNights };\n });\n\n total += calculateReservationAddonTotal(addons)?.total;\n }\n });\n\n return total;\n};\n"]}
1
+ {"version":3,"file":"TotalCalculator.js","sourceRoot":"/","sources":["src/util/TotalCalculator.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReservationAddonDTO } from '@/models/Api/ReservationsDTO';\nimport type ReservationsDTO from '@/models/Api/ReservationsDTO';\n\nimport { ADDON_PER_NIGHT_TYPES, AddonPricingType } from '@/models/Addon/Addon';\n\nexport const calculateReservationAddonTotal = (addons: ReservationAddonDTO | ReservationAddonDTO[]) => {\n let price = 0;\n let adultPrice = 0;\n let childPrice = 0;\n\n let total = 0;\n\n if (!Array.isArray(addons)) {\n addons = [addons];\n }\n\n addons.forEach((addon) => {\n let indPrice = 0;\n if (addon.price && addon.quantity) {\n indPrice += addon.quantity * Number(addon.price);\n }\n\n if (addon.pricingType === AddonPricingType.PER_ADULT_OCCUPANCY_PER_NIGHT) {\n indPrice *= addon.adultQuantity;\n } else if (addon.pricingType === AddonPricingType.PER_CHILD_OCCUPANCY_PER_NIGHT && addon.childQuantity) {\n indPrice *= addon.childQuantity;\n }\n\n let indAdultPrice = 0;\n if (addon.adultPrice && addon.adultQuantity) {\n indAdultPrice += addon.adultQuantity * Number(addon.adultPrice);\n }\n\n let indChildPrice = 0;\n if (addon.childPrice && addon.childQuantity) {\n indChildPrice += addon.childQuantity * Number(addon.childPrice);\n }\n\n let addonTotal = indPrice + indAdultPrice + indChildPrice;\n if (ADDON_PER_NIGHT_TYPES.includes(addon.pricingType as AddonPricingType) && addon.nights) {\n addonTotal *= addon.nights;\n }\n\n price += indPrice;\n adultPrice += indAdultPrice;\n childPrice += indChildPrice;\n\n total += addonTotal;\n });\n\n return {\n price,\n adultPrice,\n childPrice,\n total,\n };\n};\n\nexport const calculateTotalForReservation = (reservation: ReservationsDTO) => {\n let total = 0;\n\n reservation.reservations.forEach((individualRes) => {\n total += individualRes.total.afterTax;\n const resNights = Object.keys(individualRes.nights)?.length ?? 0;\n\n if (individualRes.addons?.length) {\n const addons = (individualRes.addons ?? []).map((addon) => {\n return { ...addon, nights: resNights };\n });\n\n total += calculateReservationAddonTotal(addons)?.total;\n }\n });\n\n return total;\n};\n"]}