@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,907 @@
1
+ import moment from 'moment';
2
+ import { BaseEnterpriseSearch } from './base-enterprise';
3
+ import { BaseStorageService } from '../services/storage.service';
4
+ import { BaseHelperRoutines } from './helpers';
5
+ import { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';
6
+ import { Traveller } from '../models/traveller.object';
7
+ import {
8
+ AddressForm,
9
+ CabhireQuoteResultArray,
10
+ NgbDateStruct,
11
+ RailAirport,
12
+ RecentSearch,
13
+ LocationDetails,
14
+ LocationTypes
15
+ } from '../types/types';
16
+ import { EnterpriseSearchServiceInterface } from '../interfaces/Isearch.service';
17
+ import {
18
+ BaseCabhireQuoteFetcher,
19
+ CabhireQuoteFetcherType
20
+ } from '../fetchers/cabhire-quote-fetcher';
21
+ import {
22
+ BasketItem,
23
+ CabHireLocation,
24
+ CabHireQuote,
25
+ CabHireVehicleType,
26
+ LocationDetail,
27
+ QuerySearchCabHireArgs,
28
+ SaveRecentSearchMutationVariables,
29
+ SearchCabHireQueryVariables,
30
+ SearchFlightsV2QueryVariables,
31
+ ServiceType
32
+ } from '../types/graphql.types';
33
+ import {
34
+ AirportSearchMode,
35
+ CabHireEnterpriseSearchInterface,
36
+ CabHireTempParams,
37
+ TaxiAirport,
38
+ TaxiAttribute,
39
+ TaxiFormMode,
40
+ TransType
41
+ } from '../interfaces/Icabhire-enterprise-search';
42
+ import {
43
+ EnterpriseBasketServiceInterface,
44
+ InternalBasketInterface
45
+ } from '../interfaces/Ienterprise-basket.service';
46
+ import { ICheapestPrice } from '../interfaces/cheapest-price';
47
+ import { map, take } from 'rxjs/operators';
48
+
49
+ export class CabHireEnterpriseSearch<CH_Q extends CabhireQuoteFetcherType>
50
+ extends BaseEnterpriseSearch<
51
+ CabHireTempParams,
52
+ CabhireQuoteResultArray,
53
+ CabhireQuoteResultArray
54
+ >
55
+ implements CabHireEnterpriseSearchInterface
56
+ {
57
+ static readonly STORAGE_SESSION_PARAMS = 'search_cab';
58
+ static readonly STORAGE_SESSION_RESULTS = 'results_cab';
59
+ private outboundVisibility: BehaviorSubject<boolean>;
60
+ private inboundVisibility: BehaviorSubject<boolean>;
61
+ public type: ServiceType = ServiceType.Cab;
62
+ private travellers: Traveller[];
63
+
64
+ airportChange: Subject<TaxiAirport> = new Subject();
65
+
66
+ readonly transTypes: TransType[] = [
67
+ { key: CabHireVehicleType.Any, value: 'Any (1-8 Passengers)', id: 8 },
68
+ {
69
+ key: CabHireVehicleType.StandardCar,
70
+ value: 'Saloon Car (1-4 Passengers)',
71
+ id: 4
72
+ },
73
+ {
74
+ key: CabHireVehicleType.BlackCab,
75
+ value: 'Hackney Carriage (1-4 Passengers)',
76
+ id: 4
77
+ },
78
+ {
79
+ key: CabHireVehicleType.DdaCar,
80
+ value: 'Dda - wheelchair accessible (1-4 Passengers)',
81
+ id: 4
82
+ },
83
+ {
84
+ key: CabHireVehicleType.MediumMpv,
85
+ value: 'People Carrier (1-7 Passengers)',
86
+ id: 7
87
+ },
88
+ {
89
+ key: CabHireVehicleType.ExecutiveCar,
90
+ value: 'Executive (1-4 Passengers)',
91
+ id: 4
92
+ }
93
+ ];
94
+ readonly attributes: TaxiAttribute[] = [
95
+ { enabled: false, key: 'wheelchair', value: 'Wheelchair (On Request)' },
96
+ { enabled: false, key: 'call_on_arrival', value: 'Call On Arrival' },
97
+ {
98
+ enabled: false,
99
+ key: 'meet_and_greet',
100
+ value: 'Meet And Greet (Charge Applies)'
101
+ },
102
+ { enabled: false, key: 'wait_and_return', value: 'Wait And Return' }
103
+ ];
104
+ readonly searchTypes = [
105
+ 'One-way'
106
+ // , 'Return'
107
+ ];
108
+
109
+ readonly airportSearchTypes = ['Airport drop off', 'Airport Pick Up'];
110
+ readonly criteria = ['Pick Up Time'];
111
+
112
+ mode: TaxiFormMode = TaxiFormMode.ADDRESS;
113
+ minSelectDate: moment.Moment = moment();
114
+
115
+ // getters and setters
116
+ private _date: NgbDateStruct = null;
117
+ selectedPlaces: any = [];
118
+ private _fromLocation: CabHireLocation;
119
+ private _toLocation: CabHireLocation;
120
+ private _vias: CabHireLocation[] = [null, null, null, null];
121
+
122
+ get fromLocation(): CabHireLocation {
123
+ return this._fromLocation;
124
+ }
125
+
126
+ get toLocation(): CabHireLocation {
127
+ return this._toLocation;
128
+ }
129
+
130
+ get date(): NgbDateStruct {
131
+ return this._date;
132
+ }
133
+
134
+ set date(value: NgbDateStruct) {
135
+ this._date = value;
136
+ this._updateDateTime();
137
+ }
138
+
139
+ /*
140
+ * searchType
141
+ */
142
+ private _searchType = this.searchTypes[0];
143
+ get searchType() {
144
+ return this._searchType;
145
+ }
146
+
147
+ set searchType(value: string) {
148
+ this._searchType = value;
149
+ }
150
+
151
+ /*
152
+ * airpoirt searchType
153
+ */
154
+
155
+ _airportSearchType: AirportSearchMode = AirportSearchMode.DROPOFF;
156
+ get airportSearchType(): AirportSearchMode {
157
+ return this._airportSearchType;
158
+ }
159
+ set airportSearchType(mode: AirportSearchMode) {
160
+ this._airportSearchType = mode;
161
+ if (this.fromAddress || this.toAddress) {
162
+ this.switchFromAndToLocation();
163
+ }
164
+ }
165
+ /*
166
+ * airpoirt and train station searchType
167
+ */
168
+
169
+ get fromLocationType(): TaxiFormMode {
170
+ return this.tempParams.fromLocationType;
171
+ }
172
+ set fromLocationType(mode: TaxiFormMode) {
173
+ this.tempParams.fromLocationType = mode;
174
+ }
175
+ get toLocationType(): TaxiFormMode {
176
+ return this.tempParams.toLocationType;
177
+ }
178
+ set toLocationType(mode: TaxiFormMode) {
179
+ this.tempParams.toLocationType = mode;
180
+ }
181
+ /*
182
+ * searchCriteria
183
+ */
184
+ private _searchCriteria = this.criteria[0];
185
+ get searchCriteria() {
186
+ return this._searchCriteria;
187
+ }
188
+
189
+ set searchCriteria(value: string) {
190
+ this._searchCriteria = value;
191
+ }
192
+
193
+ /*
194
+ * outboundDateTime
195
+ */
196
+ private _outboundDateTime: moment.Moment = this.helpers.round(
197
+ moment(),
198
+ moment.duration(15, 'minutes')
199
+ );
200
+ get outboundDateTime() {
201
+ return this._outboundDateTime;
202
+ }
203
+
204
+ set outboundDateTime(value: moment.Moment) {
205
+ this._outboundDateTime = value;
206
+ }
207
+
208
+ /*
209
+ * returnDateTime
210
+ */
211
+ private _returnDateTime: moment.Moment = this.helpers.round(
212
+ moment(),
213
+ moment.duration(15, 'minutes')
214
+ );
215
+ get returnDateTime() {
216
+ return this._returnDateTime;
217
+ }
218
+
219
+ set returnDateTime(value: moment.Moment) {
220
+ this._returnDateTime = value;
221
+ }
222
+
223
+ /*
224
+ * flightNumber
225
+ */
226
+ private _flightNumber: string = '';
227
+ get flightNumber() {
228
+ return this._flightNumber;
229
+ }
230
+ set flightNumber(value: string) {
231
+ this._flightNumber = value;
232
+ }
233
+
234
+ /*
235
+ * airport
236
+ */
237
+
238
+ get airport() {
239
+ return this.tempParams.airport;
240
+ }
241
+ set airport(value: TaxiAirport) {
242
+ this.tempParams.airport = value;
243
+ }
244
+
245
+ /*
246
+ * terminal
247
+ */
248
+ private _terminal: string = null;
249
+ get terminal() {
250
+ return this._terminal;
251
+ }
252
+ set terminal(value: string) {
253
+ this._terminal = value;
254
+ }
255
+
256
+ private _time: string = null;
257
+ get time(): string {
258
+ return this._time;
259
+ }
260
+
261
+ set time(value: string) {
262
+ this._time = value;
263
+ this._updateDateTime();
264
+ }
265
+
266
+ get departs(): moment.Moment {
267
+ return this.tempParams.departs;
268
+ }
269
+
270
+ set departs(value: moment.Moment) {
271
+ this.tempParams.departs = value.isValid ? value : null;
272
+ if (value && value.isValid()) {
273
+ this._date = this.helpers.momentToNgDate(value);
274
+ this._time = this.helpers.formatTimeColon(value);
275
+ }
276
+ this._isValid();
277
+ }
278
+
279
+ // get fromLocation(): CabHireLocation {
280
+ // return this._fromLocation;
281
+ // }
282
+
283
+ // set fromLocation(value: CabHireLocation) {
284
+ // this._fromLocation = value;
285
+ // this._isValid();
286
+ // }
287
+
288
+ // get toLocation(): CabHireLocation {
289
+ // return this._toLocation;
290
+ // }
291
+
292
+ // set toLocation(value: CabHireLocation) {
293
+ // this._toLocation = value;
294
+ // this._isValid();
295
+ // }
296
+
297
+ get adults(): number {
298
+ return this.tempParams.adults;
299
+ }
300
+
301
+ set adults(value: number) {
302
+ this.tempParams.adults = value;
303
+ this._isValid();
304
+ }
305
+
306
+ get children(): number {
307
+ return this.tempParams.children;
308
+ }
309
+
310
+ set children(value: number) {
311
+ this.tempParams.children = value;
312
+ this._isValid();
313
+ }
314
+
315
+ get infants(): number {
316
+ return this.tempParams.infants;
317
+ }
318
+
319
+ set infants(value: number) {
320
+ this.tempParams.infants = value;
321
+ this._isValid();
322
+ }
323
+
324
+ get countryCode(): string {
325
+ return this.tempParams.countryCode;
326
+ }
327
+
328
+ set countryCode(value: string) {
329
+ this.tempParams.countryCode = value;
330
+ this._isValid();
331
+ }
332
+
333
+ get vias(): CabHireLocation[] {
334
+ return this._vias;
335
+ }
336
+
337
+ set vias(value: CabHireLocation[]) {
338
+ this._vias = value;
339
+ this._isValid();
340
+ }
341
+
342
+ get viasFrom(): AddressForm {
343
+ return this.tempParams.viasFrom;
344
+ }
345
+
346
+ set viasFrom(value: AddressForm) {
347
+ this.tempParams.viasFrom = value;
348
+ this._vias[0] = value ? this.createCabHireLocation(value) : null;
349
+ this._isValid();
350
+ }
351
+
352
+ get viasTo(): AddressForm {
353
+ return this.tempParams.viasTo;
354
+ }
355
+
356
+ set viasTo(value: AddressForm) {
357
+ this.tempParams.viasTo = value;
358
+ this._vias[1] = value ? this.createCabHireLocation(value) : null;
359
+ this._isValid();
360
+ }
361
+
362
+ get vehicleType(): CabHireVehicleType {
363
+ return this.tempParams.vehicleType;
364
+ }
365
+
366
+ set vehicleType(value: CabHireVehicleType) {
367
+ this.tempParams.vehicleType = value;
368
+ this._isValid();
369
+ }
370
+
371
+ get fromAddress(): AddressForm {
372
+ return this.tempParams.fromAddress;
373
+ }
374
+
375
+ set fromAddress(value: AddressForm) {
376
+ this.tempParams.fromAddress = value;
377
+ this._fromLocation = value ? this.createCabHireLocation(value) : null;
378
+ this._isValid();
379
+ }
380
+
381
+ get fromStation(): RailAirport {
382
+ return this.tempParams.fromStation;
383
+ }
384
+
385
+ set fromStation(value: RailAirport) {
386
+ this.tempParams.fromStation = value;
387
+
388
+ this._fromLocation = value
389
+ ? {
390
+ address: value.destination,
391
+ postcode: value.postcode
392
+ }
393
+ : null;
394
+ this._isValid();
395
+ }
396
+
397
+ get toAddress(): AddressForm {
398
+ return this.tempParams.toAddress;
399
+ }
400
+
401
+ set toAddress(value: AddressForm) {
402
+ this.tempParams.toAddress = value;
403
+ this._toLocation = value ? this.createCabHireLocation(value) : null;
404
+ this._isValid();
405
+ }
406
+
407
+ get toStation(): RailAirport {
408
+ return this.tempParams.toStation;
409
+ }
410
+
411
+ set toStation(value: RailAirport) {
412
+ this.tempParams.toStation = value;
413
+ this._toLocation = value
414
+ ? {
415
+ address: value.destination,
416
+ postcode: value.postcode
417
+ }
418
+ : null;
419
+ this._isValid();
420
+ }
421
+
422
+ constructor(
423
+ private cabfetcher: BaseCabhireQuoteFetcher<CH_Q>,
424
+ private helpers: BaseHelperRoutines,
425
+ storageService: BaseStorageService,
426
+ private searchService: EnterpriseSearchServiceInterface,
427
+ private basketService: EnterpriseBasketServiceInterface
428
+ ) {
429
+ super(storageService);
430
+ const data: {
431
+ tempParams: CabHireTempParams;
432
+ } = storageService.getSessionItem(
433
+ CabHireEnterpriseSearch.STORAGE_SESSION_PARAMS
434
+ ) || {
435
+ tempParams: {} as CabHireTempParams
436
+ };
437
+
438
+ // const momentDateTime = data.query.departs
439
+ // ? moment(data.query.departs)
440
+ // : moment();
441
+
442
+ this.updateTempParams(searchService.makeCabHireQuery(data.tempParams));
443
+
444
+ if (data.tempParams.fromAddress) {
445
+ this.fromAddress = data.tempParams.fromAddress;
446
+ }
447
+
448
+ if (data.tempParams.toAddress) {
449
+ this.toAddress = data.tempParams.toAddress;
450
+ }
451
+
452
+ if (searchService.shouldAddTravellerSubscription()) {
453
+ searchService.travellerInformation.subscribe(
454
+ (travellers: Traveller[]) => {
455
+ this.travellers = travellers;
456
+ const splitTravellers = this.helpers.selectedTravellers(
457
+ travellers,
458
+ ServiceType.Cab
459
+ );
460
+ this.tempParams.adults = splitTravellers.adults.length;
461
+ this.tempParams.children = splitTravellers.children.length;
462
+ this._isValid();
463
+ }
464
+ );
465
+ }
466
+
467
+ const results =
468
+ storageService.getSessionItemAsList<CabhireQuoteResultArray>(
469
+ this.resultsSessionName
470
+ ) || [];
471
+ this.fullResults = results;
472
+ this._cheapestResultPrice = this.updateLowestPrice(results);
473
+ this.results.next(results || []);
474
+ this._isValid();
475
+ this.outboundVisibility = new BehaviorSubject<boolean>(false);
476
+ this.inboundVisibility = new BehaviorSubject<boolean>(false);
477
+ }
478
+
479
+ protected resultsSessionName =
480
+ CabHireEnterpriseSearch.STORAGE_SESSION_RESULTS;
481
+
482
+ protected resetQuery(): void {
483
+ this.updateTempParams(this.searchService.makeCabHireQuery());
484
+ this._isValid();
485
+ }
486
+
487
+ public resetParams(): void {
488
+ this.reset();
489
+ this.resetQuery();
490
+ this.results.next([]);
491
+ }
492
+
493
+ private _isValid() {
494
+ if (!this.doChecks) {
495
+ return;
496
+ }
497
+ this.storageService.setSessionItem(
498
+ CabHireEnterpriseSearch.STORAGE_SESSION_PARAMS,
499
+ {
500
+ tempParams: this.tempParams
501
+ }
502
+ );
503
+
504
+ this.validationMessages = [];
505
+ if (!this.tempParams.fromAddress) {
506
+ this.validationMessages.push('From - Enter a location or postcode.');
507
+ }
508
+
509
+ if (!this.tempParams.toAddress) {
510
+ this.validationMessages.push('To - Enter a location or postcode.');
511
+ }
512
+
513
+ if (this.tempParams.departs.unix() < moment().unix()) {
514
+ this.validationMessages.push('Taxi journey cannot be in the past.');
515
+ }
516
+
517
+ if (this.tempParams.adults + this.tempParams.children < 1) {
518
+ this.validationMessages.push('There must be at least 1 traveller');
519
+ }
520
+
521
+ this.isValid.next(this.validationMessages.length === 0);
522
+ this.messages.next(this.validationMessages);
523
+ }
524
+
525
+ private _updateDateTime() {
526
+ if (this._date && this._time) {
527
+ this.departs = this.helpers.ngDateToMoment(this._date, this._time);
528
+ }
529
+ }
530
+
531
+ startSearch(): Promise<boolean> {
532
+ this.results.next([]);
533
+ if (this.isValid.value) {
534
+ const query = this.getSearchQuery();
535
+ this.searchService.saveRecentSearch(this.getRecentSearchQuery(query));
536
+
537
+ return this._startSearch(
538
+ this.cabfetcher.fetchList(
539
+ this.helpers.removeNulls<QuerySearchCabHireArgs>(query)
540
+ )
541
+ );
542
+ } else {
543
+ return Promise.resolve(false);
544
+ }
545
+ }
546
+
547
+ getRecentSearchQuery(query: QuerySearchCabHireArgs): SaveRecentSearchMutationVariables {
548
+ return {
549
+ serviceType: ServiceType.Cab,
550
+ searchArgs: query,
551
+ travelDate: this.departs.format(),
552
+ travellers: this.helpers.getTravellersId(this.travellers)
553
+ };
554
+ }
555
+
556
+ startRecentSearch(recentSearch: RecentSearch): void{
557
+ this.departs = moment(recentSearch.searchArgs.departs);
558
+ this.vehicleType = recentSearch.searchArgs.vehicleType;
559
+
560
+ combineLatest([
561
+ this.getStationOrAirport(recentSearch.searchArgs.fromLocation.address),
562
+ this.getStationOrAirport(recentSearch.searchArgs.toLocation.address)
563
+ ]).subscribe(([fromStationOrAirport, toStationOrAirport]) => {
564
+ if (fromStationOrAirport.length) {
565
+ this.fromStation = this.getStationOrAirportAdress(fromStationOrAirport[0]);
566
+ this.fromAddress = this.convertStationOrAirportLocation(recentSearch.searchArgs.fromLocation.address, recentSearch.searchArgs.fromLocation.postcode);
567
+ } else {
568
+ this.fromAddress = this.convertAddressLocation(recentSearch.searchArgs.fromLocation.address, recentSearch.searchArgs.fromLocation.postcode);
569
+ }
570
+ if (toStationOrAirport.length) {
571
+ this.toStation = this.getStationOrAirportAdress(toStationOrAirport[0]);
572
+ this.toAddress = this.convertStationOrAirportLocation(recentSearch.searchArgs.toLocation.address, recentSearch.searchArgs.toLocation.postcode);
573
+ } else {
574
+ this.toAddress = this.convertAddressLocation(recentSearch.searchArgs.toLocation.address, recentSearch.searchArgs.toLocation.postcode);
575
+ }
576
+ if(recentSearch.searchArgs.vias[0]) {
577
+ this.getStationOrAirport(recentSearch.searchArgs.vias[0].address).subscribe((viaFromStationOrAirport) => {
578
+ if (viaFromStationOrAirport.length) {
579
+ this.viasFrom = this.convertStationOrAirportLocation(recentSearch.searchArgs.vias[0].address, recentSearch.searchArgs.vias[0].postcode);
580
+ } else {
581
+ this.viasFrom = this.convertAddressLocation(recentSearch.searchArgs.vias[0].address, recentSearch.searchArgs.vias[0].postcode);
582
+ }
583
+ this.searchService.startSearches();
584
+ });
585
+ }
586
+ if(recentSearch.searchArgs.vias[1]) {
587
+ this.getStationOrAirport(recentSearch.searchArgs.vias[1].address).subscribe((viaToStationOrAirport) => {
588
+ if (viaToStationOrAirport.length) {
589
+ this.viasTo = this.convertStationOrAirportLocation(recentSearch.searchArgs.vias[1].address, recentSearch.searchArgs.vias[1].postcode);
590
+ } else {
591
+ this.viasTo = this.convertAddressLocation(recentSearch.searchArgs.vias[1].address, recentSearch.searchArgs.vias[1].postcode);
592
+ }
593
+
594
+ this.searchService.startSearches();
595
+ });
596
+ }
597
+
598
+ this.searchService.startSearches();
599
+ });
600
+
601
+ }
602
+
603
+ getSearchQuery(): QuerySearchCabHireArgs {
604
+ const query: QuerySearchCabHireArgs = {
605
+ adults: this.tempParams.adults,
606
+ children: this.tempParams.children,
607
+ departs: this.tempParams.departs,
608
+ fromLocation: this.createCabHireLocation(this.tempParams.fromAddress),
609
+ toLocation: this.createCabHireLocation(this.tempParams.toAddress),
610
+ infants: 0,
611
+ vehicleType: this.vehicleType,
612
+ vias: this._vias,
613
+ };
614
+ return this.helpers.removeNulls<QuerySearchCabHireArgs>(query);
615
+ }
616
+
617
+ updateOutboundAddress(location: any, placeDescription?: string): void {
618
+ this.tempParams.fromAddress = this.getAddressFormat(
619
+ location,
620
+ placeDescription
621
+ );
622
+ }
623
+
624
+ updateInboundAddress(location: any, placeDescription?: string): void {
625
+ this.tempParams.toAddress = this.getAddressFormat(
626
+ location,
627
+ placeDescription
628
+ );
629
+ }
630
+
631
+ private createCabHireLocation(location: AddressForm): CabHireLocation {
632
+ return {
633
+ address: [
634
+ location?.Terminal,
635
+ location?.House,
636
+ location?.Street,
637
+ location?.Town,
638
+ location?.Country
639
+ ]
640
+ .filter((item: string): boolean => !!item)
641
+ .join(','),
642
+ postcode: location?.PostCode
643
+ };
644
+ }
645
+
646
+ matchAddresses() {
647
+ this._toLocation = this.createCabHireLocation(this.tempParams.toAddress);
648
+ this._fromLocation = this.createCabHireLocation(
649
+ this.tempParams.fromAddress
650
+ );
651
+ this._isValid();
652
+ }
653
+
654
+ sortBy(asc?: boolean) {
655
+ let results = this.helpers.clone(this.fullResults);
656
+ if (asc) {
657
+ results = results.sort(
658
+ (a: CabHireQuote, b: CabHireQuote) => b.price - a.price
659
+ );
660
+ } else {
661
+ results = results.sort(
662
+ (a: CabHireQuote, b: CabHireQuote) => a.price - b.price
663
+ );
664
+ }
665
+ this.results.next(results);
666
+ }
667
+
668
+ // ! stuff to go in a postcode servie
669
+
670
+ getAddressFormat(location: any, placeDescription?: string) {
671
+ return {
672
+ House: this.getAddressFromPlaceDetails(location, [
673
+ 'floor',
674
+ 'street_number',
675
+ 'premise'
676
+ ]),
677
+ Street: this.getAddressFromPlaceDetails(location, [
678
+ 'route',
679
+ 'street_name',
680
+ 'establishment'
681
+ ]),
682
+ Town: this.getAddressFromPlaceDetails(location, [
683
+ 'postal_town',
684
+ 'administrative_area_level_2',
685
+ 'locality'
686
+ ]),
687
+ PostCode: this.getAddressFromPlaceDetails(location, ['postal_code']),
688
+ Country: this.getAddressFromPlaceDetails(location, ['country']),
689
+ placeDescription
690
+ };
691
+ }
692
+
693
+ getAddressFromPlaceDetails(placeDetails: any, types: string[]): string {
694
+ let addressProp = null;
695
+ if (placeDetails && Array.isArray(placeDetails)) {
696
+ for (const type of types) {
697
+ const prop = placeDetails.filter((pd) => {
698
+ return Array.isArray(pd.types) && pd.types.includes(type);
699
+ })[0];
700
+
701
+ if (prop) {
702
+ addressProp = prop.long_name;
703
+ break;
704
+ }
705
+ }
706
+ }
707
+ return addressProp;
708
+ }
709
+
710
+ getAddressFromAirportDetails(
711
+ airportDetails: LocationDetail,
712
+ airportName: string
713
+ ) {
714
+ console.log(airportDetails);
715
+ let address: AddressForm = null;
716
+ if (airportDetails) {
717
+ address = {
718
+ Country: airportDetails.country,
719
+ Street: airportDetails.road,
720
+ PostCode: airportDetails.postcode,
721
+ Town: airportDetails.city,
722
+ placeDescription: airportName,
723
+ House: airportName
724
+ };
725
+ }
726
+ return address;
727
+ }
728
+
729
+ setLocationFromAirport(airportDetails: LocationDetail, airportName: string) {
730
+ const address = this.getAddressFromAirportDetails(
731
+ airportDetails,
732
+ airportName
733
+ );
734
+ if (this.mode === TaxiFormMode.STATION) {
735
+ if (this.airportSearchType === AirportSearchMode.PICKUP) {
736
+ this.fromAddress = address;
737
+ } else {
738
+ this.toAddress = address;
739
+ }
740
+ }
741
+ }
742
+
743
+ addToSelectedPlaces(address: any) {
744
+ this.selectedPlaces.push(address);
745
+ }
746
+
747
+ setOutboundFormVisibility(showForm: boolean): void {
748
+ this.outboundVisibility.next(showForm);
749
+ }
750
+
751
+ setInboundFormVisibility(showForm: boolean): void {
752
+ this.inboundVisibility.next(showForm);
753
+ }
754
+
755
+ getOutboundFormVisibility(): BehaviorSubject<boolean> {
756
+ return this.outboundVisibility;
757
+ }
758
+
759
+ getInboundFormVisibility(): BehaviorSubject<boolean> {
760
+ return this.inboundVisibility;
761
+ }
762
+
763
+ updateFromPreviousSearches(
764
+ previousItems: Record<ServiceType, BasketItem>
765
+ ): void {
766
+ const flightItem: SearchFlightsV2QueryVariables =
767
+ previousItems[ServiceType.Flight]?.searchQuery;
768
+ if (flightItem) {
769
+ // TODO flights haven't been done yet.
770
+ }
771
+ }
772
+
773
+ getTransType(): string {
774
+ const transTypeIndex = this.tempParams.vehicleType;
775
+ return this.transTypes.find((x) => x.key === transTypeIndex)?.value || '';
776
+ }
777
+
778
+ getPassengers = (): string => {
779
+ const adults = this.adults;
780
+ const children = this.children;
781
+ let passengers = `${adults} Adult`;
782
+
783
+ if (Number(adults) !== 1) {
784
+ passengers += 's';
785
+ }
786
+ if (Number(children) === 1) {
787
+ passengers += `, ${children} Child`;
788
+ }
789
+
790
+ if (Number(children) > 1) {
791
+ passengers += `, ${children} Children`;
792
+ }
793
+ return passengers;
794
+ return '';
795
+ };
796
+
797
+ private getStationOrAirport(text: string): Observable<LocationDetails[]>{
798
+ return this.searchService.getStationsAndAirportsList(text, null, this.isLoading).pipe(
799
+ take(1),
800
+ map((res: LocationDetails[]) => {
801
+ return res;
802
+ })
803
+ );
804
+ };
805
+
806
+ private getStationOrAirportAdress(stationOrAirport: LocationDetails): any {
807
+ if (stationOrAirport.type === LocationTypes.Airport) {
808
+ return {
809
+ name: stationOrAirport.name
810
+ };
811
+ } else if (stationOrAirport.type === LocationTypes.TrainStation) {
812
+ return {
813
+ name: stationOrAirport.name
814
+ }
815
+ }
816
+ }
817
+
818
+ private convertStationOrAirportLocation(address: string, postcode: string) {
819
+ return {
820
+ House: address,
821
+ PostCode: postcode,
822
+ }
823
+ }
824
+
825
+ private convertAddressLocation(address: string, postcode: string) {
826
+ let locationArray = address.split(',');
827
+ let street = '';
828
+ let town = locationArray[locationArray.length-2];
829
+
830
+ for (let index = 1; index < locationArray.length-2; index++) {
831
+ street += locationArray[index] + ' ';
832
+ }
833
+ return {
834
+ Country: address.slice(-2),
835
+ House: locationArray[0],
836
+ PostCode: postcode,
837
+ Street: street,
838
+ Town: town
839
+ }
840
+ }
841
+
842
+ async addCabHireToBasket(
843
+ cabHireQuote: CabHireQuote,
844
+ cabHireQuery: SearchCabHireQueryVariables
845
+ ): Promise<boolean> {
846
+ if (cabHireQuote.unavailable) {
847
+ return Promise.resolve(false);
848
+ }
849
+ const intBasket: InternalBasketInterface =
850
+ await this.basketService.getDefaultBasket();
851
+ const basket = intBasket?.subject.value;
852
+ if (basket) {
853
+ return this.basketService.addToBasket(
854
+ {
855
+ adults: cabHireQuery.adults,
856
+ basket: basket.id,
857
+ service: cabHireQuote.sourceId.toString(),
858
+ detail: {
859
+ id: cabHireQuote.id,
860
+ departs: cabHireQuery.departs.format(),
861
+ supplierName: cabHireQuote.supplierName,
862
+ estimatedCO2: cabHireQuote.estimatedCO2,
863
+ fromLocation: {
864
+ address: cabHireQuery.fromLocation.address,
865
+ postcode: cabHireQuery.fromLocation.postcode
866
+ },
867
+ toLocation: {
868
+ address: cabHireQuery.toLocation.address,
869
+ postcode: cabHireQuery.toLocation.postcode
870
+ },
871
+ vehicleType: cabHireQuery.vehicleType
872
+ },
873
+ price: cabHireQuote.price,
874
+ currency: cabHireQuote.currency,
875
+ searchQuery: cabHireQuery,
876
+ co2PerItem: cabHireQuote.co2PerItem,
877
+ co2PerPassenger: cabHireQuote.co2PerPassenger,
878
+ outboundDate: cabHireQuery.departs.format()
879
+ },
880
+ intBasket,
881
+ this.searchService,
882
+ this.travellers
883
+ );
884
+ }
885
+ return Promise.resolve(false); // TODO should this throw an error?
886
+ }
887
+
888
+ switchFromAndToLocation() {
889
+ const newFromAddress = { ...this.toAddress };
890
+ const newToAddress = { ...this.fromAddress };
891
+ this.fromAddress = newFromAddress;
892
+ this.toAddress = newToAddress;
893
+ }
894
+
895
+ updateLowestPrice(results: CabHireQuote[]): ICheapestPrice {
896
+ if (!results.length) return null;
897
+ const currency = results[0].currency;
898
+ return results.reduce(
899
+ (cheapestPrice: ICheapestPrice, result: CabHireQuote) => {
900
+ const price = result.price;
901
+ if (cheapestPrice.amount > price) cheapestPrice.amount = price;
902
+ return cheapestPrice;
903
+ },
904
+ { amount: Number.MAX_SAFE_INTEGER, currencyCode: currency }
905
+ );
906
+ }
907
+ }