@qite/tide-client 1.1.52 → 1.1.54

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 (273) hide show
  1. package/build/index.js.map +1 -1
  2. package/build/types/accommodation-occupancy.d.ts +9 -9
  3. package/build/types/accommodation-with-available-places.d.ts +15 -15
  4. package/build/types/accommodation.d.ts +7 -7
  5. package/build/types/additional-services.d.ts +5 -5
  6. package/build/types/alternative-flight-data.d.ts +10 -10
  7. package/build/types/alternative-flight-leg.d.ts +18 -18
  8. package/build/types/alternative-flight.d.ts +12 -12
  9. package/build/types/availability-request.d.ts +11 -11
  10. package/build/types/availability.d.ts +5 -5
  11. package/build/types/available-products-request.d.ts +28 -28
  12. package/build/types/availablility-request.d.ts +11 -11
  13. package/build/types/duration.d.ts +4 -4
  14. package/build/types/entry-line-meta-data.d.ts +5 -5
  15. package/build/types/enums/online-payment-type.d.ts +3 -3
  16. package/build/types/enums/print-action-group.enum.d.ts +10 -10
  17. package/build/types/flight-leg.d.ts +18 -18
  18. package/build/types/flight.d.ts +23 -23
  19. package/build/types/hotel.d.ts +34 -34
  20. package/build/types/offer/affiliates.d.ts +5 -5
  21. package/build/types/offer/booking-v2/request/tour-codes-request.d.ts +3 -3
  22. package/build/types/offer/booking-v2/shared/booking-package-availability.d.ts +1 -0
  23. package/build/types/offer/booking-v2/shared/booking-package-room-option.d.ts +5 -1
  24. package/build/types/offer/booking-v2/shared/room-option-pax-type.d.ts +4 -0
  25. package/build/types/offer/package-search-response.d.ts +4 -4
  26. package/build/types/option-pax.d.ts +4 -4
  27. package/build/types/option.d.ts +26 -26
  28. package/build/types/package-details-request.d.ts +12 -12
  29. package/build/types/package-flight.d.ts +11 -11
  30. package/build/types/package-flights.d.ts +5 -5
  31. package/build/types/package-option.d.ts +19 -19
  32. package/build/types/package-room-option.d.ts +8 -8
  33. package/build/types/package-room.d.ts +7 -7
  34. package/build/types/package-search-destination.d.ts +9 -9
  35. package/build/types/package-search-request-date.d.ts +4 -4
  36. package/build/types/package-search-request-room.d.ts +5 -5
  37. package/build/types/package-search-request.d.ts +21 -21
  38. package/build/types/package-search-response.d.ts +4 -4
  39. package/build/types/package-search-result.d.ts +12 -12
  40. package/build/types/package-sub-option.d.ts +6 -6
  41. package/build/types/pax.d.ts +4 -4
  42. package/build/types/regime.d.ts +5 -5
  43. package/build/types/traveler-grouping.d.ts +5 -5
  44. package/build/utils/bookingClient.d.ts +9 -9
  45. package/build/utils/client.d.ts +4 -4
  46. package/package.json +64 -64
  47. package/rollup.config.js +20 -20
  48. package/src/index.ts +71 -71
  49. package/src/services/odata.service.ts +158 -158
  50. package/src/types/aapi/accommodation-occupancy.ts +9 -9
  51. package/src/types/aapi/accommodation-with-available-places.ts +15 -15
  52. package/src/types/aapi/accommodation.ts +8 -8
  53. package/src/types/aapi/additional-services.ts +6 -6
  54. package/src/types/aapi/alternative-flight-data.ts +11 -11
  55. package/src/types/aapi/alternative-flight-leg.ts +18 -18
  56. package/src/types/aapi/alternative-flight.ts +13 -13
  57. package/src/types/aapi/availability-request.ts +12 -12
  58. package/src/types/aapi/availability.ts +6 -6
  59. package/src/types/aapi/available-products-request.ts +33 -33
  60. package/src/types/aapi/duration.ts +4 -4
  61. package/src/types/aapi/flight-leg.ts +18 -18
  62. package/src/types/aapi/flight.ts +24 -24
  63. package/src/types/aapi/hotel.ts +36 -36
  64. package/src/types/aapi/index.ts +22 -22
  65. package/src/types/aapi/mollie-payment-request.ts +6 -6
  66. package/src/types/aapi/mollie-payment.ts +3 -3
  67. package/src/types/aapi/option-pax.ts +4 -4
  68. package/src/types/aapi/option.ts +29 -29
  69. package/src/types/aapi/pax.ts +4 -4
  70. package/src/types/aapi/price-detail.ts +8 -8
  71. package/src/types/aapi/regime.ts +5 -5
  72. package/src/types/aapi/traveler-grouping.ts +5 -5
  73. package/src/types/company/agent/agent-invoice-item.ts +9 -9
  74. package/src/types/company/agent/change-entry-agent-surcharge-action.model.ts +5 -5
  75. package/src/types/company/agent/entry-totals.ts +7 -7
  76. package/src/types/company/agent/index.ts +3 -3
  77. package/src/types/company/agent-print-action-request.ts +11 -11
  78. package/src/types/company/agent-print-action.ts +7 -7
  79. package/src/types/company/custom-entry-status-item.ts +6 -6
  80. package/src/types/company/index.ts +5 -5
  81. package/src/types/company/number-string-pair.ts +4 -4
  82. package/src/types/enums/allotment-type.ts +5 -5
  83. package/src/types/enums/availability-search-type.ts +4 -4
  84. package/src/types/enums/data-type.ts +14 -14
  85. package/src/types/enums/dossier-type.ts +6 -6
  86. package/src/types/enums/entry-line-flag.ts +6 -6
  87. package/src/types/enums/entry-line-status.ts +19 -19
  88. package/src/types/enums/entry-status.ts +8 -8
  89. package/src/types/enums/export-status.ts +5 -5
  90. package/src/types/enums/gender.ts +5 -5
  91. package/src/types/enums/index.ts +17 -17
  92. package/src/types/enums/meta-data-type.ts +10 -10
  93. package/src/types/enums/payment-type.ts +6 -6
  94. package/src/types/enums/price-chart-type.ts +4 -4
  95. package/src/types/enums/print-action-group.ts +10 -10
  96. package/src/types/enums/requirement-type.ts +5 -5
  97. package/src/types/enums/room-type.ts +8 -8
  98. package/src/types/enums/sale-type.ts +4 -4
  99. package/src/types/enums/service-type.ts +31 -31
  100. package/src/types/index.ts +28 -28
  101. package/src/types/odata/column.ts +8 -8
  102. package/src/types/odata/filter-item.ts +14 -14
  103. package/src/types/odata/index.ts +3 -3
  104. package/src/types/odata/odata-params.ts +3 -3
  105. package/src/types/offer/additional-services.ts +6 -6
  106. package/src/types/offer/address.ts +11 -11
  107. package/src/types/offer/affiliate.ts +5 -5
  108. package/src/types/offer/alternative-flight-data.ts +11 -11
  109. package/src/types/offer/alternative-flight-leg.ts +18 -18
  110. package/src/types/offer/alternative-flight.ts +15 -15
  111. package/src/types/offer/available-package-accommodation.ts +8 -8
  112. package/src/types/offer/available-package-flight.ts +10 -10
  113. package/src/types/offer/available-package-option.ts +18 -18
  114. package/src/types/offer/available-package-pax-price.ts +6 -6
  115. package/src/types/offer/available-package-regime.ts +4 -4
  116. package/src/types/offer/available-package.ts +8 -8
  117. package/src/types/offer/base-price.ts +6 -6
  118. package/src/types/offer/base-prices-from-date-request.ts +12 -12
  119. package/src/types/offer/base-prices-request.ts +12 -12
  120. package/src/types/offer/book-request.ts +38 -38
  121. package/src/types/offer/booking-response.ts +4 -4
  122. package/src/types/offer/booking-v2/index.ts +3 -3
  123. package/src/types/offer/booking-v2/request/bookable-dates-request.ts +4 -4
  124. package/src/types/offer/booking-v2/request/booking-package-address.ts +14 -14
  125. package/src/types/offer/booking-v2/request/booking-package-book-request.ts +26 -26
  126. package/src/types/offer/booking-v2/request/booking-package-customer-request.ts +4 -4
  127. package/src/types/offer/booking-v2/request/booking-package-destination.ts +9 -9
  128. package/src/types/offer/booking-v2/request/booking-package-details-request.ts +24 -24
  129. package/src/types/offer/booking-v2/request/booking-package-flight-pool-request.ts +13 -13
  130. package/src/types/offer/booking-v2/request/booking-package-request.ts +5 -5
  131. package/src/types/offer/booking-v2/request/booking-package-search-request.ts +30 -30
  132. package/src/types/offer/booking-v2/request/booking-package-update-request.ts +5 -5
  133. package/src/types/offer/booking-v2/request/booking-package-voucher-request.ts +4 -4
  134. package/src/types/offer/booking-v2/request/index.ts +14 -14
  135. package/src/types/offer/booking-v2/request/selected-flight.ts +6 -6
  136. package/src/types/offer/booking-v2/request/selected-hotel.ts +5 -5
  137. package/src/types/offer/booking-v2/request/tour-codes.request.ts +3 -3
  138. package/src/types/offer/booking-v2/response/bookable-dates.ts +4 -4
  139. package/src/types/offer/booking-v2/response/booking-package-allotment-info.ts +17 -17
  140. package/src/types/offer/booking-v2/response/booking-package-dossier.ts +6 -6
  141. package/src/types/offer/booking-v2/response/booking-package-flight-pool.ts +6 -6
  142. package/src/types/offer/booking-v2/response/booking-package-hotel-pool.ts +5 -5
  143. package/src/types/offer/booking-v2/response/booking-package-item.ts +40 -40
  144. package/src/types/offer/booking-v2/response/booking-price-detail.ts +20 -20
  145. package/src/types/offer/booking-v2/response/booking-price-details.ts +15 -15
  146. package/src/types/offer/booking-v2/response/booking-price-per-pax.ts +4 -4
  147. package/src/types/offer/booking-v2/response/booking-product-notification.ts +7 -7
  148. package/src/types/offer/booking-v2/response/booking-room-status-option.ts +5 -5
  149. package/src/types/offer/booking-v2/response/booking-room-status.ts +6 -6
  150. package/src/types/offer/booking-v2/response/booking-travel-agent.ts +7 -7
  151. package/src/types/offer/booking-v2/response/booking-validity-line.ts +4 -4
  152. package/src/types/offer/booking-v2/response/booking-voucher-result.ts +3 -3
  153. package/src/types/offer/booking-v2/response/changed-line.ts +4 -4
  154. package/src/types/offer/booking-v2/response/index.ts +16 -16
  155. package/src/types/offer/booking-v2/response/tide-response.ts +6 -6
  156. package/src/types/offer/booking-v2/response/tour-codes-response.ts +3 -3
  157. package/src/types/offer/booking-v2/shared/airline-booking-package-option.ts +3 -3
  158. package/src/types/offer/booking-v2/shared/airport-booking-package-option.ts +3 -3
  159. package/src/types/offer/booking-v2/shared/booking-airline-group.ts +7 -7
  160. package/src/types/offer/booking-v2/shared/booking-airport-group.ts +7 -7
  161. package/src/types/offer/booking-v2/shared/booking-option-group.ts +5 -5
  162. package/src/types/offer/booking-v2/shared/booking-option-pax.ts +14 -14
  163. package/src/types/offer/booking-v2/shared/booking-option-unit.ts +13 -13
  164. package/src/types/offer/booking-v2/shared/booking-package-availability.ts +9 -8
  165. package/src/types/offer/booking-v2/shared/booking-package-flight-meta-data-line.ts +17 -17
  166. package/src/types/offer/booking-v2/shared/booking-package-flight-meta-data.ts +11 -11
  167. package/src/types/offer/booking-v2/shared/booking-package-flight.ts +15 -15
  168. package/src/types/offer/booking-v2/shared/booking-package-hotel-option.ts +10 -10
  169. package/src/types/offer/booking-v2/shared/booking-package-hotel-room.ts +6 -6
  170. package/src/types/offer/booking-v2/shared/booking-package-hotel.ts +27 -27
  171. package/src/types/offer/booking-v2/shared/booking-package-line.ts +17 -17
  172. package/src/types/offer/booking-v2/shared/booking-package-option.ts +55 -55
  173. package/src/types/offer/booking-v2/shared/booking-package-pax.ts +19 -19
  174. package/src/types/offer/booking-v2/shared/booking-package-request-room.ts +6 -6
  175. package/src/types/offer/booking-v2/shared/booking-package-room-option.ts +22 -17
  176. package/src/types/offer/booking-v2/shared/booking-package-room.ts +6 -6
  177. package/src/types/offer/booking-v2/shared/booking-package-tag.ts +5 -5
  178. package/src/types/offer/booking-v2/shared/booking-package.ts +13 -13
  179. package/src/types/offer/booking-v2/shared/index.ts +23 -23
  180. package/src/types/offer/booking-v2/shared/per-booking-package-option.ts +10 -10
  181. package/src/types/offer/booking-v2/shared/per-package-option.ts +10 -10
  182. package/src/types/offer/booking-v2/shared/per-pax-package-option.ts +6 -6
  183. package/src/types/offer/booking-v2/shared/per-unit-package-option.ts +8 -8
  184. package/src/types/offer/booking-v2/shared/room-option-pax-type.ts +4 -0
  185. package/src/types/offer/cached-package-search-result.ts +6 -6
  186. package/src/types/offer/confirmed-dossier-check.ts +6 -6
  187. package/src/types/offer/country-item.ts +5 -5
  188. package/src/types/offer/crm-contact-request.ts +37 -37
  189. package/src/types/offer/customer-request.ts +5 -5
  190. package/src/types/offer/dossier-default-product.ts +14 -14
  191. package/src/types/offer/dossier-view-result.ts +49 -49
  192. package/src/types/offer/entry-check-response.ts +5 -5
  193. package/src/types/offer/entry-line-meta-data.ts +5 -5
  194. package/src/types/offer/entry-line-pax.ts +9 -9
  195. package/src/types/offer/entry-line.ts +74 -74
  196. package/src/types/offer/entry-price-line.ts +40 -40
  197. package/src/types/offer/entry-room2.ts +5 -5
  198. package/src/types/offer/entry.ts +66 -66
  199. package/src/types/offer/flight-meta-data-line.ts +16 -16
  200. package/src/types/offer/flight-meta-data.ts +15 -15
  201. package/src/types/offer/flight-pool.ts +6 -6
  202. package/src/types/offer/index.ts +76 -76
  203. package/src/types/offer/item-tag.ts +3 -3
  204. package/src/types/offer/language.ts +5 -5
  205. package/src/types/offer/member-confirmation-request.ts +5 -5
  206. package/src/types/offer/member-forgot-password-request.ts +4 -4
  207. package/src/types/offer/member-info.ts +10 -10
  208. package/src/types/offer/member-login-request.ts +4 -4
  209. package/src/types/offer/member-login-response.ts +3 -3
  210. package/src/types/offer/member-reset-password-request.ts +4 -4
  211. package/src/types/offer/multiroom-book-request.ts +11 -11
  212. package/src/types/offer/note.ts +16 -16
  213. package/src/types/offer/other-product.ts +14 -14
  214. package/src/types/offer/package-book-request-room.ts +6 -6
  215. package/src/types/offer/package-book-request.ts +13 -13
  216. package/src/types/offer/package-flight.ts +14 -14
  217. package/src/types/offer/package-flights.ts +6 -6
  218. package/src/types/offer/package-option.ts +23 -23
  219. package/src/types/offer/package-price-details-request-room.ts +4 -4
  220. package/src/types/offer/package-price-details-request.ts +9 -9
  221. package/src/types/offer/package-room-option.ts +10 -10
  222. package/src/types/offer/package-room.ts +8 -8
  223. package/src/types/offer/package-search-destination.ts +9 -9
  224. package/src/types/offer/package-search-request-date.ts +4 -4
  225. package/src/types/offer/package-search-request-room.ts +5 -5
  226. package/src/types/offer/package-search-request.ts +23 -23
  227. package/src/types/offer/package-search-result.ts +13 -13
  228. package/src/types/offer/package-sub-option.ts +6 -6
  229. package/src/types/offer/page-result.ts +5 -5
  230. package/src/types/offer/pax.ts +30 -30
  231. package/src/types/offer/payment.ts +20 -20
  232. package/src/types/offer/person-country-preference.ts +7 -7
  233. package/src/types/offer/person-location-preference.ts +7 -7
  234. package/src/types/offer/person-oord-preference.ts +7 -7
  235. package/src/types/offer/person-period-date-range-preference.ts +6 -6
  236. package/src/types/offer/person-period-preference.ts +7 -7
  237. package/src/types/offer/person-region-preference.ts +7 -7
  238. package/src/types/offer/person-tour-group-preference.ts +7 -7
  239. package/src/types/offer/price-detail.ts +19 -19
  240. package/src/types/offer/price-per-pax.ts +6 -6
  241. package/src/types/offer/product-notification-result.ts +9 -9
  242. package/src/types/offer/web-contact-form-request.ts +13 -13
  243. package/src/types/offer/web-contact-has-tag-request.ts +4 -4
  244. package/src/types/tide-client-config.ts +5 -5
  245. package/src/utils/api.ts +54 -54
  246. package/src/utils/booking-client.ts +310 -310
  247. package/src/utils/booking-v2-client.ts +224 -224
  248. package/src/utils/common-client.ts +44 -44
  249. package/src/utils/json.ts +26 -26
  250. package/src/utils/member-client.ts +76 -76
  251. package/src/utils/mollie-client.ts +27 -27
  252. package/src/utils/search-client.ts +22 -22
  253. package/src/utils/web-agent-client.ts +176 -176
  254. package/src/utils/web-client.ts +58 -58
  255. package/src/utils/web-contact-client.ts +43 -43
  256. package/src/utils/web-file.ts +24 -24
  257. package/tests/bookingClient.test.ts +728 -728
  258. package/tests/mocks/available-products.json +183 -183
  259. package/tests/mocks/base-prices-from-date.json +74 -74
  260. package/tests/mocks/base-prices.json +236 -236
  261. package/tests/mocks/entry-multiroom.json +2043 -2043
  262. package/tests/mocks/entry-multiroom.short.json +4 -4
  263. package/tests/mocks/offer-entry.json +2043 -2043
  264. package/tests/mocks/offer-entry.short.json +4 -4
  265. package/tests/mocks/package-entry.json +2043 -2043
  266. package/tests/mocks/package-entry.short.json +4 -4
  267. package/tests/mocks/package-offer-entry.json +2043 -2043
  268. package/tests/mocks/package-offer-entry.short.json +4 -4
  269. package/tests/mocks/package-price-details.json +176 -176
  270. package/tests/mocks/package-search.json +179 -179
  271. package/tests/webClient.test.ts +38 -38
  272. package/tests/webContactClient.test.ts +61 -61
  273. package/tsconfig.json +23 -23
