@sabstravtech/obtservices 0.0.0

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 (420) hide show
  1. package/.editorconfig +13 -0
  2. package/.gitmodules +0 -0
  3. package/.vscode/settings.json +4 -0
  4. package/README.md +27 -0
  5. package/angular.json +45 -0
  6. package/audit.config.json +6 -0
  7. package/codegen.yml +18 -0
  8. package/ng-package.json +7 -0
  9. package/package.json +84 -0
  10. package/projects/obtservices/README.md +24 -0
  11. package/projects/obtservices/angular/package.json +3 -0
  12. package/projects/obtservices/angular/src/classes.ts +3 -0
  13. package/projects/obtservices/angular/src/components/basket-panel.ts +139 -0
  14. package/projects/obtservices/angular/src/components/with-component.ts +40 -0
  15. package/projects/obtservices/angular/src/components.ts +2 -0
  16. package/projects/obtservices/angular/src/data.ts +5 -0
  17. package/projects/obtservices/angular/src/fetchers.ts +32 -0
  18. package/projects/obtservices/angular/src/lib/vendor/classes/environment.ts +5 -0
  19. package/projects/obtservices/angular/src/lib/vendor/classes/event-messenager.ts +11 -0
  20. package/projects/obtservices/angular/src/lib/vendor/classes/helpers.ts +87 -0
  21. package/projects/obtservices/angular/src/lib/vendor/data/airports.data.json +5508 -0
  22. package/projects/obtservices/angular/src/lib/vendor/data/animations.ts +38 -0
  23. package/projects/obtservices/angular/src/lib/vendor/data/booking-expected-responses.json +100 -0
  24. package/projects/obtservices/angular/src/lib/vendor/data/cities.data.json +31499 -0
  25. package/projects/obtservices/angular/src/lib/vendor/data/countries.json +1212 -0
  26. package/projects/obtservices/angular/src/lib/vendor/data/flight-booking.data.json +136 -0
  27. package/projects/obtservices/angular/src/lib/vendor/data/postcodes1.json +194 -0
  28. package/projects/obtservices/angular/src/lib/vendor/data/rail_addresses.json +2524 -0
  29. package/projects/obtservices/angular/src/lib/vendor/fetchers/basket-fetcher.ts +14 -0
  30. package/projects/obtservices/angular/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +15 -0
  31. package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +17 -0
  32. package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +16 -0
  33. package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +16 -0
  34. package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +16 -0
  35. package/projects/obtservices/angular/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +16 -0
  36. package/projects/obtservices/angular/src/lib/vendor/fetchers/flight-quote.fetcher.ts +16 -0
  37. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +16 -0
  38. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +16 -0
  39. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +18 -0
  40. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +16 -0
  41. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +16 -0
  42. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +16 -0
  43. package/projects/obtservices/angular/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +16 -0
  44. package/projects/obtservices/angular/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +16 -0
  45. package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +17 -0
  46. package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +16 -0
  47. package/projects/obtservices/angular/src/lib/vendor/fetchers/irl-quote-fetcher.ts +16 -0
  48. package/projects/obtservices/angular/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +16 -0
  49. package/projects/obtservices/angular/src/lib/vendor/fetchers/parking-quote-fetcher.ts +16 -0
  50. package/projects/obtservices/angular/src/lib/vendor/fetchers/rail-quote-fetcher.ts +16 -0
  51. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airlines-fetcher.ts +14 -0
  52. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airports-fetcher.ts +14 -0
  53. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-cities.fetcher.ts +16 -0
  54. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +14 -0
  55. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-depots.fetcher.ts +18 -0
  56. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +16 -0
  57. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +16 -0
  58. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +16 -0
  59. package/projects/obtservices/angular/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +16 -0
  60. package/projects/obtservices/angular/src/lib/vendor/fetchers/user-addresses.fetcher.ts +16 -0
  61. package/projects/obtservices/angular/src/lib/vendor/fetchers/user-fetcher.ts +14 -0
  62. package/projects/obtservices/angular/src/lib/vendor/fetchers/user-message.fetcher.ts +16 -0
  63. package/projects/obtservices/angular/src/lib/vendor/fetchers/user-products-fetcher.ts +16 -0
  64. package/projects/obtservices/angular/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +16 -0
  65. package/projects/obtservices/angular/src/lib/vendor/services/enterprise-basket.service.ts +133 -0
  66. package/projects/obtservices/angular/src/lib/vendor/services/hotel-avallibility.service.ts +19 -0
  67. package/projects/obtservices/angular/src/lib/vendor/services/http-call.service.ts +252 -0
  68. package/projects/obtservices/angular/src/lib/vendor/services/logon.service.ts +40 -0
  69. package/projects/obtservices/angular/src/lib/vendor/services/modal-opener.service.ts +9 -0
  70. package/projects/obtservices/angular/src/lib/vendor/services/my-bookings.service.ts +21 -0
  71. package/projects/obtservices/angular/src/lib/vendor/services/route-happy.service.ts +11 -0
  72. package/projects/obtservices/angular/src/lib/vendor/services/search.service.ts +213 -0
  73. package/projects/obtservices/angular/src/lib/vendor/services/storage.service.ts +82 -0
  74. package/projects/obtservices/angular/src/lib/vendor/services/user.service.ts +36 -0
  75. package/projects/obtservices/angular/src/lib/vendor/services/webtoken.service.ts +62 -0
  76. package/projects/obtservices/angular/src/lib/vendor/testers/postcode-validate.tester.ts +14 -0
  77. package/projects/obtservices/angular/src/lib/vendor/testers/validate-mi-free-value.tester.ts +14 -0
  78. package/projects/obtservices/angular/src/lib/vendor/types/graphql.angular.types.ts +11081 -0
  79. package/projects/obtservices/angular/src/lib/vendor/updaters/accept-new-price.updater.ts +14 -0
  80. package/projects/obtservices/angular/src/lib/vendor/updaters/add-item-to-basket.updater.ts +14 -0
  81. package/projects/obtservices/angular/src/lib/vendor/updaters/addUserToBasketItem.ts +14 -0
  82. package/projects/obtservices/angular/src/lib/vendor/updaters/book-basket-updater.ts +14 -0
  83. package/projects/obtservices/angular/src/lib/vendor/updaters/create-basket-updater.ts +14 -0
  84. package/projects/obtservices/angular/src/lib/vendor/updaters/move-basket-item-to-basket.ts +14 -0
  85. package/projects/obtservices/angular/src/lib/vendor/updaters/remove-basket-updater.ts +14 -0
  86. package/projects/obtservices/angular/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +14 -0
  87. package/projects/obtservices/angular/src/lib/vendor/updaters/remove-recent-search.updater.ts +14 -0
  88. package/projects/obtservices/angular/src/lib/vendor/updaters/remove-user-address.updater.ts +14 -0
  89. package/projects/obtservices/angular/src/lib/vendor/updaters/revalidate-basket-updater.ts +14 -0
  90. package/projects/obtservices/angular/src/lib/vendor/updaters/save-recent-search.updater.ts +14 -0
  91. package/projects/obtservices/angular/src/lib/vendor/updaters/save-user-address.updater.ts +11 -0
  92. package/projects/obtservices/angular/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +14 -0
  93. package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +14 -0
  94. package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-group.ts +14 -0
  95. package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +15 -0
  96. package/projects/obtservices/angular/src/lib/vendor/updaters/set-payment-option.updater.ts +15 -0
  97. package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-notes-updater.ts +14 -0
  98. package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-title-updater.ts +14 -0
  99. package/projects/obtservices/angular/src/obtservices.module.ts +131 -0
  100. package/projects/obtservices/angular/src/public_api.ts +8 -0
  101. package/projects/obtservices/angular/src/services.ts +11 -0
  102. package/projects/obtservices/angular/src/testers.ts +2 -0
  103. package/projects/obtservices/angular/src/types.ts +1 -0
  104. package/projects/obtservices/angular/src/updaters.ts +13 -0
  105. package/projects/obtservices/base/package.json +3 -0
  106. package/projects/obtservices/base/src/classes.ts +27 -0
  107. package/projects/obtservices/base/src/custom.d.ts +3 -0
  108. package/projects/obtservices/base/src/fetchers.ts +36 -0
  109. package/projects/obtservices/base/src/interfaces.ts +29 -0
  110. package/projects/obtservices/base/src/lib/vendor/classes/base-enterprise.ts +126 -0
  111. package/projects/obtservices/base/src/lib/vendor/classes/base-network-call.ts +40 -0
  112. package/projects/obtservices/base/src/lib/vendor/classes/basket-info-mi-details.impl.ts +68 -0
  113. package/projects/obtservices/base/src/lib/vendor/classes/bookable-basket.ts +343 -0
  114. package/projects/obtservices/base/src/lib/vendor/classes/cabhire-enterprise-search.ts +907 -0
  115. package/projects/obtservices/base/src/lib/vendor/classes/carhire-enterprise-search.ts +1597 -0
  116. package/projects/obtservices/base/src/lib/vendor/classes/empty-enterprise-search.ts +75 -0
  117. package/projects/obtservices/base/src/lib/vendor/classes/enviroment.ts +25 -0
  118. package/projects/obtservices/base/src/lib/vendor/classes/eurostar-enterprise-search.ts +2126 -0
  119. package/projects/obtservices/base/src/lib/vendor/classes/eurostar-search-type.enum.ts +4 -0
  120. package/projects/obtservices/base/src/lib/vendor/classes/event-messenager.ts +23 -0
  121. package/projects/obtservices/base/src/lib/vendor/classes/flight-enterprise-search.ts +2399 -0
  122. package/projects/obtservices/base/src/lib/vendor/classes/flight-search-type.enum.ts +5 -0
  123. package/projects/obtservices/base/src/lib/vendor/classes/helpers.ts +1233 -0
  124. package/projects/obtservices/base/src/lib/vendor/classes/hotel-enterprise-search.ts +1370 -0
  125. package/projects/obtservices/base/src/lib/vendor/classes/irl-enterprise-search.ts +1380 -0
  126. package/projects/obtservices/base/src/lib/vendor/classes/limited-cache.class.ts +70 -0
  127. package/projects/obtservices/base/src/lib/vendor/classes/lounges-enterprise-search.ts +444 -0
  128. package/projects/obtservices/base/src/lib/vendor/classes/management-info-and-valid.ts +268 -0
  129. package/projects/obtservices/base/src/lib/vendor/classes/modal-types.enum.ts +28 -0
  130. package/projects/obtservices/base/src/lib/vendor/classes/parking-enterprise-search.ts +541 -0
  131. package/projects/obtservices/base/src/lib/vendor/classes/rail-direction.enum.ts +4 -0
  132. package/projects/obtservices/base/src/lib/vendor/classes/rail-enterprise-search.ts +1751 -0
  133. package/projects/obtservices/base/src/lib/vendor/classes/routehappy-request.ts +146 -0
  134. package/projects/obtservices/base/src/lib/vendor/classes/routehappy-response.ts +128 -0
  135. package/projects/obtservices/base/src/lib/vendor/classes/supplementary-booking-info-impl.ts +375 -0
  136. package/projects/obtservices/base/src/lib/vendor/classes/user-favourite.enum.ts +12 -0
  137. package/projects/obtservices/base/src/lib/vendor/classes/validator.checker.ts +7 -0
  138. package/projects/obtservices/base/src/lib/vendor/data/airports.data.json +5508 -0
  139. package/projects/obtservices/base/src/lib/vendor/data/booking-expected-responses.json +100 -0
  140. package/projects/obtservices/base/src/lib/vendor/data/cities.data.json +31499 -0
  141. package/projects/obtservices/base/src/lib/vendor/data/countries.json +1212 -0
  142. package/projects/obtservices/base/src/lib/vendor/data/euro-stations.json +30 -0
  143. package/projects/obtservices/base/src/lib/vendor/data/flight-booking.data.json +136 -0
  144. package/projects/obtservices/base/src/lib/vendor/data/postcodes1.json +194 -0
  145. package/projects/obtservices/base/src/lib/vendor/data/rail_addresses.json +2524 -0
  146. package/projects/obtservices/base/src/lib/vendor/fetchers/basket-fetcher.ts +29 -0
  147. package/projects/obtservices/base/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +34 -0
  148. package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +35 -0
  149. package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +34 -0
  150. package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +34 -0
  151. package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +35 -0
  152. package/projects/obtservices/base/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +35 -0
  153. package/projects/obtservices/base/src/lib/vendor/fetchers/flight-quote.fetcher.ts +35 -0
  154. package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +35 -0
  155. package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +35 -0
  156. package/projects/obtservices/base/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +35 -0
  157. package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +34 -0
  158. package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +35 -0
  159. package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +36 -0
  160. package/projects/obtservices/base/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +33 -0
  161. package/projects/obtservices/base/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +35 -0
  162. package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +53 -0
  163. package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +35 -0
  164. package/projects/obtservices/base/src/lib/vendor/fetchers/irl-quote-fetcher.ts +34 -0
  165. package/projects/obtservices/base/src/lib/vendor/fetchers/list-fetchable-enterprise.ts +59 -0
  166. package/projects/obtservices/base/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +34 -0
  167. package/projects/obtservices/base/src/lib/vendor/fetchers/object-fetchable-enterprise.ts +20 -0
  168. package/projects/obtservices/base/src/lib/vendor/fetchers/parking-quote-fetcher.ts +34 -0
  169. package/projects/obtservices/base/src/lib/vendor/fetchers/rail-quote-fetcher.ts +34 -0
  170. package/projects/obtservices/base/src/lib/vendor/fetchers/search-airlines.fetcher.ts +30 -0
  171. package/projects/obtservices/base/src/lib/vendor/fetchers/search-airports-fetcher.ts +29 -0
  172. package/projects/obtservices/base/src/lib/vendor/fetchers/search-cities.fetcher.ts +34 -0
  173. package/projects/obtservices/base/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +32 -0
  174. package/projects/obtservices/base/src/lib/vendor/fetchers/search-depots.fetcher.ts +34 -0
  175. package/projects/obtservices/base/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +34 -0
  176. package/projects/obtservices/base/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +37 -0
  177. package/projects/obtservices/base/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +35 -0
  178. package/projects/obtservices/base/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +35 -0
  179. package/projects/obtservices/base/src/lib/vendor/fetchers/user-addresses.fetcher.ts +34 -0
  180. package/projects/obtservices/base/src/lib/vendor/fetchers/user-fetcher.ts +27 -0
  181. package/projects/obtservices/base/src/lib/vendor/fetchers/user-message.fetcher.ts +34 -0
  182. package/projects/obtservices/base/src/lib/vendor/fetchers/user-products-fetcher.ts +35 -0
  183. package/projects/obtservices/base/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +35 -0
  184. package/projects/obtservices/base/src/lib/vendor/interfaces/Icabhire-enterprise-search.ts +174 -0
  185. package/projects/obtservices/base/src/lib/vendor/interfaces/Icarhire-enterprise-search.ts +143 -0
  186. package/projects/obtservices/base/src/lib/vendor/interfaces/Ienterprise-basket.service.ts +127 -0
  187. package/projects/obtservices/base/src/lib/vendor/interfaces/Ieurostar-enterprise-search.ts +197 -0
  188. package/projects/obtservices/base/src/lib/vendor/interfaces/Iflight-enterprise-search.ts +196 -0
  189. package/projects/obtservices/base/src/lib/vendor/interfaces/Ihotel-enterprise-search.ts +219 -0
  190. package/projects/obtservices/base/src/lib/vendor/interfaces/Iirl-enterprise-search.ts +135 -0
  191. package/projects/obtservices/base/src/lib/vendor/interfaces/Ilounges-enterprise-search.ts +58 -0
  192. package/projects/obtservices/base/src/lib/vendor/interfaces/Imybookings.service.ts +27 -0
  193. package/projects/obtservices/base/src/lib/vendor/interfaces/Iparking-enterprise-search.ts +72 -0
  194. package/projects/obtservices/base/src/lib/vendor/interfaces/Irail-enterprise-search.ts +161 -0
  195. package/projects/obtservices/base/src/lib/vendor/interfaces/Isearch.service.ts +178 -0
  196. package/projects/obtservices/base/src/lib/vendor/interfaces/Isupplementary-booking-info-impl.ts +63 -0
  197. package/projects/obtservices/base/src/lib/vendor/interfaces/Iuser.service.ts +87 -0
  198. package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-classes.interface.ts +8 -0
  199. package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-filters.interface.ts +11 -0
  200. package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-sort.interface.ts +4 -0
  201. package/projects/obtservices/base/src/lib/vendor/interfaces/cheapest-price.ts +4 -0
  202. package/projects/obtservices/base/src/lib/vendor/interfaces/code-name.ts +4 -0
  203. package/projects/obtservices/base/src/lib/vendor/interfaces/flight-filters.interface.ts +41 -0
  204. package/projects/obtservices/base/src/lib/vendor/interfaces/flight-multi-destination.interface.ts +8 -0
  205. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-airport-express-stations.interface.ts +4 -0
  206. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-basket-item.interface.ts +79 -0
  207. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-journey-leg.interface.ts +6 -0
  208. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-recent-search-args.interface.ts +20 -0
  209. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-selected-ticket.interface.ts +11 -0
  210. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-group.interface.ts +29 -0
  211. package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-groups.interface.ts +5 -0
  212. package/projects/obtservices/base/src/lib/vendor/interfaces/search-objects.interface.ts +17 -0
  213. package/projects/obtservices/base/src/lib/vendor/interfaces/select-filter.interface.ts +5 -0
  214. package/projects/obtservices/base/src/lib/vendor/interfaces/user.data.ts +22 -0
  215. package/projects/obtservices/base/src/lib/vendor/interfaces/value-display.ts +4 -0
  216. package/projects/obtservices/base/src/lib/vendor/models/login.model.ts +97 -0
  217. package/projects/obtservices/base/src/lib/vendor/models/regexp.model.ts +13 -0
  218. package/projects/obtservices/base/src/lib/vendor/models/traveller.object.ts +61 -0
  219. package/projects/obtservices/base/src/lib/vendor/services/enterprise-basket.service.ts +1150 -0
  220. package/projects/obtservices/base/src/lib/vendor/services/hotel-avallibility.service.ts +251 -0
  221. package/projects/obtservices/base/src/lib/vendor/services/http-call.service.ts +57 -0
  222. package/projects/obtservices/base/src/lib/vendor/services/logon.service.ts +245 -0
  223. package/projects/obtservices/base/src/lib/vendor/services/modal-opener.service.ts +30 -0
  224. package/projects/obtservices/base/src/lib/vendor/services/my-bookings.service.ts +184 -0
  225. package/projects/obtservices/base/src/lib/vendor/services/routehappy.service.ts +275 -0
  226. package/projects/obtservices/base/src/lib/vendor/services/search.service.ts +2026 -0
  227. package/projects/obtservices/base/src/lib/vendor/services/storage.service.ts +15 -0
  228. package/projects/obtservices/base/src/lib/vendor/services/url.service.ts +12 -0
  229. package/projects/obtservices/base/src/lib/vendor/services/user.service.ts +354 -0
  230. package/projects/obtservices/base/src/lib/vendor/services/webtoken.service.ts +66 -0
  231. package/projects/obtservices/base/src/lib/vendor/testers/base.tester.ts +18 -0
  232. package/projects/obtservices/base/src/lib/vendor/testers/postcode-validate.tester.ts +24 -0
  233. package/projects/obtservices/base/src/lib/vendor/testers/validate-mi-free-value.tester.ts +23 -0
  234. package/projects/obtservices/base/src/lib/vendor/types/graphql.types.ts +6184 -0
  235. package/projects/obtservices/base/src/lib/vendor/types/types.ts +630 -0
  236. package/projects/obtservices/base/src/lib/vendor/updaters/accept-new-price.updater.ts +31 -0
  237. package/projects/obtservices/base/src/lib/vendor/updaters/add-item-to-basket.updater.ts +29 -0
  238. package/projects/obtservices/base/src/lib/vendor/updaters/addUserToBasketItem.ts +30 -0
  239. package/projects/obtservices/base/src/lib/vendor/updaters/book-basket-updater.ts +28 -0
  240. package/projects/obtservices/base/src/lib/vendor/updaters/create-basket-updater.ts +29 -0
  241. package/projects/obtservices/base/src/lib/vendor/updaters/move-basket-item-to-basket.ts +30 -0
  242. package/projects/obtservices/base/src/lib/vendor/updaters/object-updater-enterprise.ts +20 -0
  243. package/projects/obtservices/base/src/lib/vendor/updaters/remove-basket-updater.ts +29 -0
  244. package/projects/obtservices/base/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +28 -0
  245. package/projects/obtservices/base/src/lib/vendor/updaters/remove-recent-search-updater.ts +29 -0
  246. package/projects/obtservices/base/src/lib/vendor/updaters/remove-user-address-updater.ts +29 -0
  247. package/projects/obtservices/base/src/lib/vendor/updaters/revalidate-basket-updater.ts +29 -0
  248. package/projects/obtservices/base/src/lib/vendor/updaters/save-recent-search-updater.ts +30 -0
  249. package/projects/obtservices/base/src/lib/vendor/updaters/save-user-address.updater.ts +30 -0
  250. package/projects/obtservices/base/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +31 -0
  251. package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +30 -0
  252. package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-group.ts +32 -0
  253. package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +30 -0
  254. package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-paymenr-option.updater.ts +28 -0
  255. package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-notes-updater.ts +30 -0
  256. package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-title-updater.ts +30 -0
  257. package/projects/obtservices/base/src/models.ts +3 -0
  258. package/projects/obtservices/base/src/public_api.ts +8 -0
  259. package/projects/obtservices/base/src/services.ts +12 -0
  260. package/projects/obtservices/base/src/testers.ts +2 -0
  261. package/projects/obtservices/base/src/types.ts +1 -0
  262. package/projects/obtservices/base/src/updaters.ts +20 -0
  263. package/projects/obtservices/graphQL/autogenerated/index.js +2 -0
  264. package/projects/obtservices/graphQL/autogenerated/mutations/acceptNewPrice.gql +1580 -0
  265. package/projects/obtservices/graphQL/autogenerated/mutations/addItemToBasket.gql +1580 -0
  266. package/projects/obtservices/graphQL/autogenerated/mutations/addUsersToBasketItem.gql +1580 -0
  267. package/projects/obtservices/graphQL/autogenerated/mutations/bookBasket.gql +1580 -0
  268. package/projects/obtservices/graphQL/autogenerated/mutations/cancelBooking.gql +6 -0
  269. package/projects/obtservices/graphQL/autogenerated/mutations/confermaCreateCard.gql +23 -0
  270. package/projects/obtservices/graphQL/autogenerated/mutations/confermaDeleteCard.gql +3 -0
  271. package/projects/obtservices/graphQL/autogenerated/mutations/createBasket.gql +1580 -0
  272. package/projects/obtservices/graphQL/autogenerated/mutations/deleteBasket.gql +3 -0
  273. package/projects/obtservices/graphQL/autogenerated/mutations/deleteFavouriteSearch.gql +3 -0
  274. package/projects/obtservices/graphQL/autogenerated/mutations/deleteRecentSearch.gql +3 -0
  275. package/projects/obtservices/graphQL/autogenerated/mutations/deleteUserAddress.gql +3 -0
  276. package/projects/obtservices/graphQL/autogenerated/mutations/index.js +36 -0
  277. package/projects/obtservices/graphQL/autogenerated/mutations/moveItemToADifferentBasket.gql +1580 -0
  278. package/projects/obtservices/graphQL/autogenerated/mutations/removeItemFromBasket.gql +1580 -0
  279. package/projects/obtservices/graphQL/autogenerated/mutations/removeItemsFromBasket.gql +1580 -0
  280. package/projects/obtservices/graphQL/autogenerated/mutations/removeUserFromBasketItem.gql +1580 -0
  281. package/projects/obtservices/graphQL/autogenerated/mutations/reopenBasket.gql +1580 -0
  282. package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasket.gql +1580 -0
  283. package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasketItem.gql +1580 -0
  284. package/projects/obtservices/graphQL/autogenerated/mutations/saveFavouriteSearch.gql +348 -0
  285. package/projects/obtservices/graphQL/autogenerated/mutations/saveRecentSearch.gql +348 -0
  286. package/projects/obtservices/graphQL/autogenerated/mutations/saveUserAddress.gql +14 -0
  287. package/projects/obtservices/graphQL/autogenerated/mutations/sendBasketForApproval.gql +1580 -0
  288. package/projects/obtservices/graphQL/autogenerated/mutations/setAddressAsUserPrimary.gql +14 -0
  289. package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemLeadPassenger.gql +1580 -0
  290. package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIGroup.gql +1580 -0
  291. package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIValue.gql +1580 -0
  292. package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemPaymentMethod.gql +1580 -0
  293. package/projects/obtservices/graphQL/autogenerated/mutations/setMIDefaultValue.gql +3 -0
  294. package/projects/obtservices/graphQL/autogenerated/mutations/setUserLanguage.gql +339 -0
  295. package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketNotes.gql +1580 -0
  296. package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketTitle.gql +1580 -0
  297. package/projects/obtservices/graphQL/autogenerated/queries/alive.gql +3 -0
  298. package/projects/obtservices/graphQL/autogenerated/queries/carHireAvailabilityDetailRequest.gql +42 -0
  299. package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockClientHotels.gql +23 -0
  300. package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockConsumerHotels.gql +23 -0
  301. package/projects/obtservices/graphQL/autogenerated/queries/confermaListCards.gql +11 -0
  302. package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockClientHotels.gql +23 -0
  303. package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockConsumerHotels.gql +23 -0
  304. package/projects/obtservices/graphQL/autogenerated/queries/getCOVIDMicrositeToken.gql +3 -0
  305. package/projects/obtservices/graphQL/autogenerated/queries/getCancellationInfo.gql +7 -0
  306. package/projects/obtservices/graphQL/autogenerated/queries/getCarHireDepots.gql +13 -0
  307. package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOffice.gql +50 -0
  308. package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOfficeNames.gql +26 -0
  309. package/projects/obtservices/graphQL/autogenerated/queries/getConfermaQuicklist.gql +131 -0
  310. package/projects/obtservices/graphQL/autogenerated/queries/getCountries.gql +8 -0
  311. package/projects/obtservices/graphQL/autogenerated/queries/getHotelAvailability.gql +78 -0
  312. package/projects/obtservices/graphQL/autogenerated/queries/getHotelChains.gql +3 -0
  313. package/projects/obtservices/graphQL/autogenerated/queries/getIRLSupplierStation.gql +28 -0
  314. package/projects/obtservices/graphQL/autogenerated/queries/getMultipleHotelsAvailability.gql +78 -0
  315. package/projects/obtservices/graphQL/autogenerated/queries/getPostcodeDetails.gql +25 -0
  316. package/projects/obtservices/graphQL/autogenerated/queries/getRailStation.gql +27 -0
  317. package/projects/obtservices/graphQL/autogenerated/queries/getRailcards.gql +6 -0
  318. package/projects/obtservices/graphQL/autogenerated/queries/getRiskAlerts.gql +17 -0
  319. package/projects/obtservices/graphQL/autogenerated/queries/getUser.gql +339 -0
  320. package/projects/obtservices/graphQL/autogenerated/queries/getUserAddresses.gql +14 -0
  321. package/projects/obtservices/graphQL/autogenerated/queries/getUserBasket.gql +1580 -0
  322. package/projects/obtservices/graphQL/autogenerated/queries/getUserBaskets.gql +1580 -0
  323. package/projects/obtservices/graphQL/autogenerated/queries/getUserCompanyOffices.gql +88 -0
  324. package/projects/obtservices/graphQL/autogenerated/queries/getUserCurrentCarbonAllowance.gql +524 -0
  325. package/projects/obtservices/graphQL/autogenerated/queries/getUserFavouriteSearches.gql +348 -0
  326. package/projects/obtservices/graphQL/autogenerated/queries/getUserMIAutoSuggestValues.gql +10 -0
  327. package/projects/obtservices/graphQL/autogenerated/queries/getUserMessages.gql +10 -0
  328. package/projects/obtservices/graphQL/autogenerated/queries/getUserPhoneNumbers.gql +13 -0
  329. package/projects/obtservices/graphQL/autogenerated/queries/getUserRecentSearches.gql +348 -0
  330. package/projects/obtservices/graphQL/autogenerated/queries/getUserServices.gql +16 -0
  331. package/projects/obtservices/graphQL/autogenerated/queries/getUserTravelRules.gql +111 -0
  332. package/projects/obtservices/graphQL/autogenerated/queries/getUserUIConfigs.gql +52 -0
  333. package/projects/obtservices/graphQL/autogenerated/queries/index.js +64 -0
  334. package/projects/obtservices/graphQL/autogenerated/queries/isPostcodeValid.gql +3 -0
  335. package/projects/obtservices/graphQL/autogenerated/queries/postcodeAutoSuggest.gql +3 -0
  336. package/projects/obtservices/graphQL/autogenerated/queries/searchAirlines.gql +32 -0
  337. package/projects/obtservices/graphQL/autogenerated/queries/searchAirports.gql +60 -0
  338. package/projects/obtservices/graphQL/autogenerated/queries/searchCabHire.gql +63 -0
  339. package/projects/obtservices/graphQL/autogenerated/queries/searchCarHire.gql +104 -0
  340. package/projects/obtservices/graphQL/autogenerated/queries/searchCities.gql +14 -0
  341. package/projects/obtservices/graphQL/autogenerated/queries/searchConfermaCities.gql +11 -0
  342. package/projects/obtservices/graphQL/autogenerated/queries/searchEurostar.gql +833 -0
  343. package/projects/obtservices/graphQL/autogenerated/queries/searchFastTrack.gql +46 -0
  344. package/projects/obtservices/graphQL/autogenerated/queries/searchFlights.gql +23 -0
  345. package/projects/obtservices/graphQL/autogenerated/queries/searchFlightsV2.gql +833 -0
  346. package/projects/obtservices/graphQL/autogenerated/queries/searchHotelChains.gql +3 -0
  347. package/projects/obtservices/graphQL/autogenerated/queries/searchHotels.gql +131 -0
  348. package/projects/obtservices/graphQL/autogenerated/queries/searchIRL.gql +514 -0
  349. package/projects/obtservices/graphQL/autogenerated/queries/searchIRLSupplierStations.gql +28 -0
  350. package/projects/obtservices/graphQL/autogenerated/queries/searchLounges.gql +89 -0
  351. package/projects/obtservices/graphQL/autogenerated/queries/searchParking.gql +70 -0
  352. package/projects/obtservices/graphQL/autogenerated/queries/searchPostcodes.gql +25 -0
  353. package/projects/obtservices/graphQL/autogenerated/queries/searchRail.gql +840 -0
  354. package/projects/obtservices/graphQL/autogenerated/queries/searchRailStations.gql +27 -0
  355. package/projects/obtservices/graphQL/autogenerated/queries/searchUserCanBookFor.gql +339 -0
  356. package/projects/obtservices/graphQL/autogenerated/queries/validateBasketItemMI.gql +3 -0
  357. package/projects/obtservices/graphQL/autogenerated/queries/validateUserMIFreeValue.gql +3 -0
  358. package/projects/obtservices/graphQL/documents/acceptNewPrice.graphql +5 -0
  359. package/projects/obtservices/graphQL/documents/addUserToBasketItem.graphql +9 -0
  360. package/projects/obtservices/graphQL/documents/basket.fragments.graphql +171 -0
  361. package/projects/obtservices/graphQL/documents/baskets.graphql +111 -0
  362. package/projects/obtservices/graphQL/documents/bookBasket.graphql +9 -0
  363. package/projects/obtservices/graphQL/documents/cabhire.graphql +66 -0
  364. package/projects/obtservices/graphQL/documents/carHireAvailabilityDetailRequest.graphql +44 -0
  365. package/projects/obtservices/graphQL/documents/carhire.graphql +117 -0
  366. package/projects/obtservices/graphQL/documents/deleteRecentSearch.graphql +3 -0
  367. package/projects/obtservices/graphQL/documents/deleteUserAddress.graphql +3 -0
  368. package/projects/obtservices/graphQL/documents/error.fragments.graphql +10 -0
  369. package/projects/obtservices/graphQL/documents/flights.graphql +830 -0
  370. package/projects/obtservices/graphQL/documents/getCarHireDepots.graphql +13 -0
  371. package/projects/obtservices/graphQL/documents/getConfermaOfficeNames.graphql +11 -0
  372. package/projects/obtservices/graphQL/documents/getConfermaQuicklist.graphql +108 -0
  373. package/projects/obtservices/graphQL/documents/getRailStation.graphql +31 -0
  374. package/projects/obtservices/graphQL/documents/getRailcards.graphql +6 -0
  375. package/projects/obtservices/graphQL/documents/getRiskAlerts.graphql +24 -0
  376. package/projects/obtservices/graphQL/documents/getUserAddresses.graphql +14 -0
  377. package/projects/obtservices/graphQL/documents/getUserCompanyOffices.graphql +18 -0
  378. package/projects/obtservices/graphQL/documents/getUserCurrentCarbonAllowance.graphql +29 -0
  379. package/projects/obtservices/graphQL/documents/getUserMIAutoSuggestValues.graphql +10 -0
  380. package/projects/obtservices/graphQL/documents/getUserPhoneNumbers.graphql +13 -0
  381. package/projects/obtservices/graphQL/documents/getUserRecentSearches.graphql +20 -0
  382. package/projects/obtservices/graphQL/documents/hotels.graphql +242 -0
  383. package/projects/obtservices/graphQL/documents/isPostcodeValid.graphql +3 -0
  384. package/projects/obtservices/graphQL/documents/lookups.graphql +54 -0
  385. package/projects/obtservices/graphQL/documents/lounges.graphql +88 -0
  386. package/projects/obtservices/graphQL/documents/moveItemToADifferentBasket.graphql +9 -0
  387. package/projects/obtservices/graphQL/documents/parking.graphql +79 -0
  388. package/projects/obtservices/graphQL/documents/rail.graphql +645 -0
  389. package/projects/obtservices/graphQL/documents/saveRecentSearch.graphql +5 -0
  390. package/projects/obtservices/graphQL/documents/saveUserAddress.graphql +14 -0
  391. package/projects/obtservices/graphQL/documents/searchAirlines.graphql +32 -0
  392. package/projects/obtservices/graphQL/documents/searchCities.graphql +14 -0
  393. package/projects/obtservices/graphQL/documents/searchConfermaCities.graphql +11 -0
  394. package/projects/obtservices/graphQL/documents/searchEurostar.graphql +810 -0
  395. package/projects/obtservices/graphQL/documents/searchHotelChains.graphql +3 -0
  396. package/projects/obtservices/graphQL/documents/searchIRL.graphql +521 -0
  397. package/projects/obtservices/graphQL/documents/searchPostcodes.graphql +7 -0
  398. package/projects/obtservices/graphQL/documents/searchRailStations.graphql +27 -0
  399. package/projects/obtservices/graphQL/documents/searchUserAddresses.graphql +14 -0
  400. package/projects/obtservices/graphQL/documents/set-basker-item-mi-group.graphql +9 -0
  401. package/projects/obtservices/graphQL/documents/setBasketItemLeadPassenger.graphql +5 -0
  402. package/projects/obtservices/graphQL/documents/setBasketItemMIValue.graphql +16 -0
  403. package/projects/obtservices/graphQL/documents/setBasketItemPaymentMethod.graphql +12 -0
  404. package/projects/obtservices/graphQL/documents/updateBasketNotes.graphql +10 -0
  405. package/projects/obtservices/graphQL/documents/updateBasketTitle.graphql +10 -0
  406. package/projects/obtservices/graphQL/documents/user.fragments.graphql +65 -0
  407. package/projects/obtservices/graphQL/documents/user.graphql +95 -0
  408. package/projects/obtservices/graphQL/documents/validateUserMIFreeValue.graphql +3 -0
  409. package/projects/obtservices/graphQL/schema/schema.graphql +2635 -0
  410. package/projects/obtservices/karma.conf.js +32 -0
  411. package/projects/obtservices/ng-package.json +7 -0
  412. package/projects/obtservices/package-lock.json +5 -0
  413. package/projects/obtservices/package.json +12 -0
  414. package/projects/obtservices/src/obtservices.ts +0 -0
  415. package/projects/obtservices/src/public_api.ts +1 -0
  416. package/projects/obtservices/tsconfig.lib.json +30 -0
  417. package/projects/obtservices/tsconfig.spec.json +17 -0
  418. package/projects/obtservices/tslint.json +17 -0
  419. package/tsconfig.json +36 -0
  420. package/tslint.json +62 -0
