@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.
- package/.editorconfig +13 -0
- package/.gitmodules +0 -0
- package/.vscode/settings.json +4 -0
- package/README.md +27 -0
- package/angular.json +45 -0
- package/audit.config.json +6 -0
- package/codegen.yml +18 -0
- package/ng-package.json +7 -0
- package/package.json +84 -0
- package/projects/obtservices/README.md +24 -0
- package/projects/obtservices/angular/package.json +3 -0
- package/projects/obtservices/angular/src/classes.ts +3 -0
- package/projects/obtservices/angular/src/components/basket-panel.ts +139 -0
- package/projects/obtservices/angular/src/components/with-component.ts +40 -0
- package/projects/obtservices/angular/src/components.ts +2 -0
- package/projects/obtservices/angular/src/data.ts +5 -0
- package/projects/obtservices/angular/src/fetchers.ts +32 -0
- package/projects/obtservices/angular/src/lib/vendor/classes/environment.ts +5 -0
- package/projects/obtservices/angular/src/lib/vendor/classes/event-messenager.ts +11 -0
- package/projects/obtservices/angular/src/lib/vendor/classes/helpers.ts +87 -0
- package/projects/obtservices/angular/src/lib/vendor/data/airports.data.json +5508 -0
- package/projects/obtservices/angular/src/lib/vendor/data/animations.ts +38 -0
- package/projects/obtservices/angular/src/lib/vendor/data/booking-expected-responses.json +100 -0
- package/projects/obtservices/angular/src/lib/vendor/data/cities.data.json +31499 -0
- package/projects/obtservices/angular/src/lib/vendor/data/countries.json +1212 -0
- package/projects/obtservices/angular/src/lib/vendor/data/flight-booking.data.json +136 -0
- package/projects/obtservices/angular/src/lib/vendor/data/postcodes1.json +194 -0
- package/projects/obtservices/angular/src/lib/vendor/data/rail_addresses.json +2524 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/basket-fetcher.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +15 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +17 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/flight-quote.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +18 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +17 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/irl-quote-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/parking-quote-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/rail-quote-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airlines-fetcher.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-airports-fetcher.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-cities.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-depots.fetcher.ts +18 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-addresses.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-fetcher.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-message.fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-products-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +16 -0
- package/projects/obtservices/angular/src/lib/vendor/services/enterprise-basket.service.ts +133 -0
- package/projects/obtservices/angular/src/lib/vendor/services/hotel-avallibility.service.ts +19 -0
- package/projects/obtservices/angular/src/lib/vendor/services/http-call.service.ts +252 -0
- package/projects/obtservices/angular/src/lib/vendor/services/logon.service.ts +40 -0
- package/projects/obtservices/angular/src/lib/vendor/services/modal-opener.service.ts +9 -0
- package/projects/obtservices/angular/src/lib/vendor/services/my-bookings.service.ts +21 -0
- package/projects/obtservices/angular/src/lib/vendor/services/route-happy.service.ts +11 -0
- package/projects/obtservices/angular/src/lib/vendor/services/search.service.ts +213 -0
- package/projects/obtservices/angular/src/lib/vendor/services/storage.service.ts +82 -0
- package/projects/obtservices/angular/src/lib/vendor/services/user.service.ts +36 -0
- package/projects/obtservices/angular/src/lib/vendor/services/webtoken.service.ts +62 -0
- package/projects/obtservices/angular/src/lib/vendor/testers/postcode-validate.tester.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/testers/validate-mi-free-value.tester.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/types/graphql.angular.types.ts +11081 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/accept-new-price.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/add-item-to-basket.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/addUserToBasketItem.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/book-basket-updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/create-basket-updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/move-basket-item-to-basket.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-basket-updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-recent-search.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/remove-user-address.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/revalidate-basket-updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/save-recent-search.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/save-user-address.updater.ts +11 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-group.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +15 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/set-payment-option.updater.ts +15 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-notes-updater.ts +14 -0
- package/projects/obtservices/angular/src/lib/vendor/updaters/update-basket-title-updater.ts +14 -0
- package/projects/obtservices/angular/src/obtservices.module.ts +131 -0
- package/projects/obtservices/angular/src/public_api.ts +8 -0
- package/projects/obtservices/angular/src/services.ts +11 -0
- package/projects/obtservices/angular/src/testers.ts +2 -0
- package/projects/obtservices/angular/src/types.ts +1 -0
- package/projects/obtservices/angular/src/updaters.ts +13 -0
- package/projects/obtservices/base/package.json +3 -0
- package/projects/obtservices/base/src/classes.ts +27 -0
- package/projects/obtservices/base/src/custom.d.ts +3 -0
- package/projects/obtservices/base/src/fetchers.ts +36 -0
- package/projects/obtservices/base/src/interfaces.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/classes/base-enterprise.ts +126 -0
- package/projects/obtservices/base/src/lib/vendor/classes/base-network-call.ts +40 -0
- package/projects/obtservices/base/src/lib/vendor/classes/basket-info-mi-details.impl.ts +68 -0
- package/projects/obtservices/base/src/lib/vendor/classes/bookable-basket.ts +343 -0
- package/projects/obtservices/base/src/lib/vendor/classes/cabhire-enterprise-search.ts +907 -0
- package/projects/obtservices/base/src/lib/vendor/classes/carhire-enterprise-search.ts +1597 -0
- package/projects/obtservices/base/src/lib/vendor/classes/empty-enterprise-search.ts +75 -0
- package/projects/obtservices/base/src/lib/vendor/classes/enviroment.ts +25 -0
- package/projects/obtservices/base/src/lib/vendor/classes/eurostar-enterprise-search.ts +2126 -0
- package/projects/obtservices/base/src/lib/vendor/classes/eurostar-search-type.enum.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/classes/event-messenager.ts +23 -0
- package/projects/obtservices/base/src/lib/vendor/classes/flight-enterprise-search.ts +2399 -0
- package/projects/obtservices/base/src/lib/vendor/classes/flight-search-type.enum.ts +5 -0
- package/projects/obtservices/base/src/lib/vendor/classes/helpers.ts +1233 -0
- package/projects/obtservices/base/src/lib/vendor/classes/hotel-enterprise-search.ts +1370 -0
- package/projects/obtservices/base/src/lib/vendor/classes/irl-enterprise-search.ts +1380 -0
- package/projects/obtservices/base/src/lib/vendor/classes/limited-cache.class.ts +70 -0
- package/projects/obtservices/base/src/lib/vendor/classes/lounges-enterprise-search.ts +444 -0
- package/projects/obtservices/base/src/lib/vendor/classes/management-info-and-valid.ts +268 -0
- package/projects/obtservices/base/src/lib/vendor/classes/modal-types.enum.ts +28 -0
- package/projects/obtservices/base/src/lib/vendor/classes/parking-enterprise-search.ts +541 -0
- package/projects/obtservices/base/src/lib/vendor/classes/rail-direction.enum.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/classes/rail-enterprise-search.ts +1751 -0
- package/projects/obtservices/base/src/lib/vendor/classes/routehappy-request.ts +146 -0
- package/projects/obtservices/base/src/lib/vendor/classes/routehappy-response.ts +128 -0
- package/projects/obtservices/base/src/lib/vendor/classes/supplementary-booking-info-impl.ts +375 -0
- package/projects/obtservices/base/src/lib/vendor/classes/user-favourite.enum.ts +12 -0
- package/projects/obtservices/base/src/lib/vendor/classes/validator.checker.ts +7 -0
- package/projects/obtservices/base/src/lib/vendor/data/airports.data.json +5508 -0
- package/projects/obtservices/base/src/lib/vendor/data/booking-expected-responses.json +100 -0
- package/projects/obtservices/base/src/lib/vendor/data/cities.data.json +31499 -0
- package/projects/obtservices/base/src/lib/vendor/data/countries.json +1212 -0
- package/projects/obtservices/base/src/lib/vendor/data/euro-stations.json +30 -0
- package/projects/obtservices/base/src/lib/vendor/data/flight-booking.data.json +136 -0
- package/projects/obtservices/base/src/lib/vendor/data/postcodes1.json +194 -0
- package/projects/obtservices/base/src/lib/vendor/data/rail_addresses.json +2524 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/basket-fetcher.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/cabhire-quote-fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-availability-detail.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/carhire-quote-fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-office-names.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/conferma-quicklist.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/eurostar-quote.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/flight-quote.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-cards.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-rail-station.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-risk-alerts.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-company-offices.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-current-carbon-allowance.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-user-recent-searches.fetcher.ts +36 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/get-users-baskets-fetcher.ts +33 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/getMiAutoSugestions.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-avaliability-fetcher.ts +53 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/hotel-quote-fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/irl-quote-fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/list-fetchable-enterprise.ts +59 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/lounge-quote.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/object-fetchable-enterprise.ts +20 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/parking-quote-fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/rail-quote-fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-airlines.fetcher.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-airports-fetcher.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-cities.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-conferma-cities.fetcher.ts +32 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-depots.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-hotel-chains.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-postcodes.fetcher.ts +37 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-rail-stations.fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/search-users-can-book-for-fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-addresses.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-fetcher.ts +27 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-message.fetcher.ts +34 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-products-fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/fetchers/user-ui-configs-fetcher.ts +35 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Icabhire-enterprise-search.ts +174 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Icarhire-enterprise-search.ts +143 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ienterprise-basket.service.ts +127 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ieurostar-enterprise-search.ts +197 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iflight-enterprise-search.ts +196 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ihotel-enterprise-search.ts +219 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iirl-enterprise-search.ts +135 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Ilounges-enterprise-search.ts +58 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Imybookings.service.ts +27 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iparking-enterprise-search.ts +72 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Irail-enterprise-search.ts +161 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Isearch.service.ts +178 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Isupplementary-booking-info-impl.ts +63 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/Iuser.service.ts +87 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-classes.interface.ts +8 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-filters.interface.ts +11 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/car-hire-sort.interface.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/cheapest-price.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/code-name.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/flight-filters.interface.ts +41 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/flight-multi-destination.interface.ts +8 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-airport-express-stations.interface.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-basket-item.interface.ts +79 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-journey-leg.interface.ts +6 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-recent-search-args.interface.ts +20 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-selected-ticket.interface.ts +11 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-group.interface.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/rail-ticket-groups.interface.ts +5 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/search-objects.interface.ts +17 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/select-filter.interface.ts +5 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/user.data.ts +22 -0
- package/projects/obtservices/base/src/lib/vendor/interfaces/value-display.ts +4 -0
- package/projects/obtservices/base/src/lib/vendor/models/login.model.ts +97 -0
- package/projects/obtservices/base/src/lib/vendor/models/regexp.model.ts +13 -0
- package/projects/obtservices/base/src/lib/vendor/models/traveller.object.ts +61 -0
- package/projects/obtservices/base/src/lib/vendor/services/enterprise-basket.service.ts +1150 -0
- package/projects/obtservices/base/src/lib/vendor/services/hotel-avallibility.service.ts +251 -0
- package/projects/obtservices/base/src/lib/vendor/services/http-call.service.ts +57 -0
- package/projects/obtservices/base/src/lib/vendor/services/logon.service.ts +245 -0
- package/projects/obtservices/base/src/lib/vendor/services/modal-opener.service.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/services/my-bookings.service.ts +184 -0
- package/projects/obtservices/base/src/lib/vendor/services/routehappy.service.ts +275 -0
- package/projects/obtservices/base/src/lib/vendor/services/search.service.ts +2026 -0
- package/projects/obtservices/base/src/lib/vendor/services/storage.service.ts +15 -0
- package/projects/obtservices/base/src/lib/vendor/services/url.service.ts +12 -0
- package/projects/obtservices/base/src/lib/vendor/services/user.service.ts +354 -0
- package/projects/obtservices/base/src/lib/vendor/services/webtoken.service.ts +66 -0
- package/projects/obtservices/base/src/lib/vendor/testers/base.tester.ts +18 -0
- package/projects/obtservices/base/src/lib/vendor/testers/postcode-validate.tester.ts +24 -0
- package/projects/obtservices/base/src/lib/vendor/testers/validate-mi-free-value.tester.ts +23 -0
- package/projects/obtservices/base/src/lib/vendor/types/graphql.types.ts +6184 -0
- package/projects/obtservices/base/src/lib/vendor/types/types.ts +630 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/accept-new-price.updater.ts +31 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/add-item-to-basket.updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/addUserToBasketItem.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/book-basket-updater.ts +28 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/create-basket-updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/move-basket-item-to-basket.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/object-updater-enterprise.ts +20 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-basket-updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-item-from-basket.updater.ts +28 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-recent-search-updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/remove-user-address-updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/revalidate-basket-updater.ts +29 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/save-recent-search-updater.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/save-user-address.updater.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/send-basket-for-approval.updater.ts +31 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-lead-passenger.updater.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-group.ts +32 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-mi-value-updater.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/set-basket-item-paymenr-option.updater.ts +28 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-notes-updater.ts +30 -0
- package/projects/obtservices/base/src/lib/vendor/updaters/update-basket-title-updater.ts +30 -0
- package/projects/obtservices/base/src/models.ts +3 -0
- package/projects/obtservices/base/src/public_api.ts +8 -0
- package/projects/obtservices/base/src/services.ts +12 -0
- package/projects/obtservices/base/src/testers.ts +2 -0
- package/projects/obtservices/base/src/types.ts +1 -0
- package/projects/obtservices/base/src/updaters.ts +20 -0
- package/projects/obtservices/graphQL/autogenerated/index.js +2 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/acceptNewPrice.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/addItemToBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/addUsersToBasketItem.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/bookBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/cancelBooking.gql +6 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/confermaCreateCard.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/confermaDeleteCard.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/createBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteBasket.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteFavouriteSearch.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteRecentSearch.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/deleteUserAddress.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/index.js +36 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/moveItemToADifferentBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/removeItemFromBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/removeItemsFromBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/removeUserFromBasketItem.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/reopenBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/revalidateBasketItem.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/saveFavouriteSearch.gql +348 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/saveRecentSearch.gql +348 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/saveUserAddress.gql +14 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/sendBasketForApproval.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setAddressAsUserPrimary.gql +14 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemLeadPassenger.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIGroup.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemMIValue.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setBasketItemPaymentMethod.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setMIDefaultValue.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/setUserLanguage.gql +339 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketNotes.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/mutations/updateBasketTitle.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/queries/alive.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/carHireAvailabilityDetailRequest.gql +42 -0
- package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockClientHotels.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/queries/confermaBlockConsumerHotels.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/queries/confermaListCards.gql +11 -0
- package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockClientHotels.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/queries/confermaUnblockConsumerHotels.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getCOVIDMicrositeToken.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getCancellationInfo.gql +7 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getCarHireDepots.gql +13 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOffice.gql +50 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaOfficeNames.gql +26 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getConfermaQuicklist.gql +131 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getCountries.gql +8 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getHotelAvailability.gql +78 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getHotelChains.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getIRLSupplierStation.gql +28 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getMultipleHotelsAvailability.gql +78 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getPostcodeDetails.gql +25 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getRailStation.gql +27 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getRailcards.gql +6 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getRiskAlerts.gql +17 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUser.gql +339 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserAddresses.gql +14 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserBasket.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserBaskets.gql +1580 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserCompanyOffices.gql +88 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserCurrentCarbonAllowance.gql +524 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserFavouriteSearches.gql +348 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserMIAutoSuggestValues.gql +10 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserMessages.gql +10 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserPhoneNumbers.gql +13 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserRecentSearches.gql +348 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserServices.gql +16 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserTravelRules.gql +111 -0
- package/projects/obtservices/graphQL/autogenerated/queries/getUserUIConfigs.gql +52 -0
- package/projects/obtservices/graphQL/autogenerated/queries/index.js +64 -0
- package/projects/obtservices/graphQL/autogenerated/queries/isPostcodeValid.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/postcodeAutoSuggest.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchAirlines.gql +32 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchAirports.gql +60 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchCabHire.gql +63 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchCarHire.gql +104 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchCities.gql +14 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchConfermaCities.gql +11 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchEurostar.gql +833 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchFastTrack.gql +46 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchFlights.gql +23 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchFlightsV2.gql +833 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchHotelChains.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchHotels.gql +131 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchIRL.gql +514 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchIRLSupplierStations.gql +28 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchLounges.gql +89 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchParking.gql +70 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchPostcodes.gql +25 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchRail.gql +840 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchRailStations.gql +27 -0
- package/projects/obtservices/graphQL/autogenerated/queries/searchUserCanBookFor.gql +339 -0
- package/projects/obtservices/graphQL/autogenerated/queries/validateBasketItemMI.gql +3 -0
- package/projects/obtservices/graphQL/autogenerated/queries/validateUserMIFreeValue.gql +3 -0
- package/projects/obtservices/graphQL/documents/acceptNewPrice.graphql +5 -0
- package/projects/obtservices/graphQL/documents/addUserToBasketItem.graphql +9 -0
- package/projects/obtservices/graphQL/documents/basket.fragments.graphql +171 -0
- package/projects/obtservices/graphQL/documents/baskets.graphql +111 -0
- package/projects/obtservices/graphQL/documents/bookBasket.graphql +9 -0
- package/projects/obtservices/graphQL/documents/cabhire.graphql +66 -0
- package/projects/obtservices/graphQL/documents/carHireAvailabilityDetailRequest.graphql +44 -0
- package/projects/obtservices/graphQL/documents/carhire.graphql +117 -0
- package/projects/obtservices/graphQL/documents/deleteRecentSearch.graphql +3 -0
- package/projects/obtservices/graphQL/documents/deleteUserAddress.graphql +3 -0
- package/projects/obtservices/graphQL/documents/error.fragments.graphql +10 -0
- package/projects/obtservices/graphQL/documents/flights.graphql +830 -0
- package/projects/obtservices/graphQL/documents/getCarHireDepots.graphql +13 -0
- package/projects/obtservices/graphQL/documents/getConfermaOfficeNames.graphql +11 -0
- package/projects/obtservices/graphQL/documents/getConfermaQuicklist.graphql +108 -0
- package/projects/obtservices/graphQL/documents/getRailStation.graphql +31 -0
- package/projects/obtservices/graphQL/documents/getRailcards.graphql +6 -0
- package/projects/obtservices/graphQL/documents/getRiskAlerts.graphql +24 -0
- package/projects/obtservices/graphQL/documents/getUserAddresses.graphql +14 -0
- package/projects/obtservices/graphQL/documents/getUserCompanyOffices.graphql +18 -0
- package/projects/obtservices/graphQL/documents/getUserCurrentCarbonAllowance.graphql +29 -0
- package/projects/obtservices/graphQL/documents/getUserMIAutoSuggestValues.graphql +10 -0
- package/projects/obtservices/graphQL/documents/getUserPhoneNumbers.graphql +13 -0
- package/projects/obtservices/graphQL/documents/getUserRecentSearches.graphql +20 -0
- package/projects/obtservices/graphQL/documents/hotels.graphql +242 -0
- package/projects/obtservices/graphQL/documents/isPostcodeValid.graphql +3 -0
- package/projects/obtservices/graphQL/documents/lookups.graphql +54 -0
- package/projects/obtservices/graphQL/documents/lounges.graphql +88 -0
- package/projects/obtservices/graphQL/documents/moveItemToADifferentBasket.graphql +9 -0
- package/projects/obtservices/graphQL/documents/parking.graphql +79 -0
- package/projects/obtservices/graphQL/documents/rail.graphql +645 -0
- package/projects/obtservices/graphQL/documents/saveRecentSearch.graphql +5 -0
- package/projects/obtservices/graphQL/documents/saveUserAddress.graphql +14 -0
- package/projects/obtservices/graphQL/documents/searchAirlines.graphql +32 -0
- package/projects/obtservices/graphQL/documents/searchCities.graphql +14 -0
- package/projects/obtservices/graphQL/documents/searchConfermaCities.graphql +11 -0
- package/projects/obtservices/graphQL/documents/searchEurostar.graphql +810 -0
- package/projects/obtservices/graphQL/documents/searchHotelChains.graphql +3 -0
- package/projects/obtservices/graphQL/documents/searchIRL.graphql +521 -0
- package/projects/obtservices/graphQL/documents/searchPostcodes.graphql +7 -0
- package/projects/obtservices/graphQL/documents/searchRailStations.graphql +27 -0
- package/projects/obtservices/graphQL/documents/searchUserAddresses.graphql +14 -0
- package/projects/obtservices/graphQL/documents/set-basker-item-mi-group.graphql +9 -0
- package/projects/obtservices/graphQL/documents/setBasketItemLeadPassenger.graphql +5 -0
- package/projects/obtservices/graphQL/documents/setBasketItemMIValue.graphql +16 -0
- package/projects/obtservices/graphQL/documents/setBasketItemPaymentMethod.graphql +12 -0
- package/projects/obtservices/graphQL/documents/updateBasketNotes.graphql +10 -0
- package/projects/obtservices/graphQL/documents/updateBasketTitle.graphql +10 -0
- package/projects/obtservices/graphQL/documents/user.fragments.graphql +65 -0
- package/projects/obtservices/graphQL/documents/user.graphql +95 -0
- package/projects/obtservices/graphQL/documents/validateUserMIFreeValue.graphql +3 -0
- package/projects/obtservices/graphQL/schema/schema.graphql +2635 -0
- package/projects/obtservices/karma.conf.js +32 -0
- package/projects/obtservices/ng-package.json +7 -0
- package/projects/obtservices/package-lock.json +5 -0
- package/projects/obtservices/package.json +12 -0
- package/projects/obtservices/src/obtservices.ts +0 -0
- package/projects/obtservices/src/public_api.ts +1 -0
- package/projects/obtservices/tsconfig.lib.json +30 -0
- package/projects/obtservices/tsconfig.spec.json +17 -0
- package/projects/obtservices/tslint.json +17 -0
- package/tsconfig.json +36 -0
- package/tslint.json +62 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { take } from 'rxjs/operators';
|
|
3
|
+
import { BaseEnvironment } from '../classes/enviroment';
|
|
4
|
+
import { BaseHelperRoutines } from '../classes/helpers';
|
|
5
|
+
import {
|
|
6
|
+
BaseHotelAvalibilityQuoteFetcher,
|
|
7
|
+
HotelAvalinilityFetcherType
|
|
8
|
+
} from '../fetchers/hotel-avaliability-fetcher';
|
|
9
|
+
import { HotelDetails } from '../interfaces/Ihotel-enterprise-search';
|
|
10
|
+
import { QueryGetMultipleHotelsAvailabilityArgs } from '../types/graphql.types';
|
|
11
|
+
import {
|
|
12
|
+
CurrencyDetails,
|
|
13
|
+
HotelAvalibilityQuery,
|
|
14
|
+
HotelAvalibilityQuoteResult,
|
|
15
|
+
HotelAvalibilityQuoteResultArray,
|
|
16
|
+
HotelRoomWithLocalPrice
|
|
17
|
+
} from '../types/types';
|
|
18
|
+
|
|
19
|
+
import { BaseStorageService } from './storage.service';
|
|
20
|
+
|
|
21
|
+
type StoredData = { [key: string]: HotelAvalibilityQuoteResult };
|
|
22
|
+
|
|
23
|
+
const SESSION_NAME = 'results_hotel_avallibility';
|
|
24
|
+
|
|
25
|
+
export class BaseHotelAvalibilityService<
|
|
26
|
+
Q extends HotelAvalinilityFetcherType
|
|
27
|
+
> {
|
|
28
|
+
private data: StoredData = null;
|
|
29
|
+
private behaviours: {
|
|
30
|
+
[key: string]: BehaviorSubject<HotelAvalibilityQuoteResult>;
|
|
31
|
+
} = {};
|
|
32
|
+
private timeout: number;
|
|
33
|
+
private toFetch: HotelAvalibilityQuery[] = [];
|
|
34
|
+
public fetching: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(
|
|
35
|
+
false
|
|
36
|
+
);
|
|
37
|
+
currencies: CurrencyDetails = {};
|
|
38
|
+
constructor(
|
|
39
|
+
private avalibilityFethcer: BaseHotelAvalibilityQuoteFetcher<Q>,
|
|
40
|
+
private sessionStorage: BaseStorageService,
|
|
41
|
+
private helpers: BaseHelperRoutines,
|
|
42
|
+
private environment: BaseEnvironment
|
|
43
|
+
) {}
|
|
44
|
+
|
|
45
|
+
private readFromSession() {
|
|
46
|
+
const data =
|
|
47
|
+
this.sessionStorage.getSessionItem<StoredData>(SESSION_NAME) || {};
|
|
48
|
+
Object.values(data).forEach((item: HotelAvalibilityQuoteResult) => {
|
|
49
|
+
this.behaviours[item.hotelId] =
|
|
50
|
+
new BehaviorSubject<HotelAvalibilityQuoteResult>(item);
|
|
51
|
+
});
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
reset() {
|
|
56
|
+
this.data = {};
|
|
57
|
+
this.currencies = {};
|
|
58
|
+
this.sessionStorage.removeSessionItem(SESSION_NAME);
|
|
59
|
+
Object.values(this.data).forEach((item: HotelAvalibilityQuoteResult) => {
|
|
60
|
+
this.behaviours[item.hotelId].complete();
|
|
61
|
+
delete this.behaviours[item.hotelId];
|
|
62
|
+
});
|
|
63
|
+
this.behaviours = {};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
getAvailabilityForId(
|
|
67
|
+
hotel: HotelAvalibilityQuery
|
|
68
|
+
): BehaviorSubject<HotelAvalibilityQuoteResult> {
|
|
69
|
+
this.data = this.data || this.readFromSession();
|
|
70
|
+
return (
|
|
71
|
+
this.behaviours[hotel.hotel as string] ||
|
|
72
|
+
this._getAvailabilityForId(hotel)
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
getAvailabilityValue(hotel: HotelDetails): HotelAvalibilityQuoteResult {
|
|
77
|
+
this.data = this.data || this.readFromSession();
|
|
78
|
+
return (
|
|
79
|
+
this.behaviours[hotel.id as string]?.value ||
|
|
80
|
+
({} as HotelAvalibilityQuoteResult)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private _getAvailabilityForId(
|
|
85
|
+
hotel: HotelAvalibilityQuery
|
|
86
|
+
): BehaviorSubject<HotelAvalibilityQuoteResult> {
|
|
87
|
+
if (this.timeout) {
|
|
88
|
+
window.clearTimeout(this.timeout);
|
|
89
|
+
this.timeout = 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!this.fetching.value) {
|
|
93
|
+
this.timeout = window.setTimeout(
|
|
94
|
+
this.fetchAvalilbility.bind(this),
|
|
95
|
+
this.environment.autoFetchHotelTimeout
|
|
96
|
+
);
|
|
97
|
+
}
|
|
98
|
+
this.toFetch.push(hotel);
|
|
99
|
+
if (
|
|
100
|
+
!this.fetching.value &&
|
|
101
|
+
this.toFetch.length >= this.environment.numberOfHotelsToFetch
|
|
102
|
+
) {
|
|
103
|
+
this.fetchAvalilbility();
|
|
104
|
+
}
|
|
105
|
+
this.behaviours[hotel.hotel as string] =
|
|
106
|
+
new BehaviorSubject<HotelAvalibilityQuoteResult>(null);
|
|
107
|
+
return this.behaviours[hotel.hotel as string];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
private fetchAvalilbility() {
|
|
111
|
+
this.fetching.next(true);
|
|
112
|
+
if (this.timeout) {
|
|
113
|
+
window.clearTimeout(this.timeout);
|
|
114
|
+
this.timeout = 0;
|
|
115
|
+
}
|
|
116
|
+
const toFetch = this.toFetch.slice(
|
|
117
|
+
0,
|
|
118
|
+
this.environment.numberOfHotelsToFetch
|
|
119
|
+
);
|
|
120
|
+
this.toFetch = this.toFetch.slice(this.environment.numberOfHotelsToFetch);
|
|
121
|
+
|
|
122
|
+
console.log('Hotels still to fetch', this.toFetch.length);
|
|
123
|
+
|
|
124
|
+
const query: QueryGetMultipleHotelsAvailabilityArgs = {
|
|
125
|
+
hotel: toFetch.map((hotel) => hotel.hotel) as string[],
|
|
126
|
+
currency: toFetch[0].currency,
|
|
127
|
+
endDate: toFetch[0].endDate,
|
|
128
|
+
startDate: toFetch[0].startDate,
|
|
129
|
+
occupants: toFetch[0].occupants,
|
|
130
|
+
rooms: toFetch[0].rooms
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
this.avalibilityFethcer
|
|
134
|
+
.fetchList(query)
|
|
135
|
+
.pipe(take(1))
|
|
136
|
+
.subscribe((hotels: HotelAvalibilityQuoteResultArray) => {
|
|
137
|
+
hotels.forEach((hotel: HotelAvalibilityQuoteResult) => {
|
|
138
|
+
hotel = this.helpers.clone(hotel);
|
|
139
|
+
hotel.rooms = (hotel.rooms || [])
|
|
140
|
+
.filter((room: HotelRoomWithLocalPrice) => {
|
|
141
|
+
return room.total > 0;
|
|
142
|
+
})
|
|
143
|
+
.map((room: HotelRoomWithLocalPrice) => {
|
|
144
|
+
room = this.helpers.clone<HotelRoomWithLocalPrice>(room);
|
|
145
|
+
room.LocalPrice = room.currencyConversion
|
|
146
|
+
? room.currencyConversion.localTotal
|
|
147
|
+
: room.total;
|
|
148
|
+
room.LocalCurrency = room.currencyConversion
|
|
149
|
+
? room.currencyConversion.localCode
|
|
150
|
+
: room.currencyCode;
|
|
151
|
+
return room;
|
|
152
|
+
});
|
|
153
|
+
hotel.currencies = hotel.rooms.reduce(
|
|
154
|
+
(details: CurrencyDetails, room: HotelRoomWithLocalPrice) => {
|
|
155
|
+
if (room.currencyConversion) {
|
|
156
|
+
details[room.currencyConversion.convertedCode] = details[
|
|
157
|
+
room.currencyConversion.convertedCode
|
|
158
|
+
] || {
|
|
159
|
+
maxprice: Number.MIN_VALUE,
|
|
160
|
+
minprice: Number.MAX_VALUE
|
|
161
|
+
};
|
|
162
|
+
details[room.currencyConversion.convertedCode].maxprice =
|
|
163
|
+
Math.max(
|
|
164
|
+
details[room.currencyConversion.convertedCode].maxprice,
|
|
165
|
+
room.currencyConversion.convertedTotal
|
|
166
|
+
);
|
|
167
|
+
details[room.currencyConversion.convertedCode].minprice =
|
|
168
|
+
Math.min(
|
|
169
|
+
details[room.currencyConversion.convertedCode].minprice,
|
|
170
|
+
room.currencyConversion.convertedTotal
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
this.currencies[room.currencyConversion.convertedCode] = this
|
|
174
|
+
.currencies[room.currencyConversion.convertedCode] || {
|
|
175
|
+
maxprice: Number.MIN_VALUE,
|
|
176
|
+
minprice: Number.MAX_VALUE
|
|
177
|
+
};
|
|
178
|
+
this.currencies[
|
|
179
|
+
room.currencyConversion.convertedCode
|
|
180
|
+
].minprice = Math.ceil(
|
|
181
|
+
Math.min(
|
|
182
|
+
this.currencies[room.currencyConversion.convertedCode]
|
|
183
|
+
.minprice,
|
|
184
|
+
room.currencyConversion.convertedTotal
|
|
185
|
+
)
|
|
186
|
+
);
|
|
187
|
+
this.currencies[
|
|
188
|
+
room.currencyConversion.convertedCode
|
|
189
|
+
].maxprice = Math.ceil(
|
|
190
|
+
Math.max(
|
|
191
|
+
this.currencies[room.currencyConversion.convertedCode]
|
|
192
|
+
.maxprice,
|
|
193
|
+
room.currencyConversion.convertedTotal
|
|
194
|
+
)
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
return details;
|
|
198
|
+
},
|
|
199
|
+
{} as CurrencyDetails
|
|
200
|
+
);
|
|
201
|
+
const roomPrices = hotel.rooms.map(
|
|
202
|
+
this.helpers.mapFieldFromObject<string, number>('total')
|
|
203
|
+
);
|
|
204
|
+
if (!roomPrices.length) roomPrices.push(0);
|
|
205
|
+
hotel.minprice = Math.min(...roomPrices);
|
|
206
|
+
hotel.maxprice = Math.max(...roomPrices);
|
|
207
|
+
|
|
208
|
+
hotel.rooms = hotel.rooms;
|
|
209
|
+
if (hotel?.hotelId) {
|
|
210
|
+
this.data[hotel.hotelId] = hotel;
|
|
211
|
+
this.behaviours[hotel.hotelId].next(hotel);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// this.sessionStorage.setSessionItem(SESSION_NAME, this.data);
|
|
216
|
+
this.sessionStorage.setSessionItem(SESSION_NAME, hotels);
|
|
217
|
+
if (this.toFetch.length > 0) {
|
|
218
|
+
setTimeout(() => {
|
|
219
|
+
this.fetchAvalilbility();
|
|
220
|
+
}, this.environment.hotelAvalibilityTimeout);
|
|
221
|
+
} else {
|
|
222
|
+
this.fetching.next(false);
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
maxPriceForCurrency(currency: string) {
|
|
228
|
+
return (
|
|
229
|
+
this.currencies[currency] || {
|
|
230
|
+
maxprice: Number.MAX_VALUE,
|
|
231
|
+
minprice: Number.MIN_VALUE
|
|
232
|
+
}
|
|
233
|
+
).maxprice;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @description - return the number of hotels that have a price (prpn value)
|
|
238
|
+
*/
|
|
239
|
+
numberOfHotelsWithPrice(): number {
|
|
240
|
+
let count = 0;
|
|
241
|
+
if (this.data) {
|
|
242
|
+
for (const [key, value] of Object.entries(this.data)) {
|
|
243
|
+
if (value?.prpn) {
|
|
244
|
+
count++;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return count;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { URLS } from './url.service';
|
|
3
|
+
|
|
4
|
+
export abstract class AbstractHttpCallService {
|
|
5
|
+
abstract formEncodedPost(url: URLS, body?: any, responseType?: 'json' | 'text'): Observable<any>;
|
|
6
|
+
|
|
7
|
+
abstract timeoutFormEncodedPost(
|
|
8
|
+
url: URLS,
|
|
9
|
+
body?: any,
|
|
10
|
+
reTimeout?: number
|
|
11
|
+
): Observable<any>;
|
|
12
|
+
|
|
13
|
+
abstract formEncodedPostNoErrorHandling(
|
|
14
|
+
url: URLS,
|
|
15
|
+
body?: any
|
|
16
|
+
): Observable<any>;
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
@desc - call a url through post, with a Json Object as data (angular default)
|
|
20
|
+
**/
|
|
21
|
+
abstract post(url: URLS, data?: any): Observable<any>;
|
|
22
|
+
/*
|
|
23
|
+
@desc - call a Angular standard get request (application/json headers)
|
|
24
|
+
**/
|
|
25
|
+
abstract get(url: URLS, params?: any): Observable<any>;
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
@desc - this will determine if there is a login error for the request or not, since this is a potential error for every call
|
|
29
|
+
**/
|
|
30
|
+
abstract handleResponse(data: any): any;
|
|
31
|
+
abstract resetLogout(): void;
|
|
32
|
+
/*
|
|
33
|
+
@desc - handle any fatal errors 404's 500's other generic http errors
|
|
34
|
+
**/
|
|
35
|
+
abstract handleError(errorVal: any, skipTimeoutMessage?: boolean): any;
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* Using the keys of the given object as parameter names create a parameter string url encoding the values.
|
|
39
|
+
* The function expects the values to be strings.
|
|
40
|
+
* @param obj
|
|
41
|
+
*/
|
|
42
|
+
public serialize(obj: { [key: string]: string }): string {
|
|
43
|
+
return Object.keys(obj).reduce((toReturn: string, key: string) => {
|
|
44
|
+
return (
|
|
45
|
+
(toReturn.length ? toReturn + '&' : '') +
|
|
46
|
+
key +
|
|
47
|
+
'=' +
|
|
48
|
+
encodeURIComponent(
|
|
49
|
+
typeof obj[key] === 'object' ? JSON.stringify(obj[key]) : obj[key]
|
|
50
|
+
)
|
|
51
|
+
);
|
|
52
|
+
}, '');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
abstract getHeaders(): any;
|
|
56
|
+
abstract makeUrl(url: URLS): string;
|
|
57
|
+
}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { USER_SIGNEDOUT } from './user.service';
|
|
2
|
+
import { map, take } from 'rxjs/operators';
|
|
3
|
+
import { BaseModalOpenerService } from './modal-opener.service';
|
|
4
|
+
import { BaseStorageService } from './storage.service';
|
|
5
|
+
|
|
6
|
+
import { URLS } from './url.service';
|
|
7
|
+
import { UserFavorurite } from '../classes/user-favourite.enum';
|
|
8
|
+
import { Observable, of } from 'rxjs';
|
|
9
|
+
import { BaseEventMessenager } from '../classes/event-messenager';
|
|
10
|
+
import { BaseEnvironment } from '../classes/enviroment';
|
|
11
|
+
import { ModalTypes } from '../classes/modal-types.enum';
|
|
12
|
+
import { UserData } from '../interfaces/user.data';
|
|
13
|
+
import {
|
|
14
|
+
AuthInfo,
|
|
15
|
+
LoginResponse,
|
|
16
|
+
PasswordChangeResponse
|
|
17
|
+
} from '../models/login.model';
|
|
18
|
+
import { UserServiceInterface } from '../interfaces/Iuser.service';
|
|
19
|
+
import { AbstractHttpCallService } from './http-call.service';
|
|
20
|
+
import { Router } from '../types/types';
|
|
21
|
+
|
|
22
|
+
export class BaseLogonService {
|
|
23
|
+
loading = false;
|
|
24
|
+
isLoggedIn = false;
|
|
25
|
+
redirectUrl = '';
|
|
26
|
+
authInfo: AuthInfo;
|
|
27
|
+
loginResponse: LoginResponse;
|
|
28
|
+
timeoutSubscription: number;
|
|
29
|
+
refreshPromise: Promise<boolean> = null;
|
|
30
|
+
|
|
31
|
+
constructor(
|
|
32
|
+
private userService: UserServiceInterface,
|
|
33
|
+
private modalService: BaseModalOpenerService,
|
|
34
|
+
private http: AbstractHttpCallService,
|
|
35
|
+
private router: Router,
|
|
36
|
+
private eventMessenager: BaseEventMessenager,
|
|
37
|
+
private storageService: BaseStorageService,
|
|
38
|
+
private environment: BaseEnvironment
|
|
39
|
+
) {}
|
|
40
|
+
|
|
41
|
+
checkLogin(): Promise<boolean> {
|
|
42
|
+
return this.refreshToken();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
refreshToken(): Promise<boolean> {
|
|
46
|
+
this.refreshPromise =
|
|
47
|
+
this.refreshPromise ||
|
|
48
|
+
new Promise(
|
|
49
|
+
(resolve: (value: boolean) => void, reject: (error: any) => void) => {
|
|
50
|
+
this.clearRefresh();
|
|
51
|
+
this.http
|
|
52
|
+
.formEncodedPostNoErrorHandling(URLS.Refresh, {})
|
|
53
|
+
.pipe(
|
|
54
|
+
take(1),
|
|
55
|
+
map((data) => {
|
|
56
|
+
return this.handleResponse(data);
|
|
57
|
+
})
|
|
58
|
+
)
|
|
59
|
+
.subscribe(
|
|
60
|
+
(data) => {
|
|
61
|
+
if (typeof data === 'string') {
|
|
62
|
+
resolve(false);
|
|
63
|
+
if (this.router.url !== 'login') {
|
|
64
|
+
const logoutDialog = this.modalService
|
|
65
|
+
.open(
|
|
66
|
+
ModalTypes.BaseModalComponent,
|
|
67
|
+
{},
|
|
68
|
+
{
|
|
69
|
+
title: 'Auto Logout',
|
|
70
|
+
body: '',
|
|
71
|
+
isLoading: false,
|
|
72
|
+
options: {
|
|
73
|
+
buttonCancel: false,
|
|
74
|
+
buttonOk: true,
|
|
75
|
+
buttonOkText: 'Continue'
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
)
|
|
79
|
+
.then(() => {
|
|
80
|
+
this.logout();
|
|
81
|
+
resolve(false);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
} else {
|
|
85
|
+
resolve(true);
|
|
86
|
+
this.setRefresh();
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
(error) => {
|
|
90
|
+
resolve(false);
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
.then((data: any) => {
|
|
96
|
+
this.refreshPromise = null;
|
|
97
|
+
return data;
|
|
98
|
+
})
|
|
99
|
+
.catch((error: any) => {
|
|
100
|
+
this.refreshPromise = null;
|
|
101
|
+
throw error;
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return this.refreshPromise;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private clearRefresh() {
|
|
108
|
+
if (this.timeoutSubscription) {
|
|
109
|
+
clearTimeout(this.timeoutSubscription);
|
|
110
|
+
this.timeoutSubscription = null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
private setRefresh() {
|
|
115
|
+
this.timeoutSubscription = window.setTimeout(
|
|
116
|
+
this.refreshToken.bind(this),
|
|
117
|
+
this.environment.authRefreshTimeout * 1000
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
login(
|
|
122
|
+
username: string,
|
|
123
|
+
password: string,
|
|
124
|
+
again?: boolean
|
|
125
|
+
): Observable<UserData> {
|
|
126
|
+
this.userService.emptyUserData();
|
|
127
|
+
|
|
128
|
+
this.storageService.clearSessionData();
|
|
129
|
+
this.clearRefresh();
|
|
130
|
+
return this.http
|
|
131
|
+
.formEncodedPostNoErrorHandling(URLS.AccessToken, {
|
|
132
|
+
username,
|
|
133
|
+
password
|
|
134
|
+
})
|
|
135
|
+
.pipe(
|
|
136
|
+
take(1),
|
|
137
|
+
map((value: any, index: number) => {
|
|
138
|
+
this.setRefresh();
|
|
139
|
+
return this.handleResponse(value);
|
|
140
|
+
})
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/*
|
|
145
|
+
@desc - this will determine if there is a login error for the request or not, since this is a potential error for every call
|
|
146
|
+
**/
|
|
147
|
+
handleResponse(data: any): any {
|
|
148
|
+
if (typeof data === 'object' && data.jwt) {
|
|
149
|
+
this.userService.setUser(data.jwtObject);
|
|
150
|
+
delete data.jwt;
|
|
151
|
+
delete data.jwtObject;
|
|
152
|
+
}
|
|
153
|
+
return data;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
cookieLogin(username: string): Observable<UserData> {
|
|
157
|
+
// const sso = sessionStorage.getItem('sso_query');
|
|
158
|
+
/*
|
|
159
|
+
this.userService.emptyUserData();
|
|
160
|
+
this.userService.setUserAgent(username);
|
|
161
|
+
sessionStorage.setItem('sso_query', sso);
|
|
162
|
+
this.authInfo = new AuthInfo(username, '', false);*/
|
|
163
|
+
// return this.http.get(URLS.NUMBER_ONCE_TOKEN_URL);
|
|
164
|
+
return of(null);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
logout() {
|
|
168
|
+
const isSSO = this.userService.isUserFavoriteSet(
|
|
169
|
+
UserFavorurite.SSO_no_password
|
|
170
|
+
);
|
|
171
|
+
this.clearRefresh();
|
|
172
|
+
this.isLoggedIn = false;
|
|
173
|
+
this.userService.emptyUserData();
|
|
174
|
+
|
|
175
|
+
this.storageService.clearSessionData();
|
|
176
|
+
this.http.post(URLS.LOGOUT_URL).subscribe(
|
|
177
|
+
(data) => {
|
|
178
|
+
if (!data.LogoutSuccess) {
|
|
179
|
+
// tslint:disable-next-line: quotemark
|
|
180
|
+
console.warn("You're not logged in, cannot log out.");
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
() => {
|
|
184
|
+
this.eventMessenager.emit(USER_SIGNEDOUT, {});
|
|
185
|
+
|
|
186
|
+
if (
|
|
187
|
+
this.userService.isUserFavoriteSet(UserFavorurite.SSO_no_password)
|
|
188
|
+
) {
|
|
189
|
+
this.router.navigate(['logOutDigitsUser']);
|
|
190
|
+
} else {
|
|
191
|
+
this.router.navigate(['logon']);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
changePassword(authInfo: AuthInfo): Observable<PasswordChangeResponse> {
|
|
198
|
+
// return this.http
|
|
199
|
+
// .formEncodedPost(URLS.CHANGE_PASSWORD, authInfo.getChangePassTokenStr())
|
|
200
|
+
// .pipe(
|
|
201
|
+
// map((res: PasswordChangeResponse) => {
|
|
202
|
+
// if (res.success) {
|
|
203
|
+
// return res;
|
|
204
|
+
// } else {
|
|
205
|
+
// throw new LoginError(LoginErrorReason.PASSWORD_CHANGE, res);
|
|
206
|
+
// }
|
|
207
|
+
// })
|
|
208
|
+
// );
|
|
209
|
+
return of(null);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
resetPassword(passwordResetToken: string, newPassword: string): Observable<PasswordChangeResponse> {
|
|
213
|
+
return this.http.formEncodedPost(
|
|
214
|
+
URLS.RESET_PASSWORD,
|
|
215
|
+
{
|
|
216
|
+
passwordResetToken,
|
|
217
|
+
newPassword
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
@desc - actaually call the backend perl for recover pass
|
|
224
|
+
**/
|
|
225
|
+
recoverPassword(username: string): Observable<any> {
|
|
226
|
+
return this.http.formEncodedPost(
|
|
227
|
+
URLS.RECOVER_PASSWORD_URL,
|
|
228
|
+
{
|
|
229
|
+
username:`${username}`,
|
|
230
|
+
},
|
|
231
|
+
'text'
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/*
|
|
236
|
+
* @desc - error handling, opens a modal with the passed in error message
|
|
237
|
+
**/
|
|
238
|
+
handleError(error: string) {
|
|
239
|
+
// this.userService.becomingUser = false;
|
|
240
|
+
const modalValues = {
|
|
241
|
+
error
|
|
242
|
+
};
|
|
243
|
+
this.modalService.open(ModalTypes.ModalErrorComponent, {}, modalValues);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { ModalTypes } from '../classes/modal-types.enum';
|
|
3
|
+
|
|
4
|
+
export interface ModalEvent {
|
|
5
|
+
type: ModalTypes;
|
|
6
|
+
data: any;
|
|
7
|
+
options: object;
|
|
8
|
+
results: (data: any) => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export class BaseModalOpenerService {
|
|
12
|
+
private openModalEvent = new Subject<ModalEvent>();
|
|
13
|
+
|
|
14
|
+
constructor() {}
|
|
15
|
+
|
|
16
|
+
open(type: ModalTypes, options: any = null, data: any = null): Promise<any> {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
this.openModalEvent.next({
|
|
19
|
+
type,
|
|
20
|
+
data: data || {},
|
|
21
|
+
options: options || {},
|
|
22
|
+
results: resolve
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
subscribe(next: (data: any) => void) {
|
|
28
|
+
return this.openModalEvent.subscribe(next);
|
|
29
|
+
}
|
|
30
|
+
}
|