@@ -1,158 +1,158 @@
1
- import { Column, DataType, FilterItem, OdataParams } from "../types";
2
-
3
- export const createParams = (
4
- filter: FilterItem,
5
- all: boolean,
6
- gridColumns?: Column[],
7
- mode?: string,
8
- forceToLower?: boolean
9
- ): OdataParams => {
10
- let params: OdataParams = {};
11
- if (!filter) return params;
12
-
13
- if (!all && filter.take == 0) {
14
- Object.assign(params, {
15
- $top: "0",
16
- });
17
- } else if (!all && filter.take) {
18
- Object.assign(params, {
19
- $skip: `${filter.take * (filter.page - 1)}`,
20
- $top: `${filter.take}`,
21
- });
22
- }
23
-
24
- if (filter.sort.name) {
25
- Object.assign(params, {
26
- $orderby: `${filter.sort.name} ${filter.sort.asc ? "asc" : "desc"}`,
27
- });
28
- }
29
-
30
- let filters = [];
31
- for (const columnName in filter.columns) {
32
- const column = filter.columns[columnName];
33
-
34
- if (column.value !== undefined) {
35
- if (typeof column.value === "string")
36
- column.value = column.value.replace(/[']/, "''");
37
- filters.push(
38
- getColumnFilter(
39
- column.type,
40
- column.value,
41
- columnName,
42
- gridColumns,
43
- forceToLower
44
- )
45
- );
46
- }
47
- }
48
- filters = filters.filter((x) => x);
49
-
50
- if (filters.length > 0) {
51
- Object.assign(params, {
52
- $filter: filters.join(mode || " and "),
53
- });
54
- }
55
-
56
- return params;
57
- };
58
-
59
- const getColumnFilter = (
60
- columnType: string,
61
- columnValue: any,
62
- columnName: string,
63
- gridColumns?: Column[],
64
- forceToLower?: boolean
65
- ) => {
66
- switch (columnType) {
67
- case DataType.text:
68
- if (forceToLower) {
69
- return `contains(tolower(${columnName}),tolower('${columnValue}'))`;
70
- } else {
71
- return `contains(${columnName},'${columnValue}')`;
72
- }
73
-
74
- case "textStart":
75
- return `startswith(${columnName},'${columnValue}')`;
76
-
77
- case "textExact":
78
- return `${columnName} eq '${columnValue || ""}'`;
79
-
80
- case "notEqualId":
81
- return `${columnName} ne ${columnValue}`;
82
-
83
- case "numberId":
84
- case DataType.bool:
85
- case DataType.enum:
86
- case DataType.int:
87
- return `${columnName} eq ${columnValue}`;
88
-
89
- case DataType.numeric:
90
- return `${columnName} ge ${columnValue}`;
91
-
92
- case DataType.date:
93
- case DataType.dateTime:
94
- const startDate = new Date(
95
- columnValue.year,
96
- columnValue.month - 1,
97
- columnValue.day
98
- );
99
- const tillDate = new Date(
100
- columnValue.year,
101
- columnValue.month - 1,
102
- columnValue.day + 1
103
- );
104
-
105
- if (isValidDate(startDate) && isValidDate(tillDate)) {
106
- return `${columnName} ge ${startDate.toISOString()} and ${columnName} le ${tillDate.toISOString()}`;
107
- }
108
- return "";
109
- case DataType.dateFrom:
110
- const fromDate = new Date(
111
- columnValue.year,
112
- columnValue.month - 1,
113
- columnValue.day
114
- );
115
-
116
- if (isValidDate(fromDate)) {
117
- return `${columnName} ge ${fromDate.toISOString()}`;
118
- }
119
- return "";
120
- case DataType.list:
121
- if (!gridColumns) return "";
122
- const gridColumn = gridColumns.find((x) => x.id == columnName);
123
- let filter: string = "";
124
-
125
- if (columnName.indexOf("_") !== -1) {
126
- columnName = columnName.split("_")[0];
127
- }
128
-
129
- if (gridColumn) {
130
- if (gridColumn.child.isFlat) {
131
- filter = getColumnFilter(gridColumn.child.dataType, columnValue, "x");
132
- } else {
133
- filter = getColumnFilter(
134
- gridColumn.child.dataType,
135
- columnValue,
136
- "x/" + gridColumn.child.valueField
137
- );
138
- }
139
- }
140
-
141
- return `${columnName}/any(x:${filter})`;
142
-
143
- case "dateRange":
144
- return `${columnName} ge ${columnValue[0].toISOString()} and ${columnName} le ${columnValue[1].toISOString()}`;
145
-
146
- case "inList":
147
- return `(${columnValue
148
- .map((value: any) => `${columnName} eq ${value}`)
149
- .join(" or ")})`;
150
-
151
- default:
152
- return "";
153
- }
154
- };
155
-
156
- const isValidDate = (d: any) => {
157
- return d instanceof Date && !isNaN(d.getTime());
158
- };
1
+ import { Column, DataType, FilterItem, OdataParams } from "../types";
2
+
3
+ export const createParams = (
4
+ filter: FilterItem,
5
+ all: boolean,
6
+ gridColumns?: Column[],
7
+ mode?: string,
8
+ forceToLower?: boolean
9
+ ): OdataParams => {
10
+ let params: OdataParams = {};
11
+ if (!filter) return params;
12
+
13
+ if (!all && filter.take == 0) {
14
+ Object.assign(params, {
15
+ $top: "0",
16
+ });
17
+ } else if (!all && filter.take) {
18
+ Object.assign(params, {
19
+ $skip: `${filter.take * (filter.page - 1)}`,
20
+ $top: `${filter.take}`,
21
+ });
22
+ }
23
+
24
+ if (filter.sort.name) {
25
+ Object.assign(params, {
26
+ $orderby: `${filter.sort.name} ${filter.sort.asc ? "asc" : "desc"}`,
27
+ });
28
+ }
29
+
30
+ let filters = [];
31
+ for (const columnName in filter.columns) {
32
+ const column = filter.columns[columnName];
33
+
34
+ if (column.value !== undefined) {
35
+ if (typeof column.value === "string")
36
+ column.value = column.value.replace(/[']/, "''");
37
+ filters.push(
38
+ getColumnFilter(
39
+ column.type,
40
+ column.value,
41
+ columnName,
42
+ gridColumns,
43
+ forceToLower
44
+ )
45
+ );
46
+ }
47
+ }
48
+ filters = filters.filter((x) => x);
49
+
50
+ if (filters.length > 0) {
51
+ Object.assign(params, {
52
+ $filter: filters.join(mode || " and "),
53
+ });
54
+ }
55
+
56
+ return params;
57
+ };
58
+
59
+ const getColumnFilter = (
60
+ columnType: string,
61
+ columnValue: any,
62
+ columnName: string,
63
+ gridColumns?: Column[],
64
+ forceToLower?: boolean
65
+ ) => {
66
+ switch (columnType) {
67
+ case DataType.text:
68
+ if (forceToLower) {
69
+ return `contains(tolower(${columnName}),tolower('${columnValue}'))`;
70
+ } else {
71
+ return `contains(${columnName},'${columnValue}')`;
72
+ }
73
+
74
+ case "textStart":
75
+ return `startswith(${columnName},'${columnValue}')`;
76
+
77
+ case "textExact":
78
+ return `${columnName} eq '${columnValue || ""}'`;
79
+
80
+ case "notEqualId":
81
+ return `${columnName} ne ${columnValue}`;
82
+
83
+ case "numberId":
84
+ case DataType.bool:
85
+ case DataType.enum:
86
+ case DataType.int:
87
+ return `${columnName} eq ${columnValue}`;
88
+
89
+ case DataType.numeric:
90
+ return `${columnName} ge ${columnValue}`;
91
+
92
+ case DataType.date:
93
+ case DataType.dateTime:
94
+ const startDate = new Date(
95
+ columnValue.year,
96
+ columnValue.month - 1,
97
+ columnValue.day
98
+ );
99
+ const tillDate = new Date(
100
+ columnValue.year,
101
+ columnValue.month - 1,
102
+ columnValue.day + 1
103
+ );
104
+
105
+ if (isValidDate(startDate) && isValidDate(tillDate)) {
106
+ return `${columnName} ge ${startDate.toISOString()} and ${columnName} le ${tillDate.toISOString()}`;
107
+ }
108
+ return "";
109
+ case DataType.dateFrom:
110
+ const fromDate = new Date(
111
+ columnValue.year,
112
+ columnValue.month - 1,
113
+ columnValue.day
114
+ );
115
+
116
+ if (isValidDate(fromDate)) {
117
+ return `${columnName} ge ${fromDate.toISOString()}`;
118
+ }
119
+ return "";
120
+ case DataType.list:
121
+ if (!gridColumns) return "";
122
+ const gridColumn = gridColumns.find((x) => x.id == columnName);
123
+ let filter: string = "";
124
+
125
+ if (columnName.indexOf("_") !== -1) {
126
+ columnName = columnName.split("_")[0];
127
+ }
128
+
129
+ if (gridColumn) {
130
+ if (gridColumn.child.isFlat) {
131
+ filter = getColumnFilter(gridColumn.child.dataType, columnValue, "x");
132
+ } else {
133
+ filter = getColumnFilter(
134
+ gridColumn.child.dataType,
135
+ columnValue,
136
+ "x/" + gridColumn.child.valueField
137
+ );
138
+ }
139
+ }
140
+
141
+ return `${columnName}/any(x:${filter})`;
142
+
143
+ case "dateRange":
144
+ return `${columnName} ge ${columnValue[0].toISOString()} and ${columnName} le ${columnValue[1].toISOString()}`;
145
+
146
+ case "inList":
147
+ return `(${columnValue
148
+ .map((value: any) => `${columnName} eq ${value}`)
149
+ .join(" or ")})`;
150
+
151
+ default:
152
+ return "";
153
+ }
154
+ };
155
+
156
+ const isValidDate = (d: any) => {
157
+ return d instanceof Date && !isNaN(d.getTime());
158
+ };
@@ -1,9 +1,9 @@
1
- export interface AccommodationOccupancy {
2
- minAdults: number;
3
- maxAdults: number;
4
- maxChildren: number;
5
- minChildAge: number;
6
- maxChildAge: number;
7
- minPax: number;
8
- maxPax: number;
9
- }
1
+ export interface AccommodationOccupancy {
2
+ minAdults: number;
3
+ maxAdults: number;
4
+ maxChildren: number;
5
+ minChildAge: number;
6
+ maxChildAge: number;
7
+ minPax: number;
8
+ maxPax: number;
9
+ }
@@ -1,15 +1,15 @@
1
- import { Accommodation, Pax } from ".";
2
-
3
- export interface AccommodationWithAvailablePlaces extends Accommodation {
4
- availablePlaces?: number;
5
- totalPlaces?: number;
6
- price?: number;
7
- pax: Pax[];
8
- allotmentId?: number;
9
- inOptionPlaces?: number;
10
- status?: number;
11
- subStatus: string;
12
- startTime: string;
13
- endTime: string;
14
- tourCode: string;
15
- }
1
+ import { Accommodation, Pax } from ".";
2
+
3
+ export interface AccommodationWithAvailablePlaces extends Accommodation {
4
+ availablePlaces?: number;
5
+ totalPlaces?: number;
6
+ price?: number;
7
+ pax: Pax[];
8
+ allotmentId?: number;
9
+ inOptionPlaces?: number;
10
+ status?: number;
11
+ subStatus: string;
12
+ startTime: string;
13
+ endTime: string;
14
+ tourCode: string;
15
+ }
@@ -1,8 +1,8 @@
1
- import { AccommodationOccupancy } from ".";
2
-
3
- export interface Accommodation {
4
- id: number;
5
- code: string;
6
- name: string;
7
- occupancies: AccommodationOccupancy[];
8
- }
1
+ import { AccommodationOccupancy } from ".";
2
+
3
+ export interface Accommodation {
4
+ id: number;
5
+ code: string;
6
+ name: string;
7
+ occupancies: AccommodationOccupancy[];
8
+ }
@@ -1,6 +1,6 @@
1
- export interface AdditionalServices {
2
- luggageExtraCostPerPiece: number;
3
- luggageExtraIsPerPassenger: boolean;
4
- productCode: string;
5
- accommodationCode: string;
6
- }
1
+ export interface AdditionalServices {
2
+ luggageExtraCostPerPiece: number;
3
+ luggageExtraIsPerPassenger: boolean;
4
+ productCode: string;
5
+ accommodationCode: string;
6
+ }
@@ -1,11 +1,11 @@
1
- import { AdditionalServices, AlternativeFlightLeg } from ".";
2
-
3
- export interface AlternativeFlightData {
4
- departureDate: Date;
5
- departureTime: string;
6
- arrivalDate: Date;
7
- arrivalTime: string;
8
- legs: AlternativeFlightLeg[];
9
- additionalServices: AdditionalServices;
10
- isLowCost: boolean;
11
- }
1
+ import { AdditionalServices, AlternativeFlightLeg } from ".";
2
+
3
+ export interface AlternativeFlightData {
4
+ departureDate: Date;
5
+ departureTime: string;
6
+ arrivalDate: Date;
7
+ arrivalTime: string;
8
+ legs: AlternativeFlightLeg[];
9
+ additionalServices: AdditionalServices;
10
+ isLowCost: boolean;
11
+ }
@@ -1,18 +1,18 @@
1
- export interface AlternativeFlightLeg {
2
- airline: string;
3
- airlineDescription: string;
4
- flightNumber: string;
5
- departureAirport: string;
6
- departureAirportDescription: string;
7
- departureCountry: string;
8
- departureDate: Date;
9
- departureTime: string;
10
- arrivalAirport: string;
11
- arrivalAirportDescription: string;
12
- arrivalCountry: string;
13
- arrivalDate: Date;
14
- arrivalTime: string;
15
- bookingClassCode: string;
16
- operatingAirlineCode: string;
17
- marketingAirlineCode: string;
18
- }
1
+ export interface AlternativeFlightLeg {
2
+ airline: string;
3
+ airlineDescription: string;
4
+ flightNumber: string;
5
+ departureAirport: string;
6
+ departureAirportDescription: string;
7
+ departureCountry: string;
8
+ departureDate: Date;
9
+ departureTime: string;
10
+ arrivalAirport: string;
11
+ arrivalAirportDescription: string;
12
+ arrivalCountry: string;
13
+ arrivalDate: Date;
14
+ arrivalTime: string;
15
+ bookingClassCode: string;
16
+ operatingAirlineCode: string;
17
+ marketingAirlineCode: string;
18
+ }
@@ -1,13 +1,13 @@
1
- import { AdditionalServices, AlternativeFlightData } from ".";
2
-
3
- export interface AlternativeFlight {
4
- id: string;
5
- luggage: number;
6
- price: number;
7
- currency: string;
8
- totalPriceWithoutTaxes: number;
9
- taxes: number;
10
- departureFlight: AlternativeFlightData;
11
- returnFlight: AlternativeFlightData;
12
- additionalServices: AdditionalServices;
13
- }
1
+ import { AdditionalServices, AlternativeFlightData } from ".";
2
+
3
+ export interface AlternativeFlight {
4
+ id: string;
5
+ luggage: number;
6
+ price: number;
7
+ currency: string;
8
+ totalPriceWithoutTaxes: number;
9
+ taxes: number;
10
+ departureFlight: AlternativeFlightData;
11
+ returnFlight: AlternativeFlightData;
12
+ additionalServices: AdditionalServices;
13
+ }
@@ -1,12 +1,12 @@
1
- export interface AvailabilityRequest {
2
- officeId: number;
3
- agentId?: number;
4
- from: Date;
5
- to: Date;
6
- catalogueIds?: number[];
7
- calculatePrices: boolean;
8
- preventDifferentAccommodations?: boolean;
9
- language: string;
10
- strictAccommodationDuration?: boolean;
11
- withInPackageDefault?: boolean;
12
- }
1
+ export interface AvailabilityRequest {
2
+ officeId: number;
3
+ agentId?: number;
4
+ from: Date;
5
+ to: Date;
6
+ catalogueIds?: number[];
7
+ calculatePrices: boolean;
8
+ preventDifferentAccommodations?: boolean;
9
+ language: string;
10
+ strictAccommodationDuration?: boolean;
11
+ withInPackageDefault?: boolean;
12
+ }
@@ -1,6 +1,6 @@
1
- import { Hotel, Option } from ".";
2
-
3
- export interface Availability {
4
- hotel: Hotel;
5
- options: Option[];
6
- }
1
+ import { Hotel, Option } from ".";
2
+
3
+ export interface Availability {
4
+ hotel: Hotel;
5
+ options: Option[];
6
+ }
@@ -1,33 +1,33 @@
1
- import { AvailabilityRequest, Duration, TravelerGrouping } from ".";
2
-
3
- export interface AvailableProductsRequest extends AvailabilityRequest {
4
- searchType: number;
5
- productType: number;
6
- travelerGroupings: TravelerGrouping[];
7
- includePriceDetails: boolean;
8
- includeAllOptions: boolean;
9
- addDefaultProducts: boolean;
10
- allotmentType?: number;
11
- productIds?: number[];
12
- productCodes?: string[];
13
- accommodationCodes?: string[];
14
- regimeCodes?: string[];
15
- periodOffset?: number;
16
- duration?: Duration;
17
- productName?: string;
18
- countryCodes?: string[];
19
- locationCode?: string;
20
- regionId?: number;
21
- oordId?: number;
22
- geographicalRegionIds?: number[];
23
- preferredDepartureAirportCodes?: string[];
24
- flightsIncluded?: boolean;
25
- ignorePreferredProducts?: boolean;
26
- cheapestOption?: boolean;
27
- useDefaults?: boolean;
28
- useCachedPrices?: boolean;
29
- includeClosedAllotments?: boolean;
30
- includeFullyBookedAllotments?: boolean;
31
- tagIds?: number[];
32
- tourCode?: string;
33
- }
1
+ import { AvailabilityRequest, Duration, TravelerGrouping } from ".";
2
+
3
+ export interface AvailableProductsRequest extends AvailabilityRequest {
4
+ searchType: number;
5
+ productType: number;
6
+ travelerGroupings: TravelerGrouping[];
7
+ includePriceDetails: boolean;
8
+ includeAllOptions: boolean;
9
+ addDefaultProducts: boolean;
10
+ allotmentType?: number;
11
+ productIds?: number[];
12
+ productCodes?: string[];
13
+ accommodationCodes?: string[];
14
+ regimeCodes?: string[];
15
+ periodOffset?: number;
16
+ duration?: Duration;
17
+ productName?: string;
18
+ countryCodes?: string[];
19
+ locationCode?: string;
20
+ regionId?: number;
21
+ oordId?: number;
22
+ geographicalRegionIds?: number[];
23
+ preferredDepartureAirportCodes?: string[];
24
+ flightsIncluded?: boolean;
25
+ ignorePreferredProducts?: boolean;
26
+ cheapestOption?: boolean;
27
+ useDefaults?: boolean;
28
+ useCachedPrices?: boolean;
29
+ includeClosedAllotments?: boolean;
30
+ includeFullyBookedAllotments?: boolean;
31
+ tagIds?: number[];
32
+ tourCode?: string;
33
+ }
@@ -1,4 +1,4 @@
1
- export interface Duration {
2
- min?: number;
3
- max?: number;
4
- }
1
+ export interface Duration {
2
+ min?: number;
3
+ max?: number;
4
+ }
@@ -1,18 +1,18 @@
1
- export interface FlightLeg {
2
- airline: string;
3
- airlineDescription: string;
4
- operatingAirlineCode: string;
5
- marketingAirlineCode: string;
6
- flightNumber: string;
7
- departureAirport: string;
8
- departureAirportDescription: string;
9
- departureCountry: string;
10
- departureDate?: Date;
11
- departureTime?: string;
12
- arrivalAirport: string;
13
- arrivalAirportDescription: string;
14
- arrivalCountry: string;
15
- arrivalDate?: Date;
16
- arrivalTime?: string;
17
- flightClass: string;
18
- }
1
+ export interface FlightLeg {
2
+ airline: string;
3
+ airlineDescription: string;
4
+ operatingAirlineCode: string;
5
+ marketingAirlineCode: string;
6
+ flightNumber: string;
7
+ departureAirport: string;
8
+ departureAirportDescription: string;
9
+ departureCountry: string;
10
+ departureDate?: Date;
11
+ departureTime?: string;
12
+ arrivalAirport: string;
13
+ arrivalAirportDescription: string;
14
+ arrivalCountry: string;
15
+ arrivalDate?: Date;
16
+ arrivalTime?: string;
17
+ flightClass: string;
18
+ }