@@ -0,0 +1,126 @@
1
+ import { BehaviorSubject, Observable, of } from 'rxjs';
2
+ import { take } from 'rxjs/operators';
3
+
4
+ import { BaseStorageService } from '../services/storage.service';
5
+ import * as _ from 'lodash';
6
+ import { BasketItem, ServiceType } from '../types/graphql.types';
7
+ import { ICheapestPrice } from '../interfaces/cheapest-price';
8
+ import { RecentSearch } from '../../../types';
9
+
10
+ export abstract class BaseEnterpriseSearch<P, R, O extends Array<any>> {
11
+ protected _cheapestResultPrice: ICheapestPrice = {
12
+ amount: null,
13
+ currencyCode: null
14
+ };
15
+ protected _originalUserSearch: P;
16
+ public isValid = new BehaviorSubject<boolean>(false);
17
+ public results: BehaviorSubject<O> = new BehaviorSubject<O>([] as O);
18
+ public messages: BehaviorSubject<string[]> = new BehaviorSubject<string[]>(
19
+ []
20
+ );
21
+ public messagesInfo: BehaviorSubject<string[]> = new BehaviorSubject<
22
+ string[]
23
+ >([]);
24
+ public validationMessages: string[] = [];
25
+ public infoMessages: string[] = [];
26
+ public isLoading: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(
27
+ false
28
+ );
29
+
30
+ protected abstract resultsSessionName: string;
31
+ protected tempParams: P = {} as P;
32
+ protected doChecks: boolean = true;
33
+ public abstract type: ServiceType;
34
+ public fullResults: O = [] as O; // should be an array of type specified by O
35
+
36
+ private mapper = (results: R): O => {
37
+ return results as unknown as O;
38
+ };
39
+
40
+ get cheapestPrice(): ICheapestPrice {
41
+ return this._cheapestResultPrice;
42
+ }
43
+
44
+ get originalUserSearch(): P {
45
+ return this._originalUserSearch;
46
+ }
47
+
48
+ constructor(
49
+ protected storageService: BaseStorageService,
50
+ mapper: (r: R) => O = null
51
+ ) {
52
+ if (mapper) {
53
+ this.mapper = mapper;
54
+ }
55
+ }
56
+
57
+ protected updateTempParams(tempParams: P): void {
58
+ this.doChecks = false;
59
+ Object.assign(this, tempParams);
60
+ this._cheapestResultPrice = null;
61
+ this.doChecks = true;
62
+ }
63
+
64
+ protected _startSearch(results: Observable<R>): Promise<boolean> {
65
+ this.isLoading.next(true);
66
+ this.fullResults = [] as O;
67
+ return new Promise((resolve, reject) => {
68
+ try {
69
+ results.pipe(take(1)).subscribe(
70
+ (results1: R) => {
71
+ console.log('Got results', _.cloneDeep(results1));
72
+
73
+ this.fullResults = this.mapper(results1);
74
+ this._cheapestResultPrice = this.updateLowestPrice(
75
+ this.fullResults
76
+ );
77
+ this.storageService.setSessionItem(
78
+ this.resultsSessionName,
79
+ this.makeSessionResults(this.fullResults)
80
+ );
81
+ this.results.next(this.fullResults);
82
+ resolve(this.fullResults.length !== 0);
83
+ },
84
+ (error) => {
85
+ this.results.next([] as O);
86
+ resolve(false);
87
+ this.isLoading.next(false);
88
+ },
89
+ () => {
90
+ this.isLoading.next(false);
91
+ }
92
+ );
93
+ } catch (err) {
94
+ this.storageService.setSessionItem(this.resultsSessionName, []);
95
+ this.isLoading.next(false);
96
+ this.results.next([] as O);
97
+ reject(err);
98
+ }
99
+ });
100
+ }
101
+ reset(): void {
102
+ this.storageService.removeSessionItem(this.resultsSessionName);
103
+ this.fullResults = [] as O;
104
+ this.results.next([] as O);
105
+ this.resetQuery();
106
+ }
107
+
108
+ protected makeSessionResults(data: O): any {
109
+ return data;
110
+ }
111
+
112
+ protected abstract resetQuery(): void;
113
+
114
+ abstract startSearch(): Promise<boolean>;
115
+
116
+ abstract startRecentSearch(recentSearch: RecentSearch): void;
117
+
118
+ abstract updateLowestPrice(results: O): ICheapestPrice;
119
+ /**
120
+ *
121
+ * @param previousItems basketitems that already been added. This can be used to set up the defaults for the search.
122
+ */
123
+ abstract updateFromPreviousSearches(
124
+ previousItems: Record<ServiceType, BasketItem>
125
+ ): void;
126
+ }
@@ -0,0 +1,40 @@
1
+ import * as Apollo from 'apollo-angular';
2
+ import { ApolloQueryResult, FetchResult } from '@apollo/client/core';
3
+ import { BaseModalOpenerService } from '../services/modal-opener.service';
4
+ import { ModalTypes } from '../classes/modal-types.enum';
5
+ import { Observable, of } from 'rxjs';
6
+ import { map, take, catchError } from 'rxjs/operators';
7
+
8
+ export abstract class BaseNetworkCall<Q, A, R, P> {
9
+ constructor(private modelService: BaseModalOpenerService) {}
10
+
11
+ checkError(error: any) {
12
+ if (error) {
13
+ this.modelService.open(
14
+ ModalTypes.ModalNetWorkErrorComponent,
15
+ {},
16
+ { error }
17
+ );
18
+ throw error;
19
+ }
20
+ }
21
+
22
+ processCall(
23
+ stream: Observable<
24
+ FetchResult<{}, Record<string, any>, Record<string, any>>
25
+ >
26
+ ): Observable<P> {
27
+ return stream.pipe(
28
+ take(1),
29
+ map((results: ApolloQueryResult<R>) => {
30
+ this.checkError(results.error);
31
+ return this.getDataFromResult(results);
32
+ }),
33
+ catchError((error: any) => {
34
+ this.checkError(error);
35
+ return of({} as P);
36
+ })
37
+ );
38
+ }
39
+ protected abstract getDataFromResult(results: ApolloQueryResult<R>): P;
40
+ }
@@ -0,0 +1,68 @@
1
+ import {
2
+ ManagementInfoAndIsValid,
3
+ makeManagamentInfo
4
+ } from './management-info-and-valid';
5
+ import { BaseHelperRoutines } from './helpers';
6
+ import { BasketItem, ManagementInfo, User } from '../types/graphql.types';
7
+ import { EnterpriseBasketServiceInterface } from '../interfaces/Ienterprise-basket.service';
8
+
9
+ interface UserManagementSupplement {
10
+ [key: string]: {
11
+ managementInfo: ManagementInfoAndIsValid[];
12
+ };
13
+ }
14
+
15
+ export class BasketInfoMiDetailsImpl {
16
+ miPerItem: ManagementInfoAndIsValid[];
17
+ miPerUser: UserManagementSupplement;
18
+ users: string[];
19
+ basketItem: BasketItem;
20
+ isValidObservers: ManagementInfoAndIsValid[] = [];
21
+
22
+ constructor(
23
+ item: BasketItem,
24
+ private basketService: EnterpriseBasketServiceInterface,
25
+ private helpers: BaseHelperRoutines
26
+ ) {
27
+ this.basketItem = item;
28
+ const { perItem, perUser } = item.managementInfo.reduce(
29
+ (
30
+ miAccum: {
31
+ perItem: ManagementInfoAndIsValid[];
32
+ perUser: ManagementInfoAndIsValid[];
33
+ },
34
+ miItem: ManagementInfo
35
+ ) => {
36
+ const miItemObj = makeManagamentInfo(miItem, this.basketService);
37
+ this.isValidObservers.push(miItemObj);
38
+
39
+ if (miItem.perBooking) {
40
+ miAccum.perItem.push(miItemObj);
41
+ } else {
42
+ miAccum.perUser.push(miItemObj);
43
+ }
44
+
45
+ return miAccum;
46
+ },
47
+ { perItem: [], perUser: [] }
48
+ );
49
+
50
+ this.miPerItem = perItem;
51
+ this.miPerUser = item.users.reduce(
52
+ (userAccum: UserManagementSupplement, user: User) => {
53
+ userAccum[user.id] = {
54
+ managementInfo: this.helpers
55
+ .clone(perUser)
56
+ .map((miItem: ManagementInfo): ManagementInfoAndIsValid => {
57
+ const miItemObj = makeManagamentInfo(miItem, this.basketService);
58
+ this.isValidObservers.push(miItemObj);
59
+ return miItemObj;
60
+ })
61
+ };
62
+ return userAccum;
63
+ },
64
+ {}
65
+ );
66
+ this.users = Object.keys(this.miPerUser);
67
+ }
68
+ }
@@ -0,0 +1,343 @@
1
+ import { BehaviorSubject } from 'rxjs';
2
+ import { Traveller } from '../models/traveller.object';
3
+ import {
4
+ BasketDetails,
5
+ BasketItemManagementInfo,
6
+ MiGroupDetail
7
+ } from '../services/enterprise-basket.service';
8
+ import { BaseHelperRoutines } from '../classes/helpers';
9
+ import { BookingStatus } from '../types/types';
10
+ import { EnterpriseBasketServiceInterface } from '../interfaces/Ienterprise-basket.service';
11
+ import {
12
+ BasketItem,
13
+ BasketStatus,
14
+ PassengerType,
15
+ PaymentMethod,
16
+ SupplementaryBookingInfo,
17
+ User,
18
+ UserPassengerType
19
+ } from '../types/graphql.types';
20
+
21
+ export class BookableBasket {
22
+ status: BehaviorSubject<BookingStatus> = new BehaviorSubject<BookingStatus>(
23
+ BookingStatus.Loading
24
+ );
25
+
26
+ basket: BehaviorSubject<BasketDetails> = new BehaviorSubject<BasketDetails>(
27
+ {} as BasketDetails
28
+ );
29
+ needsToViewMi: boolean = true;
30
+ isUpdating: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);
31
+ private id: string = null;
32
+ constructor(
33
+ private basketService: EnterpriseBasketServiceInterface,
34
+ private helpers: BaseHelperRoutines
35
+ ) {}
36
+
37
+ loadBasket(id: string): void {
38
+ this.id = id;
39
+ this.basket = new BehaviorSubject<BasketDetails>({} as BasketDetails);
40
+ this.status.next(BookingStatus.Loading);
41
+ this.isUpdating.next(true);
42
+ this._loadBasket(id);
43
+ }
44
+
45
+ /*
46
+ Loading,
47
+ 0 AddingItems,
48
+ 1 AddingTravellers,
49
+ 2 AddingLeadPassenger,
50
+ 3 Failed,
51
+ 4 Revalidate,
52
+ 5 RevalidatingError,
53
+ 6 RevalidatingAccepted,
54
+ 7 ChooseMIGroup,
55
+ 8 ProvideMi,
56
+ 9 SendForApproval,
57
+ 10 AwaitingApproval,
58
+ 11 Approved
59
+ 12 PartiallyBooked,
60
+ 13 Complete
61
+ */
62
+
63
+ private _loadBasket(id: string): void {
64
+ this.basketService.loadBasket(id);
65
+
66
+ this.basketService.subsribeToBasket(id, {
67
+ next: (basket: BasketDetails) => {
68
+ this.basket.next(basket);
69
+ this.updateBasket(basket);
70
+ },
71
+ error: (error: any) => {
72
+ this.basket.error(error);
73
+ console.error(error);
74
+ },
75
+ complete: () => {
76
+ this.basket.complete();
77
+ console.log('Basket completed');
78
+ }
79
+ });
80
+ }
81
+
82
+ updateBasket(basket: BasketDetails): void {
83
+ this.isUpdating.next(false);
84
+ switch (basket.status) {
85
+ case BasketStatus.Open:
86
+ this.workoutOpenState(basket);
87
+ break;
88
+ case BasketStatus.AwaitingApproval:
89
+ this.status.next(
90
+ this.workoutState(basket, BookingStatus.AwaitingApproval)
91
+ );
92
+ break;
93
+ case BasketStatus.Approved:
94
+ this.status.next(this.workoutApprovedState(basket));
95
+ break;
96
+ case BasketStatus.Booked:
97
+ this.status.next(this.workoutState(basket, BookingStatus.Complete));
98
+ break;
99
+ case BasketStatus.BookingFailed:
100
+ this.status.next(this.workoutState(basket, BookingStatus.Failed));
101
+ break;
102
+ case BasketStatus.Disapproved:
103
+ this.status.next(BookingStatus.Failed);
104
+ break;
105
+ case BasketStatus.PartiallyBooked:
106
+ this.status.next(BookingStatus.Failed);
107
+ break;
108
+ default:
109
+ const tmp: never = basket.status;
110
+ console.log(tmp);
111
+ }
112
+ }
113
+ sendBasketForApproval(): void {
114
+ this.basketService.sendBasketForApproval(this.id);
115
+ }
116
+
117
+ workoutApprovedState(basket: BasketDetails): BookingStatus {
118
+ let status = BookingStatus.ApprovedBook;
119
+
120
+ if (
121
+ !!basket.basketItems.find((basketItem: BasketItem): boolean => {
122
+ return (
123
+ basketItem.availablePaymentMethods?.length > 0 &&
124
+ !basketItem.selectedPaymentMethod
125
+ );
126
+ })
127
+ ) {
128
+ return this.workoutState(basket, BookingStatus.ApprovedPaymentOption);
129
+ }
130
+
131
+ console.log(basket.suppInfo);
132
+ const haveSuppDetails = basket.suppInfo.find((supp) => supp.hasDetails);
133
+ console.log(haveSuppDetails);
134
+ if (haveSuppDetails) {
135
+ status = BookingStatus.ApprovedSupplemtal;
136
+ }
137
+ return this.workoutState(basket, status);
138
+ }
139
+
140
+ workoutState(
141
+ basket: BasketDetails,
142
+ defaultState: BookingStatus
143
+ ): BookingStatus {
144
+ // Is the basket validated.
145
+ if (!basket.validated) {
146
+ if (this._hasInvalidPrice(basket)) {
147
+ return BookingStatus.Revalidate;
148
+ }
149
+ return BookingStatus.Revalidate;
150
+ }
151
+ return defaultState;
152
+ }
153
+
154
+ workoutOpenState(basket: BasketDetails): BookingStatus {
155
+ // If any of the basketItems don't have enough travellers, then we need to add them.
156
+ if (basket.basketItems.length === 0) {
157
+ this.status.next(BookingStatus.AddingItems);
158
+ return;
159
+ }
160
+ if (this._needsCorrectTravellers(basket)) {
161
+ this.status.next(BookingStatus.AddingTravellers);
162
+ return;
163
+ }
164
+
165
+ if (this._needLeadPassengers(basket)) {
166
+ this.status.next(BookingStatus.AddingLeadPassenger);
167
+ return;
168
+ }
169
+ // Is the basket validated.
170
+ if (!basket.validated) {
171
+ if (this._hasInvalidPrice(basket)) {
172
+ this.status.next(BookingStatus.Revalidate);
173
+ return;
174
+ }
175
+ this.status.next(BookingStatus.Revalidate);
176
+ return;
177
+ }
178
+
179
+ if (this._needsMiGroups(basket)) {
180
+ this.status.next(BookingStatus.ChooseMIGroup);
181
+ return;
182
+ }
183
+
184
+ if (this.helpers.needsMi(basket, this.needsToViewMi)) {
185
+ this.status.next(BookingStatus.ProvideMi);
186
+ return;
187
+ }
188
+
189
+ this.status.next(BookingStatus.SendForApproval);
190
+ }
191
+
192
+ revalidate() {
193
+ this.basketService.revalidate(this.id);
194
+ }
195
+
196
+ addTravellers(
197
+ basket: BasketDetails,
198
+ basketItem: BasketItem,
199
+ travellers: Traveller[],
200
+ index: number = 0
201
+ ): void {
202
+ this.isUpdating.next(true);
203
+ this.basketService.addTravellers(basket.id, basketItem, travellers, index);
204
+ }
205
+
206
+ setLeadPassenger(
207
+ basket: BasketDetails,
208
+ basketItem: BasketItem,
209
+ travellers: Traveller,
210
+ index: number = 0
211
+ ): void {
212
+ this.isUpdating.next(true);
213
+ this.basketService.setLeadPassenger(
214
+ basket.id,
215
+ basketItem,
216
+ travellers,
217
+ index
218
+ );
219
+ }
220
+
221
+ setBasketItemMiGroup(basketId: string, groupDetail: MiGroupDetail) {
222
+ this.isUpdating.next(true);
223
+ this.basketService.setBasketItemMiGroup(
224
+ basketId,
225
+ groupDetail.basketItem.id,
226
+ groupDetail.value
227
+ );
228
+ }
229
+
230
+ saveMiGroup(miGroupDetailsResult: MiGroupDetail[]) {
231
+ this.isUpdating.next(true);
232
+ miGroupDetailsResult.forEach((groupDetails: MiGroupDetail) => {
233
+ this.setBasketItemMiGroup(this.id, groupDetails);
234
+ });
235
+ }
236
+
237
+ saveMi(results: BasketItemManagementInfo[]) {
238
+ this.needsToViewMi = false;
239
+ this.isUpdating.next(true);
240
+ if (results) {
241
+ this.basketService.saveMiData(this.id, results);
242
+ }
243
+ }
244
+
245
+ removeExpiredItems() {
246
+ this.isUpdating.next(true);
247
+ this.basketService.removeExpiredItems(this.id);
248
+ }
249
+
250
+ setBasketItemPaymentOption(
251
+ basketItem: BasketItem,
252
+ paymentMethod: string
253
+ ): Promise<void> {
254
+ this.isUpdating.next(true);
255
+ return this.basketService.setBasketItemPaymentOption(
256
+ this.basket.value,
257
+ basketItem,
258
+ paymentMethod
259
+ );
260
+ }
261
+
262
+ bookBasket(results: SupplementaryBookingInfo[]): void {
263
+ this.isUpdating.next(true);
264
+ if (results) {
265
+ this.basketService.bookBasket(this.id, results);
266
+ }
267
+ }
268
+
269
+ private _needsMiGroups(basket: BasketDetails) {
270
+ return !!basket.basketItems.find((basketItem: BasketItem): boolean => {
271
+ return (
272
+ basketItem.miGroupsAvailable.length > 0 && !basketItem.miGroupSelected
273
+ );
274
+ });
275
+ }
276
+
277
+ private _needsCorrectTravellers(basket: BasketDetails): boolean {
278
+ return !!basket.basketItems.find((basketItem: BasketItem) => {
279
+ const travellers = this._splitTravellers(basketItem);
280
+ return !(
281
+ travellers.adults.length === basketItem.adults &&
282
+ travellers.children.length === basketItem.children &&
283
+ travellers.infants.length === basketItem.infants
284
+ );
285
+ });
286
+ }
287
+
288
+ private _hasInvalidPrice(basket: BasketDetails): boolean {
289
+ return !!basket.basketItems.find((basketItem: BasketItem) => {
290
+ return !basketItem.latestValidationPriceDifference || basketItem.expired;
291
+ });
292
+ }
293
+
294
+ private _needLeadPassengers(basket: BasketDetails): boolean {
295
+ return !!basket.basketItems.find((basketItem: BasketItem) => {
296
+ return !basketItem.leadPassenger;
297
+ });
298
+ }
299
+
300
+ private _splitTravellers(basketItem: BasketItem): {
301
+ adults: User[];
302
+ children: User[];
303
+ infants: User[];
304
+ } {
305
+ return (basketItem.userPassengerTypes || []).reduce(
306
+ (
307
+ accum: { adults: User[]; children: User[]; infants: User[] },
308
+ user: UserPassengerType,
309
+ index: number
310
+ ) => {
311
+ switch (user.passengerType) {
312
+ case PassengerType.Adult:
313
+ accum.adults.push(
314
+ this._findUser(basketItem.users, Number(user.id))
315
+ );
316
+ break;
317
+ case PassengerType.Child:
318
+ accum.children.push(
319
+ this._findUser(basketItem.users, Number(user.id))
320
+ );
321
+ break;
322
+ case PassengerType.Infant:
323
+ accum.infants.push(
324
+ this._findUser(basketItem.users, Number(user.id))
325
+ );
326
+ break;
327
+ }
328
+ return accum;
329
+ },
330
+ { adults: [], children: [], infants: [] }
331
+ );
332
+ }
333
+
334
+ private _findUser(users: User[], id: number): User {
335
+ return users.find((user: User) => {
336
+ return Number(user.id) === id;
337
+ });
338
+ }
339
+
340
+ getId(): string {
341
+ return this.id;
342
+ }
343
+ }