ordering-components-external 13.2.12 → 13.2.13

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 (554) hide show
  1. package/.babelrc +22 -22
  2. package/.vscode/settings.json +3 -3
  3. package/_bundles/0.ordering-component.aa21761da1477298dd80.js +1 -0
  4. package/_bundles/{1.ordering-component.42ec5fef3ccdf425c509.js → 1.ordering-component.aa21761da1477298dd80.js} +1 -1
  5. package/_bundles/{2.ordering-component.42ec5fef3ccdf425c509.js → 2.ordering-component.aa21761da1477298dd80.js} +1 -1
  6. package/_bundles/{4.ordering-component.42ec5fef3ccdf425c509.js → 4.ordering-component.aa21761da1477298dd80.js} +1 -1
  7. package/_bundles/{5.ordering-component.42ec5fef3ccdf425c509.js → 5.ordering-component.aa21761da1477298dd80.js} +1 -1
  8. package/_bundles/{6.ordering-component.42ec5fef3ccdf425c509.js → 6.ordering-component.aa21761da1477298dd80.js} +1 -1
  9. package/_bundles/7.ordering-component.aa21761da1477298dd80.js +2 -0
  10. package/_bundles/7.ordering-component.aa21761da1477298dd80.js.LICENSE.txt +53 -0
  11. package/_bundles/{8.ordering-component.42ec5fef3ccdf425c509.js → 8.ordering-component.aa21761da1477298dd80.js} +1 -1
  12. package/_bundles/ordering-component.aa21761da1477298dd80.js +2 -0
  13. package/_bundles/{ordering-component.42ec5fef3ccdf425c509.js.LICENSE.txt → ordering-component.aa21761da1477298dd80.js.LICENSE.txt} +9 -0
  14. package/_modules/components/AddressDetails/index.js +35 -35
  15. package/_modules/components/AddressForm/index.js +63 -63
  16. package/_modules/components/AddressList/index.js +56 -56
  17. package/_modules/components/Analitycs/index.js +11 -11
  18. package/_modules/components/AnalyticsSegment/index.js +11 -11
  19. package/_modules/components/AppleLogin/index.js +37 -37
  20. package/_modules/components/BaseComponent/index.js +15 -15
  21. package/_modules/components/BusinessAndProductList/index.js +43 -43
  22. package/_modules/components/BusinessBasicInformation/index.js +30 -30
  23. package/_modules/components/BusinessController/index.js +65 -65
  24. package/_modules/components/BusinessInformation/BusinessOption/index.js +22 -22
  25. package/_modules/components/BusinessInformation/index.js +24 -24
  26. package/_modules/components/BusinessList/index.js +57 -57
  27. package/_modules/components/BusinessMenuListing/index.js +30 -30
  28. package/_modules/components/BusinessProductsCategories/index.js +18 -18
  29. package/_modules/components/BusinessProductsSearch/index.js +16 -16
  30. package/_modules/components/BusinessReviews/index.js +37 -37
  31. package/_modules/components/BusinessSearchList/index.js +37 -36
  32. package/_modules/components/BusinessSortControl/index.js +34 -34
  33. package/_modules/components/BusinessTypeFilter/index.js +36 -36
  34. package/_modules/components/BusinessesMap/index.js +33 -33
  35. package/_modules/components/Cart/index.js +48 -48
  36. package/_modules/components/CartStoresListing/index.js +15 -15
  37. package/_modules/components/Checkout/index.js +83 -83
  38. package/_modules/components/CmsContent/index.js +30 -30
  39. package/_modules/components/Contacts/index.js +45 -45
  40. package/_modules/components/CouponControl/index.js +29 -29
  41. package/_modules/components/DragAndDrop/index.js +4 -4
  42. package/_modules/components/DriverList/index.js +31 -31
  43. package/_modules/components/DriverTips/index.js +41 -41
  44. package/_modules/components/Emitter/index.js +3 -3
  45. package/_modules/components/FacebookLoginButton/index.js +50 -50
  46. package/_modules/components/FacebookPixel/index.js +8 -8
  47. package/_modules/components/FavoriteList/index.js +43 -43
  48. package/_modules/components/FirebaseGoogleLoginButton/index.js +21 -21
  49. package/_modules/components/FloatingButton/index.js +22 -22
  50. package/_modules/components/ForgotPasswordForm/index.js +53 -53
  51. package/_modules/components/GiftCard/GiftCardOrdersList/index.js +16 -16
  52. package/_modules/components/GiftCard/PurchaseGiftCard/index.js +17 -17
  53. package/_modules/components/GiftCard/RedeemGiftCard/index.js +14 -14
  54. package/_modules/components/GiftCard/SendGiftCard/index.js +14 -14
  55. package/_modules/components/GoogleAutocompleteInput/index.js +25 -25
  56. package/_modules/components/GoogleIdentity/index.js +38 -38
  57. package/_modules/components/GoogleLoginButton/index.js +61 -61
  58. package/_modules/components/GoogleMaps/index.js +44 -44
  59. package/_modules/components/GpsButton/index.js +27 -27
  60. package/_modules/components/LanguageSelector/index.js +38 -38
  61. package/_modules/components/LoginForm/index.js +72 -72
  62. package/_modules/components/LogoutAction/index.js +28 -28
  63. package/_modules/components/MainSearch/index.js +41 -41
  64. package/_modules/components/MapView/index.js +12 -12
  65. package/_modules/components/MenuControl/index.js +58 -58
  66. package/_modules/components/Messages/index.js +35 -35
  67. package/_modules/components/MomentOption/index.js +57 -57
  68. package/_modules/components/MultiCartCreate/index.js +10 -10
  69. package/_modules/components/MultiCartsPaymethodsAndWallets/index.js +22 -22
  70. package/_modules/components/MultiCheckout/index.js +34 -34
  71. package/_modules/components/MultiOrdersDetails/index.js +19 -19
  72. package/_modules/components/MyOrders/index.js +35 -35
  73. package/_modules/components/MyOrdersList/index.js +35 -35
  74. package/_modules/components/NewOrderNotification/index.js +8 -8
  75. package/_modules/components/OrderChange/index.js +30 -30
  76. package/_modules/components/OrderDetails/index.js +66 -66
  77. package/_modules/components/OrderList/index.js +67 -67
  78. package/_modules/components/OrderListGroups/index.js +25 -25
  79. package/_modules/components/OrderReview/index.js +35 -35
  80. package/_modules/components/OrderTypeControl/index.js +23 -23
  81. package/_modules/components/OrderVerticalList/index.js +15 -15
  82. package/_modules/components/OrdersControlFilters/index.js +15 -15
  83. package/_modules/components/OrdersDashboardComponents/Appointments/index.js +14 -14
  84. package/_modules/components/OrdersDashboardComponents/BusinessProductsListing/index.js +51 -51
  85. package/_modules/components/OrdersDashboardComponents/CheckPassword/index.js +35 -35
  86. package/_modules/components/OrdersDashboardComponents/CityList/index.js +33 -33
  87. package/_modules/components/OrdersDashboardComponents/CountryList/index.js +32 -32
  88. package/_modules/components/OrdersDashboardComponents/CustomOrderDetails/index.js +25 -25
  89. package/_modules/components/OrdersDashboardComponents/DashboardBusinessList/index.js +75 -75
  90. package/_modules/components/OrdersDashboardComponents/DashboardOrdersList/index.js +77 -77
  91. package/_modules/components/OrdersDashboardComponents/DriversList/index.js +73 -73
  92. package/_modules/components/OrdersDashboardComponents/ExportCSV/index.js +26 -26
  93. package/_modules/components/OrdersDashboardComponents/GiftCardsList/index.js +16 -16
  94. package/_modules/components/OrdersDashboardComponents/GoogleMapsApiKeySetting/index.js +14 -14
  95. package/_modules/components/OrdersDashboardComponents/LogisticInformation/index.js +29 -29
  96. package/_modules/components/OrdersDashboardComponents/Logistics/index.js +29 -29
  97. package/_modules/components/OrdersDashboardComponents/Messages/index.js +42 -42
  98. package/_modules/components/OrdersDashboardComponents/MetaFields/index.js +40 -40
  99. package/_modules/components/OrdersDashboardComponents/OrderDetails/index.js +54 -54
  100. package/_modules/components/OrdersDashboardComponents/OrderNotification/index.js +19 -19
  101. package/_modules/components/OrdersDashboardComponents/OrdersFilter/index.js +73 -73
  102. package/_modules/components/OrdersDashboardComponents/OrdersManage/index.js +74 -74
  103. package/_modules/components/OrdersDashboardComponents/PointsWalletLevels/index.js +38 -38
  104. package/_modules/components/OrdersDashboardComponents/ReviewCustomer/index.js +26 -26
  105. package/_modules/components/OrdersDashboardComponents/Schedule/index.js +56 -56
  106. package/_modules/components/OrdersDashboardComponents/SettingsList/index.js +51 -51
  107. package/_modules/components/OrdersDashboardComponents/UserFormDetails/index.js +82 -82
  108. package/_modules/components/OrdersDashboardComponents/UsersList/index.js +72 -72
  109. package/_modules/components/OrdersDashboardComponents/WebsocketStatus/index.js +10 -10
  110. package/_modules/components/PageBanner/index.js +17 -17
  111. package/_modules/components/PaymentOptionCash/index.js +26 -26
  112. package/_modules/components/PaymentOptionPaypal/index.js +35 -35
  113. package/_modules/components/PaymentOptionSquare/index.js +22 -22
  114. package/_modules/components/PaymentOptionStripe/index.js +45 -45
  115. package/_modules/components/PaymentOptionStripeDirect/index.js +34 -34
  116. package/_modules/components/PaymentOptionStripeRedirect/StripeRedirectForm/index.js +24 -24
  117. package/_modules/components/PaymentOptionStripeRedirect/index.js +39 -39
  118. package/_modules/components/PaymentOptionWallet/index.js +11 -11
  119. package/_modules/components/PaymentOptions/index.js +37 -37
  120. package/_modules/components/PaymethodList/index.js +30 -30
  121. package/_modules/components/PhoneAutocomplete/index.js +30 -30
  122. package/_modules/components/PlaceSpot/index.js +15 -15
  123. package/_modules/components/Popup/index.js +39 -39
  124. package/_modules/components/ProductComponent/index.js +36 -36
  125. package/_modules/components/ProductForm/index.js +145 -145
  126. package/_modules/components/ProductImages/index.js +20 -20
  127. package/_modules/components/ProductIngredient/index.js +19 -19
  128. package/_modules/components/ProductItemAccordion/index.js +18 -18
  129. package/_modules/components/ProductOption/index.js +9 -9
  130. package/_modules/components/ProductOptionSuboption/index.js +36 -36
  131. package/_modules/components/ProductShare/index.js +26 -26
  132. package/_modules/components/ProductsList/index.js +26 -26
  133. package/_modules/components/ProductsListing/index.js +50 -50
  134. package/_modules/components/ProfessionalInfo/index.js +34 -34
  135. package/_modules/components/PromotionsController/index.js +10 -10
  136. package/_modules/components/QueryLoginSpoonity/index.js +30 -30
  137. package/_modules/components/ReCaptcha/index.js +9 -9
  138. package/_modules/components/ResetPassword/index.js +30 -30
  139. package/_modules/components/ReviewCustomer/index.js +26 -26
  140. package/_modules/components/ReviewDriver/index.js +33 -33
  141. package/_modules/components/ReviewProduct/index.js +38 -38
  142. package/_modules/components/SearchOptions/index.js +23 -23
  143. package/_modules/components/Sessions/index.js +33 -33
  144. package/_modules/components/SignupForm/index.js +71 -71
  145. package/_modules/components/SingleBusinessCard/index.js +29 -29
  146. package/_modules/components/SingleOrderCard/index.js +32 -32
  147. package/_modules/components/SingleProductCard/index.js +28 -28
  148. package/_modules/components/SingleProfessionalCard/index.js +28 -28
  149. package/_modules/components/SmartAppBanner/index.js +13 -13
  150. package/_modules/components/StoreProductList/index.js +46 -46
  151. package/_modules/components/StripeElementsForm/CardForm/index.js +36 -36
  152. package/_modules/components/StripeElementsForm/index.js +25 -25
  153. package/_modules/components/UpsellingPage/index.js +27 -27
  154. package/_modules/components/UserFormDetails/index.js +85 -85
  155. package/_modules/components/UserVerification/index.js +28 -28
  156. package/_modules/components/WalletList/index.js +11 -11
  157. package/_modules/components/WebsocketStatus/index.js +10 -10
  158. package/_modules/components/WrapperGoogleMaps/index.js +9 -9
  159. package/_modules/contexts/ApiContext/index.js +13 -13
  160. package/_modules/contexts/BillingContext/index.js +7 -7
  161. package/_modules/contexts/BusinessContext/index.js +18 -18
  162. package/_modules/contexts/ConfigContext/index.js +19 -19
  163. package/_modules/contexts/CustomerContext/index.js +10 -10
  164. package/_modules/contexts/EventContext/index.js +9 -9
  165. package/_modules/contexts/LanguageContext/index.js +28 -28
  166. package/_modules/contexts/OptimizationLoadContext/index.js +16 -16
  167. package/_modules/contexts/OrderContext/index.js +97 -97
  168. package/_modules/contexts/OrderingContext/index.js +7 -7
  169. package/_modules/contexts/OrderingThemeContext/index.js +19 -19
  170. package/_modules/contexts/ProductContext/index.js +14 -14
  171. package/_modules/contexts/SessionContext/index.js +23 -23
  172. package/_modules/contexts/SiteContext/index.js +18 -18
  173. package/_modules/contexts/ToastContext/index.js +4 -4
  174. package/_modules/contexts/UtilsContext/index.js +14 -14
  175. package/_modules/contexts/ValidationsFieldsContext/index.js +9 -9
  176. package/_modules/contexts/WebsocketContext/index.js +17 -17
  177. package/_modules/contexts/WebsocketContext/socket.js +4 -4
  178. package/_modules/native/src/NativeStrategy/index.js +9 -9
  179. package/_modules/native/src/contexts/OrderingContext/index.js +7 -7
  180. package/_modules/utils/index.js +2 -2
  181. package/_modules/webStrategy/index.js +8 -8
  182. package/cypress/fixtures/example.json +4 -4
  183. package/cypress/integration/naked/BusinessProductsCategories.spec.js +9 -9
  184. package/cypress/integration/naked/PhoneAutocomplete.spec.js +22 -22
  185. package/cypress/integration/naked/activeOrders.spec.js +15 -15
  186. package/cypress/integration/naked/addressDetails.spec.js +10 -10
  187. package/cypress/integration/naked/appleLogin.spec.js +14 -14
  188. package/cypress/integration/naked/businessBasicInformation.spec.js +14 -14
  189. package/cypress/integration/naked/businessController.spec.js +9 -9
  190. package/cypress/integration/naked/businessInformation.spec.js +19 -19
  191. package/cypress/integration/naked/businessProductsSearch.spec.js +9 -9
  192. package/cypress/integration/naked/businessReviews.spec.js +16 -16
  193. package/cypress/integration/naked/businessSortControl.spec.js +9 -9
  194. package/cypress/integration/naked/businessTypeFilter.spec.js +10 -10
  195. package/cypress/integration/naked/businessesMap.spec.js +13 -13
  196. package/cypress/integration/naked/cms.spec.js +9 -9
  197. package/cypress/integration/naked/config.spec.js +34 -34
  198. package/cypress/integration/naked/driverTips.spec.js +10 -10
  199. package/cypress/integration/naked/events.spec.js +13 -13
  200. package/cypress/integration/naked/facebookLogin.spec.js +13 -13
  201. package/cypress/integration/naked/floatingButton.spec.js +13 -13
  202. package/cypress/integration/naked/forgotPassword.spec.js +20 -20
  203. package/cypress/integration/naked/googleLogin.spec.js +11 -11
  204. package/cypress/integration/naked/languageExamples.spec.js +25 -25
  205. package/cypress/integration/naked/languageSelector.spec.js +10 -10
  206. package/cypress/integration/naked/login.spec.js +38 -38
  207. package/cypress/integration/naked/logout.spec.js +15 -15
  208. package/cypress/integration/naked/mainSearch.spec.js +9 -9
  209. package/cypress/integration/naked/menuControl.spec.js +9 -9
  210. package/cypress/integration/naked/messages.spec.js +25 -25
  211. package/cypress/integration/naked/momentOption.spec.js +10 -10
  212. package/cypress/integration/naked/myOrders.spec.js +11 -11
  213. package/cypress/integration/naked/myOrdersList.spec.js +9 -9
  214. package/cypress/integration/naked/orderContextAdvanced.spec.js +23 -23
  215. package/cypress/integration/naked/orderDetails.spec.js +11 -11
  216. package/cypress/integration/naked/paymentOptionCash.spec.js +21 -21
  217. package/cypress/integration/naked/paymentOptionStripe.spec.js +11 -11
  218. package/cypress/integration/naked/paymentOptionStripeDirect.spec.js +11 -11
  219. package/cypress/integration/naked/paymentOptions.spec.js +9 -9
  220. package/cypress/integration/naked/popupExample.spec.js +17 -17
  221. package/cypress/integration/naked/productImages.spec.js +11 -11
  222. package/cypress/integration/naked/productOptionExample.spec.js +21 -21
  223. package/cypress/integration/naked/productShare.spec.js +9 -9
  224. package/cypress/integration/naked/productsList.spec.js +9 -9
  225. package/cypress/integration/naked/resetPassword.spec.js +11 -11
  226. package/cypress/integration/naked/reviewOrders.spec.js +13 -13
  227. package/cypress/integration/naked/searchOptions.spec.js +18 -18
  228. package/cypress/integration/naked/signup.spec.js +31 -31
  229. package/cypress/integration/naked/upselling.spec.js +13 -13
  230. package/cypress/integration/naked/userDetails.spec.js +12 -12
  231. package/cypress/plugins/index.js +21 -21
  232. package/cypress/support/commands.js +35 -35
  233. package/cypress/support/index.js +20 -20
  234. package/cypress.json +12 -12
  235. package/example/App.js +263 -263
  236. package/example/components/ActiveOrdersUI/index.js +72 -72
  237. package/example/components/AddressDetailsUI/index.js +101 -101
  238. package/example/components/AddressFormUI/index.js +161 -161
  239. package/example/components/AddressListUI/index.js +33 -33
  240. package/example/components/AlertPopup/index.js +10 -10
  241. package/example/components/AlertUI/index.js +49 -49
  242. package/example/components/AlertUI/style.css +5 -5
  243. package/example/components/AppleLoginUI/index.js +40 -40
  244. package/example/components/BaseComponentUI/index.js +34 -34
  245. package/example/components/BusinessBasicInformationUI/index.js +118 -118
  246. package/example/components/BusinessControllerUI/index.js +89 -89
  247. package/example/components/BusinessInformationUI/BusinessOptionUI/index.js +83 -83
  248. package/example/components/BusinessInformationUI/index.js +83 -83
  249. package/example/components/BusinessProductsCategoriesUI/index.js +42 -42
  250. package/example/components/BusinessProductsSearchUI/index.js +38 -38
  251. package/example/components/BusinessReviewsUI/index.js +77 -77
  252. package/example/components/BusinessSortControlUI/index.js +47 -47
  253. package/example/components/BusinessTypeFilterUI/index.js +53 -53
  254. package/example/components/BusinessesMapUI/index.js +57 -57
  255. package/example/components/CartUI/index.js +154 -154
  256. package/example/components/ChangeView/index.js +19 -19
  257. package/example/components/CheckoutUI/index.js +206 -206
  258. package/example/components/CmsContentUI/index.js +52 -52
  259. package/example/components/ConfigsExample/index.js +118 -118
  260. package/example/components/CouponControlUI/index.js +63 -63
  261. package/example/components/DriverTipsUI/index.js +58 -58
  262. package/example/components/FacebookLoginButtonUI/index.js +48 -48
  263. package/example/components/FloatingButtonUI/index.js +145 -145
  264. package/example/components/ForgotPasswordFormUI/index.js +93 -93
  265. package/example/components/GoogleLoginUI/index.js +30 -30
  266. package/example/components/GpsButtonUI/index.js +22 -22
  267. package/example/components/Header/index.js +18 -18
  268. package/example/components/LanguageSelectorUI/index.js +57 -57
  269. package/example/components/LanguagesExample/index.js +51 -51
  270. package/example/components/LoginFormUI/index.js +159 -159
  271. package/example/components/LogoutButtonUI/index.js +21 -21
  272. package/example/components/MainSearchUI/index.js +131 -131
  273. package/example/components/MenuControlUI/index.js +103 -103
  274. package/example/components/MessagesUI/index.js +162 -162
  275. package/example/components/ModalUI/index.js +36 -36
  276. package/example/components/ModalUI/style.css +5 -5
  277. package/example/components/MomentOptionUI/index.js +68 -68
  278. package/example/components/MyOrdersListUI/index.js +51 -51
  279. package/example/components/MyOrdersUI/index.js +52 -52
  280. package/example/components/OrderChangeUI/index.js +54 -54
  281. package/example/components/OrderDetailsUI/index.js +174 -174
  282. package/example/components/OrderReviewUI/index.js +125 -125
  283. package/example/components/OrderTypeControlUI/index.js +32 -32
  284. package/example/components/PaymentOptionCashUI/index.js +60 -60
  285. package/example/components/PaymentOptionPaypalUI/index.js +50 -50
  286. package/example/components/PaymentOptionStripeDirectUI/index.js +89 -89
  287. package/example/components/PaymentOptionStripeRedirectUI/index.js +97 -97
  288. package/example/components/PaymentOptionStripeUI/index.js +129 -129
  289. package/example/components/PaymentOptionsUI/index.js +169 -169
  290. package/example/components/PhoneAutocompleteUI/index.js +67 -67
  291. package/example/components/PhoneAutocompleteUI/styles.css +49 -49
  292. package/example/components/ProductComponentUI/index.js +113 -113
  293. package/example/components/ProductFormUI/index.js +131 -131
  294. package/example/components/ProductImagesUI/index.js +82 -82
  295. package/example/components/ProductIngredientUI/index.js +21 -21
  296. package/example/components/ProductOptionSuboptionUI/index.js +65 -65
  297. package/example/components/ProductOptionUI/index.js +31 -31
  298. package/example/components/ProductShareUI/index.js +48 -48
  299. package/example/components/ProductsListUI/index.js +108 -108
  300. package/example/components/ProductsListingUI/index.js +42 -42
  301. package/example/components/ResetPasswordUI/index.js +121 -121
  302. package/example/components/SearchOptionsUI/index.js +82 -82
  303. package/example/components/SignupFormUI/index.js +117 -117
  304. package/example/components/SingleBusinessCardUI/index.js +82 -82
  305. package/example/components/SingleOrderCardUI/index.js +52 -52
  306. package/example/components/SingleProductCardUI/index.js +47 -47
  307. package/example/components/StripeElementsFormUI/CardFormUI/index.js +51 -51
  308. package/example/components/StripeElementsFormUI/CardFormUI/style.css +118 -118
  309. package/example/components/StripeElementsFormUI/index.js +38 -38
  310. package/example/components/StripeRedirectFormUI/index.js +99 -99
  311. package/example/components/TestComponent/index.js +5 -5
  312. package/example/components/UpsellingPageUI/index.js +26 -26
  313. package/example/components/UserDetailsUI/index.js +94 -94
  314. package/example/components/UserProfileUI/index.js +156 -156
  315. package/example/views/ActiveOrders/index.js +86 -86
  316. package/example/views/AddressDetailsExample/index.js +57 -57
  317. package/example/views/AppleLoginExample/index.js +51 -51
  318. package/example/views/BaseComponentExample/index.js +35 -35
  319. package/example/views/BusinessBasicInformationExample/index.js +43 -43
  320. package/example/views/BusinessControllerExample/index.js +55 -55
  321. package/example/views/BusinessInformationExample/index.js +68 -68
  322. package/example/views/BusinessProductsCategoriesExample/index.js +50 -50
  323. package/example/views/BusinessProductsSearchExample/index.js +39 -39
  324. package/example/views/BusinessReviewsExample/index.js +43 -43
  325. package/example/views/BusinessSortControlExample/index.js +53 -53
  326. package/example/views/BusinessTypeFilterExample/index.js +53 -53
  327. package/example/views/BusinessesMapExample/index.js +57 -57
  328. package/example/views/CheckoutExample/index.js +143 -143
  329. package/example/views/CmsContentExample/index.js +44 -44
  330. package/example/views/DriverTipsExample/index.js +47 -47
  331. package/example/views/EventsExample/index.js +26 -26
  332. package/example/views/FacebookLogin/index.js +63 -63
  333. package/example/views/FloatingButtonExample/index.js +47 -47
  334. package/example/views/ForgotPassword/index.js +77 -77
  335. package/example/views/GoogleLoginExample/index.js +85 -85
  336. package/example/views/Home/index.js +200 -200
  337. package/example/views/LanguageSelectorExample/index.js +55 -55
  338. package/example/views/Login/index.js +84 -84
  339. package/example/views/MainSearchExample/index.js +43 -43
  340. package/example/views/MenuControlExample/index.js +68 -68
  341. package/example/views/MessagesExample/index.js +58 -58
  342. package/example/views/MomentOptionExample/index.js +52 -52
  343. package/example/views/MyOrdersExample/index.js +35 -35
  344. package/example/views/MyOrdersListExample/index.js +50 -50
  345. package/example/views/OrderChangeExample/index.js +46 -46
  346. package/example/views/OrderContextExample/index.js +139 -139
  347. package/example/views/OrderDetailsExample/index.js +50 -50
  348. package/example/views/OrderReviewExample/index.js +64 -64
  349. package/example/views/PaymentOptionCashExample/index.js +51 -51
  350. package/example/views/PaymentOptionPaypalExample/index.js +71 -71
  351. package/example/views/PaymentOptionStripeDirectExample/index.js +43 -43
  352. package/example/views/PaymentOptionStripeExample/index.js +47 -47
  353. package/example/views/PaymentOptionStripeRedirectExample/index.js +56 -56
  354. package/example/views/PaymentOptionsExample/index.js +47 -47
  355. package/example/views/PhoneAutocompleteExample/index.js +34 -34
  356. package/example/views/PlacesExample/index.js +94 -94
  357. package/example/views/PopupExample/index.js +78 -78
  358. package/example/views/PopupExample/style.css +18 -18
  359. package/example/views/ProductDetail/index.js +323 -323
  360. package/example/views/ProductImagesExample/index.js +43 -43
  361. package/example/views/ProductOptionExample/index.js +88 -88
  362. package/example/views/ProductShareExample/index.js +51 -51
  363. package/example/views/ProductsListExample/index.js +77 -77
  364. package/example/views/ProductsListingExample/index.js +47 -47
  365. package/example/views/ResetPasswordExample/index.js +60 -60
  366. package/example/views/SearchOptionsExample/index.js +42 -42
  367. package/example/views/SessionManager/index.js +122 -122
  368. package/example/views/Signup/index.js +64 -64
  369. package/example/views/UpsellingPageExample/index.js +35 -35
  370. package/example/views/UserDetailsExample/index.js +69 -69
  371. package/example/views/UserProfile/index.js +73 -73
  372. package/index-example.js +23 -23
  373. package/index.html +13 -13
  374. package/native/index.js +257 -257
  375. package/native/src/NativeStrategy/index.js +20 -20
  376. package/native/src/contexts/OrderingContext/index.js +85 -85
  377. package/package.json +92 -92
  378. package/src/components/AddressDetails/index.js +149 -149
  379. package/src/components/AddressForm/index.js +372 -372
  380. package/src/components/AddressList/index.js +254 -254
  381. package/src/components/Analitycs/index.js +119 -119
  382. package/src/components/AnalyticsSegment/index.js +145 -145
  383. package/src/components/AppleLogin/index.js +164 -164
  384. package/src/components/BaseComponent/index.js +52 -52
  385. package/src/components/BusinessAndProductList/index.js +986 -986
  386. package/src/components/BusinessBasicInformation/index.js +119 -119
  387. package/src/components/BusinessController/index.js +351 -351
  388. package/src/components/BusinessInformation/BusinessOption/index.js +86 -86
  389. package/src/components/BusinessInformation/index.js +93 -93
  390. package/src/components/BusinessList/index.js +670 -670
  391. package/src/components/BusinessMenuListing/index.js +99 -99
  392. package/src/components/BusinessProductsCategories/index.js +60 -60
  393. package/src/components/BusinessProductsSearch/index.js +54 -54
  394. package/src/components/BusinessReviews/index.js +187 -187
  395. package/src/components/BusinessSearchList/index.js +364 -363
  396. package/src/components/BusinessSortControl/index.js +100 -100
  397. package/src/components/BusinessTypeFilter/index.js +142 -142
  398. package/src/components/BusinessesMap/index.js +110 -110
  399. package/src/components/Cart/index.js +211 -211
  400. package/src/components/CartStoresListing/index.js +157 -157
  401. package/src/components/Checkout/index.js +636 -636
  402. package/src/components/CmsContent/index.js +97 -97
  403. package/src/components/Contacts/index.js +512 -512
  404. package/src/components/CouponControl/index.js +171 -171
  405. package/src/components/DragAndDrop/index.js +41 -41
  406. package/src/components/DriverList/index.js +112 -112
  407. package/src/components/DriverTips/index.js +141 -141
  408. package/src/components/Emitter/index.js +36 -36
  409. package/src/components/ExamineClick/index.js +40 -40
  410. package/src/components/FacebookLoginButton/index.js +214 -214
  411. package/src/components/FacebookPixel/index.js +148 -148
  412. package/src/components/FavoriteList/index.js +278 -278
  413. package/src/components/FirebaseGoogleLoginButton/index.js +93 -93
  414. package/src/components/FloatingButton/index.js +70 -70
  415. package/src/components/ForgotPasswordForm/index.js +180 -180
  416. package/src/components/GiftCard/GiftCardOrdersList/index.js +155 -155
  417. package/src/components/GiftCard/PurchaseGiftCard/index.js +127 -127
  418. package/src/components/GiftCard/RedeemGiftCard/index.js +77 -77
  419. package/src/components/GiftCard/SendGiftCard/index.js +83 -83
  420. package/src/components/GoogleAutocompleteInput/index.js +154 -154
  421. package/src/components/GoogleIdentity/index.js +144 -144
  422. package/src/components/GoogleLoginButton/index.js +276 -276
  423. package/src/components/GoogleMaps/index.js +499 -499
  424. package/src/components/GpsButton/index.js +127 -127
  425. package/src/components/LanguageSelector/index.js +163 -163
  426. package/src/components/LoginForm/index.js +527 -527
  427. package/src/components/LogoutAction/index.js +211 -211
  428. package/src/components/MainSearch/index.js +149 -149
  429. package/src/components/MapView/index.js +116 -116
  430. package/src/components/MenuControl/index.js +238 -238
  431. package/src/components/Messages/index.js +166 -166
  432. package/src/components/MomentOption/index.js +322 -322
  433. package/src/components/MultiCartCreate/index.js +70 -70
  434. package/src/components/MultiCartsPaymethodsAndWallets/index.js +201 -201
  435. package/src/components/MultiCheckout/index.js +378 -378
  436. package/src/components/MultiOrdersDetails/index.js +109 -109
  437. package/src/components/MyOrders/index.js +150 -150
  438. package/src/components/MyOrdersList/index.js +104 -104
  439. package/src/components/NewOrderNotification/index.js +30 -30
  440. package/src/components/OrderChange/index.js +128 -128
  441. package/src/components/OrderDetails/index.js +684 -684
  442. package/src/components/OrderList/index.js +814 -814
  443. package/src/components/OrderListGroups/index.js +1245 -1245
  444. package/src/components/OrderReview/index.js +180 -180
  445. package/src/components/OrderTypeControl/index.js +75 -75
  446. package/src/components/OrderVerticalList/index.js +422 -422
  447. package/src/components/OrdersControlFilters/index.js +75 -75
  448. package/src/components/OrdersDashboardComponents/Appointments/index.js +72 -72
  449. package/src/components/OrdersDashboardComponents/BusinessProductsListing/index.js +629 -629
  450. package/src/components/OrdersDashboardComponents/CheckPassword/index.js +177 -177
  451. package/src/components/OrdersDashboardComponents/CityList/index.js +98 -98
  452. package/src/components/OrdersDashboardComponents/CountryList/index.js +162 -162
  453. package/src/components/OrdersDashboardComponents/CustomOrderDetails/index.js +238 -238
  454. package/src/components/OrdersDashboardComponents/DashboardBusinessList/index.js +617 -617
  455. package/src/components/OrdersDashboardComponents/DashboardOrdersList/index.js +943 -943
  456. package/src/components/OrdersDashboardComponents/DriversList/index.js +448 -448
  457. package/src/components/OrdersDashboardComponents/ExportCSV/index.js +192 -192
  458. package/src/components/OrdersDashboardComponents/GiftCardsList/index.js +189 -189
  459. package/src/components/OrdersDashboardComponents/GoogleMapsApiKeySetting/index.js +77 -77
  460. package/src/components/OrdersDashboardComponents/LogisticInformation/index.js +97 -97
  461. package/src/components/OrdersDashboardComponents/Logistics/index.js +174 -174
  462. package/src/components/OrdersDashboardComponents/Messages/index.js +384 -384
  463. package/src/components/OrdersDashboardComponents/MetaFields/index.js +186 -186
  464. package/src/components/OrdersDashboardComponents/OrderDetails/index.js +404 -404
  465. package/src/components/OrdersDashboardComponents/OrderNotification/index.js +70 -70
  466. package/src/components/OrdersDashboardComponents/OrdersFilter/index.js +362 -362
  467. package/src/components/OrdersDashboardComponents/OrdersManage/index.js +873 -873
  468. package/src/components/OrdersDashboardComponents/PointsWalletLevels/index.js +123 -123
  469. package/src/components/OrdersDashboardComponents/ReviewCustomer/index.js +113 -113
  470. package/src/components/OrdersDashboardComponents/Schedule/index.js +315 -315
  471. package/src/components/OrdersDashboardComponents/SettingsList/index.js +298 -298
  472. package/src/components/OrdersDashboardComponents/UserFormDetails/index.js +463 -463
  473. package/src/components/OrdersDashboardComponents/UsersList/index.js +944 -944
  474. package/src/components/OrdersDashboardComponents/WebsocketStatus/index.js +77 -77
  475. package/src/components/OrdersDashboardComponents/index.js +57 -57
  476. package/src/components/PageBanner/index.js +107 -107
  477. package/src/components/PaymentOptionCash/index.js +74 -74
  478. package/src/components/PaymentOptionPaypal/index.js +146 -146
  479. package/src/components/PaymentOptionSquare/index.js +336 -336
  480. package/src/components/PaymentOptionStripe/index.js +289 -289
  481. package/src/components/PaymentOptionStripeDirect/index.js +116 -116
  482. package/src/components/PaymentOptionStripeRedirect/StripeRedirectForm/index.js +71 -71
  483. package/src/components/PaymentOptionStripeRedirect/index.js +122 -122
  484. package/src/components/PaymentOptionWallet/index.js +185 -185
  485. package/src/components/PaymentOptions/index.js +262 -262
  486. package/src/components/PaymethodList/index.js +119 -119
  487. package/src/components/PhoneAutocomplete/index.js +318 -318
  488. package/src/components/PlaceSpot/index.js +183 -183
  489. package/src/components/Popup/index.js +169 -169
  490. package/src/components/ProductComponent/index.js +269 -269
  491. package/src/components/ProductForm/index.js +1105 -1105
  492. package/src/components/ProductImages/index.js +64 -64
  493. package/src/components/ProductIngredient/index.js +72 -72
  494. package/src/components/ProductItemAccordion/index.js +72 -72
  495. package/src/components/ProductOption/index.js +42 -42
  496. package/src/components/ProductOptionSuboption/index.js +181 -181
  497. package/src/components/ProductShare/index.js +97 -97
  498. package/src/components/ProductsList/index.js +74 -74
  499. package/src/components/ProductsListing/index.js +166 -166
  500. package/src/components/ProfessionalInfo/index.js +156 -156
  501. package/src/components/PromotionsController/index.js +123 -123
  502. package/src/components/QueryLoginSpoonity/index.js +159 -159
  503. package/src/components/ReCaptcha/index.js +53 -53
  504. package/src/components/ResetPassword/index.js +111 -111
  505. package/src/components/ReviewCustomer/index.js +117 -117
  506. package/src/components/ReviewDriver/index.js +157 -157
  507. package/src/components/ReviewProduct/index.js +162 -162
  508. package/src/components/SearchOptions/index.js +69 -69
  509. package/src/components/Sessions/index.js +217 -217
  510. package/src/components/SignupForm/index.js +555 -555
  511. package/src/components/SingleBusinessCard/index.js +80 -80
  512. package/src/components/SingleOrderCard/index.js +160 -160
  513. package/src/components/SingleProductCard/index.js +130 -130
  514. package/src/components/SingleProfessionalCard/index.js +121 -121
  515. package/src/components/SmartAppBanner/index.js +71 -71
  516. package/src/components/StoreProductList/index.js +303 -303
  517. package/src/components/StripeElementsForm/CardForm/index.js +248 -248
  518. package/src/components/StripeElementsForm/index.js +78 -78
  519. package/src/components/UpsellingPage/index.js +120 -120
  520. package/src/components/UserFormDetails/index.js +742 -742
  521. package/src/components/UserVerification/index.js +242 -242
  522. package/src/components/WalletList/index.js +160 -160
  523. package/src/components/WebsocketStatus/index.js +80 -80
  524. package/src/components/WrapperGoogleMaps/index.js +67 -67
  525. package/src/constants/code-numbers.js +219 -219
  526. package/src/constants/timezones.js +427 -427
  527. package/src/contexts/ApiContext/index.js +59 -59
  528. package/src/contexts/BillingContext/index.js +28 -28
  529. package/src/contexts/BusinessContext/index.js +71 -71
  530. package/src/contexts/ConfigContext/index.js +217 -217
  531. package/src/contexts/CustomerContext/index.js +69 -69
  532. package/src/contexts/EventContext/index.js +31 -31
  533. package/src/contexts/LanguageContext/index.js +144 -144
  534. package/src/contexts/OptimizationLoadContext/index.js +95 -95
  535. package/src/contexts/OrderContext/index.js +1450 -1450
  536. package/src/contexts/OrderingContext/index.js +86 -86
  537. package/src/contexts/OrderingThemeContext/index.js +107 -107
  538. package/src/contexts/ProductContext/index.js +62 -62
  539. package/src/contexts/SessionContext/index.js +172 -172
  540. package/src/contexts/SiteContext/index.js +79 -79
  541. package/src/contexts/ToastContext/index.js +42 -42
  542. package/src/contexts/UtilsContext/index.js +352 -352
  543. package/src/contexts/ValidationsFieldsContext/index.js +65 -65
  544. package/src/contexts/WebsocketContext/index.js +91 -91
  545. package/src/contexts/WebsocketContext/socket.js +92 -92
  546. package/src/index.js +371 -371
  547. package/src/utils/index.js +32 -32
  548. package/src/webStrategy/index.js +18 -18
  549. package/webpack.dev.js +41 -41
  550. package/webpack.prod.js +64 -64
  551. package/_bundles/0.ordering-component.42ec5fef3ccdf425c509.js +0 -1
  552. package/_bundles/7.ordering-component.42ec5fef3ccdf425c509.js +0 -2
  553. package/_bundles/7.ordering-component.42ec5fef3ccdf425c509.js.LICENSE.txt +0 -1
  554. package/_bundles/ordering-component.42ec5fef3ccdf425c509.js +0 -2
@@ -1,873 +1,873 @@
1
- import React, { useEffect, useState } from 'react'
2
- import PropTypes from 'prop-types'
3
- import { useSession } from '../../../contexts/SessionContext'
4
- import { useApi } from '../../../contexts/ApiContext'
5
- import { useWebsocket } from '../../../contexts/WebsocketContext'
6
- import { useConfig } from '../../../contexts/ConfigContext'
7
- import { useLanguage } from '../../../contexts/LanguageContext'
8
- import { useToast, ToastType } from '../../../contexts/ToastContext'
9
-
10
- export const OrdersManage = (props) => {
11
- const {
12
- UIComponent,
13
- statusGroup,
14
- driversPropsToFetch,
15
- driverId,
16
- customerId,
17
- businessId,
18
- franchiseId,
19
- isOnlyDelivery
20
- } = props
21
-
22
- const [ordering] = useApi()
23
- const socket = useWebsocket()
24
- const [{ user, token, loading }] = useSession()
25
- const [configState] = useConfig()
26
- const [, t] = useLanguage()
27
- const [, { showToast }] = useToast()
28
-
29
- const requestsState = {}
30
- const orderStatuesList = {
31
- pending: [0, 13],
32
- inProgress: [7, 8, 4, 9, 3, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
33
- completed: [1, 11, 15],
34
- cancelled: [2, 5, 6, 10, 12, 16, 17]
35
- }
36
-
37
- const [searchValue, setSearchValue] = useState(null)
38
- const [ordersStatusGroup, setOrdersStatusGroup] = useState(statusGroup || 'pending')
39
- const [filterValues, setFilterValues] = useState({})
40
- const [timeStatus, setTimeStatus] = useState(null)
41
- const [updateStatus, setUpdateStatus] = useState(null)
42
- const [startMulitOrderStatusChange, setStartMulitOrderStatusChange] = useState(false)
43
- const [actionStatus, setActionStatus] = useState({ loading: false, error: null })
44
- const [deletedOrderIds, setDeletedOrderIds] = useState([])
45
- const [numberOfOrdersByStatus, setNumberOfOrdersByStatus] = useState({ result: null, loading: false, error: false })
46
- const allowColumnsModel = {
47
- slaBar: { visable: false, title: '', className: '', draggable: false, colSpan: 1, order: -2 },
48
- orderNumber: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: -1 },
49
- dateTime: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: 0 },
50
- externalId: { visable: false, title: t('EXTERNAL_ID', 'External id'), className: 'externalId', draggable: true, colSpan: 1, order: 1 },
51
- status: { visable: true, title: t('STATUS', 'Status'), className: 'statusInfo', draggable: true, colSpan: 1, order: 2 },
52
- agent: { visable: false, title: t('AGENT', 'Agent'), className: 'agent', draggable: true, colSpan: 1, order: 3 },
53
- cartGroupId: { visable: true, title: t('GROUP_ORDER', 'Group Order'), className: 'groupOrderId', draggable: true, colSpan: 1, order: 4 },
54
- driverGroupId: { visable: true, title: t('EXPORT_DRIVER_GROUP_ID', 'Driver Group Id'), className: 'driverGroupId', draggable: true, colSpan: 1, order: 5 },
55
- business: { visable: true, title: t('BUSINESS', 'Business'), className: 'businessInfo', draggable: true, colSpan: 1, order: 6 },
56
- customer: { visable: true, title: t('CUSTOMER', 'Customer'), className: 'customerInfo', draggable: true, colSpan: 1, order: 7 },
57
- driver: { visable: true, title: t('DRIVER', 'Driver'), className: 'driverInfo', draggable: true, colSpan: 1, order: 8 },
58
- advanced: { visable: true, title: t('ADVANCED_LOGISTICS', 'Advanced logistics'), className: 'advanced', draggable: true, colSpan: 3, order: 9 },
59
- timer: { visable: false, title: t('SLA_TIMER', 'SLA’s timer'), className: 'timer', draggable: true, colSpan: 1, order: 10 },
60
- eta: { visable: true, title: t('ETA', 'ETA'), className: 'eta', draggable: true, colSpan: 1, order: 11 },
61
- total: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: 12 }
62
- }
63
- const [allowColumns, setAllowColumns] = useState(allowColumnsModel)
64
-
65
- /**
66
- * Object to save driver group list
67
- */
68
- const [driverGroupList, setDriverGroupList] = useState({ groups: [], loading: false, error: null })
69
- /**
70
- * Object to save drivers
71
- */
72
- const [driversList, setDriversList] = useState({ drivers: [], loading: true, error: null })
73
- /**
74
- * Object to save paymethods
75
- */
76
- const [paymethodsList, setPaymethodsList] = useState({ paymethods: [], loading: true, error: null })
77
- /**
78
- * Object to save businesses
79
- */
80
- const [businessesList, setBusinessesList] = useState({ businesses: [], loading: true, error: null })
81
- /**
82
- * Array to save the cities
83
- */
84
- const [citiesList, setCitiesList] = useState([])
85
-
86
- /**
87
- * Object to save selected order ids
88
- */
89
- const [selectedOrderIds, setSelectedOrderIds] = useState([])
90
- /**
91
- * Object to save order substatuses
92
- */
93
- const [selectedSubOrderStatus, setSelectedSubOrderStatus] = useState({
94
- pending: orderStatuesList.pending,
95
- inProgress: orderStatuesList.inProgress,
96
- completed: orderStatuesList.completed,
97
- cancelled: orderStatuesList.cancelled,
98
- all: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
99
- })
100
-
101
- /**
102
- * Save ids of orders selected
103
- * @param {string} orderId order id
104
- */
105
- const handleSelectedOrderIds = (orderId) => {
106
- let _ids = [...selectedOrderIds]
107
- if (!_ids.includes(orderId)) {
108
- _ids.push(orderId)
109
- } else {
110
- _ids = _ids.filter((_id) => _id !== orderId)
111
- }
112
- setSelectedOrderIds(_ids)
113
- }
114
- /**
115
- * Remove id of order updated or delected
116
- * @param {string} orderId order id
117
- */
118
- const handleRemoveSelectedOrderId = (orderId) => {
119
- let _ids = [...selectedOrderIds]
120
- _ids = _ids.filter((_id) => _id !== orderId)
121
- setSelectedOrderIds(_ids)
122
- }
123
-
124
- /**
125
- * Change orders filter by statuses selected
126
- * @param {string} ordersStatusGroup orders status
127
- */
128
- const handleOrdersStatusGroupFilter = (statusGroup) => {
129
- if (statusGroup === ordersStatusGroup) return
130
- setOrdersStatusGroup(statusGroup)
131
- setSelectedOrderIds([])
132
- }
133
- /**
134
- * Change text to search
135
- * @param {string} search Search value
136
- */
137
- const handleChangeSearch = (search) => {
138
- setSearchValue(search)
139
- }
140
- /**
141
- * Save filter type values
142
- * @param {object} types
143
- */
144
- const handleChangeFilterValues = (types) => {
145
- setFilterValues(types)
146
- }
147
-
148
- /**
149
- * save status for multi orders selected
150
- * @param {number} status order status
151
- */
152
- const handleChangeMultiOrdersStatus = (status) => {
153
- setUpdateStatus(status)
154
- setStartMulitOrderStatusChange(true)
155
- }
156
- /**
157
- * Method to change multi orders status from API
158
- */
159
- const handleChangeMultiOrderStatus = async (orderId) => {
160
- try {
161
- setActionStatus({ ...actionStatus, loading: true })
162
- const requestOptions = {
163
- method: 'PUT',
164
- headers: {
165
- 'Content-Type': 'application/json',
166
- Authorization: `Bearer ${token}`
167
- },
168
- body: JSON.stringify({ status: updateStatus })
169
- }
170
- const response = await fetch(`${ordering.root}/orders/${orderId}`, requestOptions)
171
- const { result, error } = await response.json()
172
-
173
- if (parseInt(result.status) === updateStatus) {
174
- const _ordersIds = [...selectedOrderIds]
175
- _ordersIds.shift()
176
- if (_ordersIds.length === 0) {
177
- setStartMulitOrderStatusChange(false)
178
- }
179
- setSelectedOrderIds(_ordersIds)
180
- }
181
- setActionStatus({
182
- loading: false,
183
- error: error ? result : null
184
- })
185
- } catch (err) {
186
- setActionStatus({ loading: false, error: [err.message] })
187
- setStartMulitOrderStatusChange(false)
188
- }
189
- }
190
-
191
- /**
192
- * Delete orders for orders selected
193
- */
194
- const handleDeleteMultiOrders = async (code) => {
195
- try {
196
- showToast(ToastType.Info, t('LOADING', 'Loading'))
197
- setActionStatus({ ...actionStatus, loading: true })
198
-
199
- const payload = {
200
- orders_id: selectedOrderIds
201
- }
202
- if (code) {
203
- payload.deleted_action_code = code
204
- }
205
- const requestOptions = {
206
- method: 'DELETE',
207
- headers: {
208
- 'Content-Type': 'application/json',
209
- Authorization: `Bearer ${token}`
210
- },
211
- body: JSON.stringify(payload)
212
- }
213
- const response = await fetch(`${ordering.root}/orders`, requestOptions)
214
- const content = await response.json()
215
- if (!content.error) {
216
- setDeletedOrderIds(selectedOrderIds)
217
- setSelectedOrderIds([])
218
- showToast(ToastType.Success, t('ORDERS_DELETED', 'Orders deleted'))
219
- } else {
220
- setActionStatus({
221
- loading: true,
222
- error: content.result
223
- })
224
- }
225
- } catch (error) {
226
- setActionStatus({ loading: false, error: [error.message] })
227
- }
228
- }
229
-
230
- /**
231
- * Method to get drivers from API
232
- */
233
- const getDrivers = async () => {
234
- try {
235
- const source = {}
236
- requestsState.drivers = source
237
-
238
- const { content: { result } } = await ordering
239
- .setAccessToken(token)
240
- .users()
241
- .select(driversPropsToFetch)
242
- .where([{ attribute: 'level', value: [4] }])
243
- .get({ cancelToken: source })
244
-
245
- setDriversList({
246
- ...driversList,
247
- loading: false,
248
- drivers: result
249
- })
250
- } catch (err) {
251
- setDriversList({
252
- ...driversList,
253
- loading: false,
254
- error: err.message
255
- })
256
- }
257
- }
258
-
259
- const getControlsOrders = async () => {
260
- try {
261
- setActionStatus({ ...actionStatus, loading: true })
262
- const requestOptions = {
263
- method: 'GET',
264
- headers: {
265
- 'Content-Type': 'application/json',
266
- Authorization: `Bearer ${token}`
267
- }
268
- }
269
- const response = await fetch(`${ordering.root}/controls/orders`, requestOptions)
270
- const content = await response.json()
271
- if (!content.error) {
272
- setCitiesList(content.result.cities)
273
- setDriverGroupList({
274
- ...driverGroupList,
275
- loading: false,
276
- groups: content.result.driver_groups
277
- })
278
- setPaymethodsList({
279
- ...paymethodsList,
280
- loading: false,
281
- paymethods: content.result.paymethods
282
- })
283
- setBusinessesList({
284
- ...businessesList,
285
- loading: false,
286
- businesses: content.result.businesses
287
- })
288
- setActionStatus({ ...actionStatus, loading: false })
289
- } else {
290
- setActionStatus({ loading: false, error: content?.result })
291
- }
292
- } catch (err) {
293
- setActionStatus({ loading: false, error: [err.message] })
294
- }
295
- }
296
-
297
- /**
298
- * Listening driver change
299
- */
300
- useEffect(() => {
301
- if (loading) return
302
- const handleUpdateDriver = (driver) => {
303
- const found = driversList.drivers.find(_driver => _driver.id === driver.id)
304
- let _drivers = []
305
- if (found) {
306
- _drivers = driversList.drivers.filter(_driver => {
307
- if (_driver.id === driver.id) {
308
- Object.assign(_driver, driver)
309
- }
310
- return true
311
- })
312
- } else {
313
- _drivers = [...driversList.drivers, driver]
314
- }
315
- setDriversList({
316
- ...driversList,
317
- drivers: _drivers
318
- })
319
- }
320
- const handleTrackingDriver = (trackingData) => {
321
- let drivers = []
322
- drivers = driversList.drivers.filter(_driver => {
323
- if (_driver.id === trackingData.driver_id) {
324
- if (typeof trackingData.location === 'string') {
325
- const trackingLocation = trackingData.location
326
- const _location = trackingLocation.replaceAll('\\', '')
327
- const location = JSON.parse(_location)
328
- _driver.location = location
329
- } else {
330
- _driver.location = trackingData.location
331
- }
332
- }
333
- return true
334
- })
335
- setDriversList({ ...driversList, drivers: drivers })
336
- }
337
- socket.on('drivers_update', handleUpdateDriver)
338
- socket.on('tracking_driver', handleTrackingDriver)
339
- return () => {
340
- socket.off('drivers_update', handleUpdateDriver)
341
- socket.off('tracking_driver', handleTrackingDriver)
342
- }
343
- }, [socket, loading, driversList.drivers])
344
-
345
- const getOrderNumbersByStatus = async () => {
346
- let where = []
347
- const conditions = []
348
- conditions.push({
349
- attribute: 'products',
350
- conditions: [{
351
- attribute: 'type',
352
- value: {
353
- condition: '=',
354
- value: 'item'
355
- }
356
- }]
357
- })
358
- if (Object.keys(filterValues).length > 0) {
359
- const filterConditons = []
360
- if (filterValues?.statuses.length > 0) {
361
- filterConditons.push({ attribute: 'status', value: filterValues?.statuses })
362
- }
363
-
364
- if (filterValues?.orderId) {
365
- filterConditons.push(
366
- {
367
- attribute: 'id',
368
- value: {
369
- condition: 'ilike',
370
- value: encodeURI(`%${filterValues?.orderId}%`)
371
- }
372
- }
373
- )
374
- }
375
- if (filterValues?.externalId) {
376
- filterConditons.push(
377
- {
378
- attribute: 'external_id',
379
- value: {
380
- condition: 'ilike',
381
- value: encodeURI(`%${filterValues?.externalId}%`)
382
- }
383
- }
384
- )
385
- }
386
- if (filterValues?.metafield?.length > 0) {
387
- const metafieldConditions = filterValues?.metafield.map(item => (
388
- {
389
- attribute: 'metafields',
390
- conditions: [
391
- {
392
- attribute: 'key',
393
- value: item?.key
394
- },
395
- {
396
- attribute: 'value',
397
- value: {
398
- condition: 'ilike',
399
- value: encodeURI(`%${item?.value}%`)
400
- }
401
- }
402
- ],
403
- conector: 'AND'
404
- }
405
- ))
406
- filterConditons.push({
407
- conector: 'OR',
408
- conditions: metafieldConditions
409
- })
410
- }
411
- if (filterValues?.deliveryFromDatetime !== null) {
412
- filterConditons.push(
413
- {
414
- attribute: 'delivery_datetime',
415
- value: {
416
- condition: '>=',
417
- value: encodeURI(filterValues?.deliveryFromDatetime)
418
- }
419
- }
420
- )
421
- }
422
- if (filterValues?.deliveryEndDatetime !== null) {
423
- filterConditons.push(
424
- {
425
- attribute: 'delivery_datetime',
426
- value: {
427
- condition: '<=',
428
- value: filterValues?.deliveryEndDatetime
429
- }
430
- }
431
- )
432
- }
433
- if (filterValues?.businessIds.length !== 0) {
434
- filterConditons.push(
435
- {
436
- attribute: 'business_id',
437
- value: filterValues?.businessIds
438
- }
439
- )
440
- }
441
- if (filterValues?.countryCode.length !== 0) {
442
- filterConditons.push(
443
- {
444
- attribute: 'country_code',
445
- value: filterValues?.countryCode
446
- }
447
- )
448
- }
449
- if (filterValues?.currency.length !== 0) {
450
- filterConditons.push(
451
- {
452
- attribute: 'currency',
453
- value: filterValues?.currency
454
- }
455
- )
456
- }
457
- if (filterValues?.driverIds.length > 0) {
458
- filterConditons.push(
459
- {
460
- attribute: 'driver_id',
461
- value: filterValues?.driverIds
462
- }
463
- )
464
- }
465
- if (filterValues?.deliveryTypes.length !== 0) {
466
- filterConditons.push(
467
- {
468
- attribute: 'delivery_type',
469
- value: filterValues?.deliveryTypes
470
- }
471
- )
472
- }
473
- if (filterValues?.cityIds.length !== 0) {
474
- filterConditons.push(
475
- {
476
- attribute: 'business',
477
- conditions: [
478
- {
479
- attribute: 'city_id',
480
- value: filterValues?.cityIds
481
- }
482
- ]
483
- }
484
- )
485
- }
486
- if (filterValues?.driverGroupIds.length !== 0) {
487
- filterConditons.push(
488
- {
489
- attribute: 'driver_id',
490
- value: filterValues?.driverGroupIds
491
- }
492
- )
493
- }
494
- if (filterValues?.paymethodIds.length !== 0) {
495
- filterConditons.push(
496
- {
497
- attribute: 'paymethod_id',
498
- value: filterValues?.paymethodIds
499
- }
500
- )
501
- }
502
-
503
- if (filterConditons.length) {
504
- conditions.push({
505
- conector: 'AND',
506
- conditions: filterConditons
507
- })
508
- }
509
- }
510
-
511
- const additionalConditions = []
512
-
513
- if (isOnlyDelivery) {
514
- additionalConditions.push({
515
- attribute: 'delivery_type',
516
- value: 1
517
- })
518
- }
519
-
520
- if (driverId) {
521
- additionalConditions.push({
522
- attribute: 'driver_id',
523
- value: driverId
524
- })
525
- }
526
- if (customerId) {
527
- additionalConditions.push({
528
- attribute: 'customer_id',
529
- value: customerId
530
- })
531
- }
532
- if (businessId) {
533
- additionalConditions.push({
534
- attribute: 'business_id',
535
- value: businessId
536
- })
537
- }
538
- if (franchiseId) {
539
- conditions.push({
540
- attribute: 'ref_business',
541
- conditions: [{
542
- attribute: 'franchise_id',
543
- value: franchiseId
544
- }]
545
- })
546
- }
547
- if (timeStatus) {
548
- additionalConditions.push(
549
- {
550
- attribute: 'time_status',
551
- value: timeStatus
552
- }
553
- )
554
- }
555
- if (additionalConditions.length) {
556
- conditions.push({
557
- conector: 'AND',
558
- conditions: additionalConditions
559
- })
560
- }
561
-
562
- if (searchValue) {
563
- const searchConditions = []
564
- searchConditions.push(
565
- {
566
- attribute: 'id',
567
- value: {
568
- condition: 'ilike',
569
- value: encodeURI(`%${searchValue}%`)
570
- }
571
- }
572
- )
573
-
574
- searchConditions.push(
575
- {
576
- attribute: 'customer',
577
- conditions: [
578
- {
579
- attribute: 'email',
580
- value: {
581
- condition: 'ilike',
582
- value: encodeURI(`%${searchValue}%`)
583
- }
584
- }
585
- ]
586
- }
587
- )
588
-
589
- searchConditions.push(
590
- {
591
- attribute: 'customer',
592
- conditions: [
593
- {
594
- attribute: 'cellphone',
595
- value: {
596
- condition: 'ilike',
597
- value: encodeURI(`%${searchValue}%`)
598
- }
599
- }
600
- ]
601
- }
602
- )
603
-
604
- searchConditions.push(
605
- {
606
- attribute: 'business',
607
- conditions: [
608
- {
609
- attribute: 'name',
610
- value: {
611
- condition: 'ilike',
612
- value: encodeURI(`%${searchValue}%`)
613
- }
614
- }
615
- ]
616
- }
617
- )
618
-
619
- searchConditions.push(
620
- {
621
- attribute: 'driver',
622
- conditions: [
623
- {
624
- attribute: 'name',
625
- value: {
626
- condition: 'ilike',
627
- value: encodeURI(`%${searchValue}%`)
628
- }
629
- }
630
- ]
631
- }
632
- )
633
-
634
- conditions.push({
635
- conector: 'OR',
636
- conditions: searchConditions
637
- })
638
- }
639
-
640
- if (conditions.length) {
641
- where = {
642
- conditions,
643
- conector: 'AND'
644
- }
645
- }
646
- try {
647
- setNumberOfOrdersByStatus({ ...numberOfOrdersByStatus, loading: true })
648
- const requestOptions = {
649
- method: 'GET',
650
- headers: {
651
- 'Content-Type': 'application/json',
652
- Authorization: `Bearer ${token}`
653
- }
654
- }
655
- const response = await fetch(`${ordering.root}/orders/dashboard?v=2&where=${JSON.stringify(where)}`, requestOptions)
656
- const content = await response.json()
657
- if (!content?.error) {
658
- const _orderStatusNumbers = Object.keys(orderStatuesList).reduce((sum, curr, index) => {
659
- const _currRe = content?.result.filter(ele => orderStatuesList[curr].indexOf(ele?.status) >= 0)
660
- if (index === 1) {
661
- const _sumRe = content?.result.filter(ele => orderStatuesList[sum].indexOf(ele?.status) >= 0)
662
- return {
663
- [sum]: _sumRe.length > 1 ? _sumRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _sumRe[0]?.quantity || 0,
664
- [curr]: _currRe.length > 1 ? _currRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _currRe[0]?.quantity || 0
665
- }
666
- } else {
667
- return { ...sum, [curr]: _currRe.length > 1 ? _currRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _currRe[0]?.quantity || 0 }
668
- }
669
- })
670
-
671
- setNumberOfOrdersByStatus({
672
- ...numberOfOrdersByStatus,
673
- loading: false,
674
- error: false,
675
- result: _orderStatusNumbers
676
- })
677
- } else {
678
- setNumberOfOrdersByStatus({
679
- ...numberOfOrdersByStatus,
680
- loading: false,
681
- error: true
682
- })
683
- }
684
- } catch (err) {
685
- setNumberOfOrdersByStatus({
686
- ...numberOfOrdersByStatus,
687
- loading: false,
688
- error: [err.message]
689
- })
690
- }
691
- }
692
-
693
- const handleNewOrder = (order) => {
694
- if (customerId && order?.customer_id !== customerId) return
695
- if (!numberOfOrdersByStatus.result) return
696
- const _orderStatusNumbers = numberOfOrdersByStatus.result
697
- _orderStatusNumbers.pending += 1
698
- setNumberOfOrdersByStatus({
699
- ...numberOfOrdersByStatus,
700
- loading: false,
701
- error: false,
702
- result: _orderStatusNumbers
703
- })
704
- }
705
-
706
- const handleUpdateOrder = (order) => {
707
- if (!order?.history) return
708
- if (customerId && order?.customer_id !== customerId) return
709
- const length = order.history.length
710
- const lastHistoryData = order?.history[length - 1].data
711
- const statusChange = lastHistoryData?.find(({ attribute }) => (attribute === 'status'))
712
- if (statusChange && numberOfOrdersByStatus.result) {
713
- const from = statusChange.old
714
- const to = statusChange.new
715
- const _orderStatusNumbers = numberOfOrdersByStatus.result
716
- let fromTab = null
717
- let toTab = null
718
-
719
- Object.values(orderStatuesList).map((statusTabs, key) => {
720
- if (statusTabs.includes(from)) {
721
- fromTab = Object.keys(orderStatuesList)[key]
722
- if (_orderStatusNumbers[fromTab] > 0) {
723
- _orderStatusNumbers[fromTab] -= 1
724
- }
725
- }
726
- if (statusTabs.includes(to)) {
727
- toTab = Object.keys(orderStatuesList)[key]
728
- _orderStatusNumbers[toTab] += 1
729
- }
730
- })
731
- setNumberOfOrdersByStatus({
732
- ...numberOfOrdersByStatus,
733
- loading: false,
734
- error: false,
735
- result: _orderStatusNumbers
736
- })
737
- }
738
- }
739
-
740
- useEffect(() => {
741
- socket.on('update_order', handleUpdateOrder)
742
- socket.on('orders_register', handleNewOrder)
743
- return () => {
744
- socket.off('update_order', handleUpdateOrder)
745
- socket.off('orders_register', handleNewOrder)
746
- }
747
- }, [socket, filterValues, searchValue, JSON.stringify(numberOfOrdersByStatus)])
748
-
749
- /**
750
- * Listening multi orders action start to change status
751
- */
752
- useEffect(() => {
753
- if (!startMulitOrderStatusChange || selectedOrderIds.length === 0) return
754
- handleChangeMultiOrderStatus(selectedOrderIds[0])
755
- }, [selectedOrderIds, startMulitOrderStatusChange])
756
-
757
- useEffect(() => {
758
- if (loading) return
759
- if (user?.level === 0 || user?.level === 2 || user?.level === 5) {
760
- getDrivers()
761
- }
762
- getControlsOrders()
763
-
764
- return () => {
765
- if (requestsState.drivers) {
766
- requestsState.drivers.cancel()
767
- }
768
- }
769
- }, [user, loading])
770
-
771
- useEffect(() => {
772
- getOrderNumbersByStatus()
773
- }, [filterValues, searchValue, driverId, customerId, businessId, timeStatus])
774
-
775
- useEffect(() => {
776
- if (!user.id || configState?.loading) return
777
- const getUser = async () => {
778
- try {
779
- const response = await ordering.users(user.id).select(['settings']).get()
780
- const { content: { error, result } } = response
781
- if (!error && result.settings?.orderColumns) {
782
- setAllowColumns(result.settings?.orderColumns)
783
- return
784
- }
785
-
786
- setAllowColumns({
787
- ...allowColumnsModel,
788
- slaBar: { ...allowColumnsModel?.slaBar, visable: configState?.configs?.order_deadlines_enabled?.value === '1' },
789
- timer: { ...allowColumnsModel?.timer, visable: configState?.configs?.order_deadlines_enabled?.value === '1' }
790
- })
791
- } catch (err) {
792
- setAllowColumns({
793
- ...allowColumnsModel,
794
- slaBar: { ...allowColumnsModel?.slaBar, visable: configState?.configs?.order_deadlines_enabled?.value === '1' },
795
- timer: { ...allowColumnsModel?.timer, visable: configState?.configs?.order_deadlines_enabled?.value === '1' }
796
- })
797
- }
798
- }
799
- getUser()
800
- }, [user, configState])
801
-
802
- return (
803
- <>
804
- {UIComponent && (
805
- <UIComponent
806
- {...props}
807
- searchValue={searchValue}
808
- driverGroupList={driverGroupList}
809
- driversList={driversList}
810
- paymethodsList={paymethodsList}
811
- businessesList={businessesList}
812
- citiesList={citiesList}
813
- ordersStatusGroup={ordersStatusGroup}
814
- filterValues={filterValues}
815
- multiOrderUpdateStatus={updateStatus}
816
- selectedOrderIds={selectedOrderIds}
817
- deletedOrderIds={deletedOrderIds}
818
- startMulitOrderStatusChange={startMulitOrderStatusChange}
819
- selectedSubOrderStatus={selectedSubOrderStatus}
820
- handleSelectedSubOrderStatus={setSelectedSubOrderStatus}
821
- handleSelectedOrderIds={handleSelectedOrderIds}
822
- handleRemoveSelectedOrderId={handleRemoveSelectedOrderId}
823
- handleChangeSearch={handleChangeSearch}
824
- handleChangeFilterValues={handleChangeFilterValues}
825
- handleOrdersStatusGroupFilter={handleOrdersStatusGroupFilter}
826
- handleChangeMultiOrdersStatus={handleChangeMultiOrdersStatus}
827
- handleDeleteMultiOrders={handleDeleteMultiOrders}
828
- setSelectedOrderIds={setSelectedOrderIds}
829
- numberOfOrdersByStatus={numberOfOrdersByStatus}
830
- allowColumns={allowColumns}
831
- setAllowColumns={setAllowColumns}
832
- timeStatus={timeStatus}
833
- setTimeStatus={setTimeStatus}
834
- />
835
- )}
836
- </>
837
- )
838
- }
839
-
840
- OrdersManage.propTypes = {
841
- /**
842
- * UI Component, this must be containt all graphic elements and use parent props
843
- */
844
- UIComponent: PropTypes.elementType,
845
- /**
846
- * Components types before my orders
847
- * Array of type components, the parent props will pass to these components
848
- */
849
- beforeComponents: PropTypes.arrayOf(PropTypes.elementType),
850
- /**
851
- * Components types after my orders
852
- * Array of type components, the parent props will pass to these components
853
- */
854
- afterComponents: PropTypes.arrayOf(PropTypes.elementType),
855
- /**
856
- * Elements before my orders
857
- * Array of HTML/Components elements, these components will not get the parent props
858
- */
859
- beforeElements: PropTypes.arrayOf(PropTypes.element),
860
- /**
861
- * Elements after my orders
862
- * Array of HTML/Components elements, these components will not get the parent props
863
- */
864
- afterElements: PropTypes.arrayOf(PropTypes.element)
865
- }
866
-
867
- OrdersManage.defaultProps = {
868
- driversPropsToFetch: ['id', 'name', 'lastname', 'assigned_orders_count', 'available', 'phone', 'cellphone', 'location', 'photo', 'qualification', 'last_order_assigned_at'],
869
- beforeComponents: [],
870
- afterComponents: [],
871
- beforeElements: [],
872
- afterElements: []
873
- }
1
+ import React, { useEffect, useState } from 'react'
2
+ import PropTypes from 'prop-types'
3
+ import { useSession } from '../../../contexts/SessionContext'
4
+ import { useApi } from '../../../contexts/ApiContext'
5
+ import { useWebsocket } from '../../../contexts/WebsocketContext'
6
+ import { useConfig } from '../../../contexts/ConfigContext'
7
+ import { useLanguage } from '../../../contexts/LanguageContext'
8
+ import { useToast, ToastType } from '../../../contexts/ToastContext'
9
+
10
+ export const OrdersManage = (props) => {
11
+ const {
12
+ UIComponent,
13
+ statusGroup,
14
+ driversPropsToFetch,
15
+ driverId,
16
+ customerId,
17
+ businessId,
18
+ franchiseId,
19
+ isOnlyDelivery
20
+ } = props
21
+
22
+ const [ordering] = useApi()
23
+ const socket = useWebsocket()
24
+ const [{ user, token, loading }] = useSession()
25
+ const [configState] = useConfig()
26
+ const [, t] = useLanguage()
27
+ const [, { showToast }] = useToast()
28
+
29
+ const requestsState = {}
30
+ const orderStatuesList = {
31
+ pending: [0, 13],
32
+ inProgress: [7, 8, 4, 9, 3, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26],
33
+ completed: [1, 11, 15],
34
+ cancelled: [2, 5, 6, 10, 12, 16, 17]
35
+ }
36
+
37
+ const [searchValue, setSearchValue] = useState(null)
38
+ const [ordersStatusGroup, setOrdersStatusGroup] = useState(statusGroup || 'pending')
39
+ const [filterValues, setFilterValues] = useState({})
40
+ const [timeStatus, setTimeStatus] = useState(null)
41
+ const [updateStatus, setUpdateStatus] = useState(null)
42
+ const [startMulitOrderStatusChange, setStartMulitOrderStatusChange] = useState(false)
43
+ const [actionStatus, setActionStatus] = useState({ loading: false, error: null })
44
+ const [deletedOrderIds, setDeletedOrderIds] = useState([])
45
+ const [numberOfOrdersByStatus, setNumberOfOrdersByStatus] = useState({ result: null, loading: false, error: false })
46
+ const allowColumnsModel = {
47
+ slaBar: { visable: false, title: '', className: '', draggable: false, colSpan: 1, order: -2 },
48
+ orderNumber: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: -1 },
49
+ dateTime: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: 0 },
50
+ externalId: { visable: false, title: t('EXTERNAL_ID', 'External id'), className: 'externalId', draggable: true, colSpan: 1, order: 1 },
51
+ status: { visable: true, title: t('STATUS', 'Status'), className: 'statusInfo', draggable: true, colSpan: 1, order: 2 },
52
+ agent: { visable: false, title: t('AGENT', 'Agent'), className: 'agent', draggable: true, colSpan: 1, order: 3 },
53
+ cartGroupId: { visable: true, title: t('GROUP_ORDER', 'Group Order'), className: 'groupOrderId', draggable: true, colSpan: 1, order: 4 },
54
+ driverGroupId: { visable: true, title: t('EXPORT_DRIVER_GROUP_ID', 'Driver Group Id'), className: 'driverGroupId', draggable: true, colSpan: 1, order: 5 },
55
+ business: { visable: true, title: t('BUSINESS', 'Business'), className: 'businessInfo', draggable: true, colSpan: 1, order: 6 },
56
+ customer: { visable: true, title: t('CUSTOMER', 'Customer'), className: 'customerInfo', draggable: true, colSpan: 1, order: 7 },
57
+ driver: { visable: true, title: t('DRIVER', 'Driver'), className: 'driverInfo', draggable: true, colSpan: 1, order: 8 },
58
+ advanced: { visable: true, title: t('ADVANCED_LOGISTICS', 'Advanced logistics'), className: 'advanced', draggable: true, colSpan: 3, order: 9 },
59
+ timer: { visable: false, title: t('SLA_TIMER', 'SLA’s timer'), className: 'timer', draggable: true, colSpan: 1, order: 10 },
60
+ eta: { visable: true, title: t('ETA', 'ETA'), className: 'eta', draggable: true, colSpan: 1, order: 11 },
61
+ total: { visable: true, title: '', className: '', draggable: false, colSpan: 1, order: 12 }
62
+ }
63
+ const [allowColumns, setAllowColumns] = useState(allowColumnsModel)
64
+
65
+ /**
66
+ * Object to save driver group list
67
+ */
68
+ const [driverGroupList, setDriverGroupList] = useState({ groups: [], loading: false, error: null })
69
+ /**
70
+ * Object to save drivers
71
+ */
72
+ const [driversList, setDriversList] = useState({ drivers: [], loading: true, error: null })
73
+ /**
74
+ * Object to save paymethods
75
+ */
76
+ const [paymethodsList, setPaymethodsList] = useState({ paymethods: [], loading: true, error: null })
77
+ /**
78
+ * Object to save businesses
79
+ */
80
+ const [businessesList, setBusinessesList] = useState({ businesses: [], loading: true, error: null })
81
+ /**
82
+ * Array to save the cities
83
+ */
84
+ const [citiesList, setCitiesList] = useState([])
85
+
86
+ /**
87
+ * Object to save selected order ids
88
+ */
89
+ const [selectedOrderIds, setSelectedOrderIds] = useState([])
90
+ /**
91
+ * Object to save order substatuses
92
+ */
93
+ const [selectedSubOrderStatus, setSelectedSubOrderStatus] = useState({
94
+ pending: orderStatuesList.pending,
95
+ inProgress: orderStatuesList.inProgress,
96
+ completed: orderStatuesList.completed,
97
+ cancelled: orderStatuesList.cancelled,
98
+ all: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
99
+ })
100
+
101
+ /**
102
+ * Save ids of orders selected
103
+ * @param {string} orderId order id
104
+ */
105
+ const handleSelectedOrderIds = (orderId) => {
106
+ let _ids = [...selectedOrderIds]
107
+ if (!_ids.includes(orderId)) {
108
+ _ids.push(orderId)
109
+ } else {
110
+ _ids = _ids.filter((_id) => _id !== orderId)
111
+ }
112
+ setSelectedOrderIds(_ids)
113
+ }
114
+ /**
115
+ * Remove id of order updated or delected
116
+ * @param {string} orderId order id
117
+ */
118
+ const handleRemoveSelectedOrderId = (orderId) => {
119
+ let _ids = [...selectedOrderIds]
120
+ _ids = _ids.filter((_id) => _id !== orderId)
121
+ setSelectedOrderIds(_ids)
122
+ }
123
+
124
+ /**
125
+ * Change orders filter by statuses selected
126
+ * @param {string} ordersStatusGroup orders status
127
+ */
128
+ const handleOrdersStatusGroupFilter = (statusGroup) => {
129
+ if (statusGroup === ordersStatusGroup) return
130
+ setOrdersStatusGroup(statusGroup)
131
+ setSelectedOrderIds([])
132
+ }
133
+ /**
134
+ * Change text to search
135
+ * @param {string} search Search value
136
+ */
137
+ const handleChangeSearch = (search) => {
138
+ setSearchValue(search)
139
+ }
140
+ /**
141
+ * Save filter type values
142
+ * @param {object} types
143
+ */
144
+ const handleChangeFilterValues = (types) => {
145
+ setFilterValues(types)
146
+ }
147
+
148
+ /**
149
+ * save status for multi orders selected
150
+ * @param {number} status order status
151
+ */
152
+ const handleChangeMultiOrdersStatus = (status) => {
153
+ setUpdateStatus(status)
154
+ setStartMulitOrderStatusChange(true)
155
+ }
156
+ /**
157
+ * Method to change multi orders status from API
158
+ */
159
+ const handleChangeMultiOrderStatus = async (orderId) => {
160
+ try {
161
+ setActionStatus({ ...actionStatus, loading: true })
162
+ const requestOptions = {
163
+ method: 'PUT',
164
+ headers: {
165
+ 'Content-Type': 'application/json',
166
+ Authorization: `Bearer ${token}`
167
+ },
168
+ body: JSON.stringify({ status: updateStatus })
169
+ }
170
+ const response = await fetch(`${ordering.root}/orders/${orderId}`, requestOptions)
171
+ const { result, error } = await response.json()
172
+
173
+ if (parseInt(result.status) === updateStatus) {
174
+ const _ordersIds = [...selectedOrderIds]
175
+ _ordersIds.shift()
176
+ if (_ordersIds.length === 0) {
177
+ setStartMulitOrderStatusChange(false)
178
+ }
179
+ setSelectedOrderIds(_ordersIds)
180
+ }
181
+ setActionStatus({
182
+ loading: false,
183
+ error: error ? result : null
184
+ })
185
+ } catch (err) {
186
+ setActionStatus({ loading: false, error: [err.message] })
187
+ setStartMulitOrderStatusChange(false)
188
+ }
189
+ }
190
+
191
+ /**
192
+ * Delete orders for orders selected
193
+ */
194
+ const handleDeleteMultiOrders = async (code) => {
195
+ try {
196
+ showToast(ToastType.Info, t('LOADING', 'Loading'))
197
+ setActionStatus({ ...actionStatus, loading: true })
198
+
199
+ const payload = {
200
+ orders_id: selectedOrderIds
201
+ }
202
+ if (code) {
203
+ payload.deleted_action_code = code
204
+ }
205
+ const requestOptions = {
206
+ method: 'DELETE',
207
+ headers: {
208
+ 'Content-Type': 'application/json',
209
+ Authorization: `Bearer ${token}`
210
+ },
211
+ body: JSON.stringify(payload)
212
+ }
213
+ const response = await fetch(`${ordering.root}/orders`, requestOptions)
214
+ const content = await response.json()
215
+ if (!content.error) {
216
+ setDeletedOrderIds(selectedOrderIds)
217
+ setSelectedOrderIds([])
218
+ showToast(ToastType.Success, t('ORDERS_DELETED', 'Orders deleted'))
219
+ } else {
220
+ setActionStatus({
221
+ loading: true,
222
+ error: content.result
223
+ })
224
+ }
225
+ } catch (error) {
226
+ setActionStatus({ loading: false, error: [error.message] })
227
+ }
228
+ }
229
+
230
+ /**
231
+ * Method to get drivers from API
232
+ */
233
+ const getDrivers = async () => {
234
+ try {
235
+ const source = {}
236
+ requestsState.drivers = source
237
+
238
+ const { content: { result } } = await ordering
239
+ .setAccessToken(token)
240
+ .users()
241
+ .select(driversPropsToFetch)
242
+ .where([{ attribute: 'level', value: [4] }])
243
+ .get({ cancelToken: source })
244
+
245
+ setDriversList({
246
+ ...driversList,
247
+ loading: false,
248
+ drivers: result
249
+ })
250
+ } catch (err) {
251
+ setDriversList({
252
+ ...driversList,
253
+ loading: false,
254
+ error: err.message
255
+ })
256
+ }
257
+ }
258
+
259
+ const getControlsOrders = async () => {
260
+ try {
261
+ setActionStatus({ ...actionStatus, loading: true })
262
+ const requestOptions = {
263
+ method: 'GET',
264
+ headers: {
265
+ 'Content-Type': 'application/json',
266
+ Authorization: `Bearer ${token}`
267
+ }
268
+ }
269
+ const response = await fetch(`${ordering.root}/controls/orders`, requestOptions)
270
+ const content = await response.json()
271
+ if (!content.error) {
272
+ setCitiesList(content.result.cities)
273
+ setDriverGroupList({
274
+ ...driverGroupList,
275
+ loading: false,
276
+ groups: content.result.driver_groups
277
+ })
278
+ setPaymethodsList({
279
+ ...paymethodsList,
280
+ loading: false,
281
+ paymethods: content.result.paymethods
282
+ })
283
+ setBusinessesList({
284
+ ...businessesList,
285
+ loading: false,
286
+ businesses: content.result.businesses
287
+ })
288
+ setActionStatus({ ...actionStatus, loading: false })
289
+ } else {
290
+ setActionStatus({ loading: false, error: content?.result })
291
+ }
292
+ } catch (err) {
293
+ setActionStatus({ loading: false, error: [err.message] })
294
+ }
295
+ }
296
+
297
+ /**
298
+ * Listening driver change
299
+ */
300
+ useEffect(() => {
301
+ if (loading) return
302
+ const handleUpdateDriver = (driver) => {
303
+ const found = driversList.drivers.find(_driver => _driver.id === driver.id)
304
+ let _drivers = []
305
+ if (found) {
306
+ _drivers = driversList.drivers.filter(_driver => {
307
+ if (_driver.id === driver.id) {
308
+ Object.assign(_driver, driver)
309
+ }
310
+ return true
311
+ })
312
+ } else {
313
+ _drivers = [...driversList.drivers, driver]
314
+ }
315
+ setDriversList({
316
+ ...driversList,
317
+ drivers: _drivers
318
+ })
319
+ }
320
+ const handleTrackingDriver = (trackingData) => {
321
+ let drivers = []
322
+ drivers = driversList.drivers.filter(_driver => {
323
+ if (_driver.id === trackingData.driver_id) {
324
+ if (typeof trackingData.location === 'string') {
325
+ const trackingLocation = trackingData.location
326
+ const _location = trackingLocation.replaceAll('\\', '')
327
+ const location = JSON.parse(_location)
328
+ _driver.location = location
329
+ } else {
330
+ _driver.location = trackingData.location
331
+ }
332
+ }
333
+ return true
334
+ })
335
+ setDriversList({ ...driversList, drivers: drivers })
336
+ }
337
+ socket.on('drivers_update', handleUpdateDriver)
338
+ socket.on('tracking_driver', handleTrackingDriver)
339
+ return () => {
340
+ socket.off('drivers_update', handleUpdateDriver)
341
+ socket.off('tracking_driver', handleTrackingDriver)
342
+ }
343
+ }, [socket, loading, driversList.drivers])
344
+
345
+ const getOrderNumbersByStatus = async () => {
346
+ let where = []
347
+ const conditions = []
348
+ conditions.push({
349
+ attribute: 'products',
350
+ conditions: [{
351
+ attribute: 'type',
352
+ value: {
353
+ condition: '=',
354
+ value: 'item'
355
+ }
356
+ }]
357
+ })
358
+ if (Object.keys(filterValues).length > 0) {
359
+ const filterConditons = []
360
+ if (filterValues?.statuses.length > 0) {
361
+ filterConditons.push({ attribute: 'status', value: filterValues?.statuses })
362
+ }
363
+
364
+ if (filterValues?.orderId) {
365
+ filterConditons.push(
366
+ {
367
+ attribute: 'id',
368
+ value: {
369
+ condition: 'ilike',
370
+ value: encodeURI(`%${filterValues?.orderId}%`)
371
+ }
372
+ }
373
+ )
374
+ }
375
+ if (filterValues?.externalId) {
376
+ filterConditons.push(
377
+ {
378
+ attribute: 'external_id',
379
+ value: {
380
+ condition: 'ilike',
381
+ value: encodeURI(`%${filterValues?.externalId}%`)
382
+ }
383
+ }
384
+ )
385
+ }
386
+ if (filterValues?.metafield?.length > 0) {
387
+ const metafieldConditions = filterValues?.metafield.map(item => (
388
+ {
389
+ attribute: 'metafields',
390
+ conditions: [
391
+ {
392
+ attribute: 'key',
393
+ value: item?.key
394
+ },
395
+ {
396
+ attribute: 'value',
397
+ value: {
398
+ condition: 'ilike',
399
+ value: encodeURI(`%${item?.value}%`)
400
+ }
401
+ }
402
+ ],
403
+ conector: 'AND'
404
+ }
405
+ ))
406
+ filterConditons.push({
407
+ conector: 'OR',
408
+ conditions: metafieldConditions
409
+ })
410
+ }
411
+ if (filterValues?.deliveryFromDatetime !== null) {
412
+ filterConditons.push(
413
+ {
414
+ attribute: 'delivery_datetime',
415
+ value: {
416
+ condition: '>=',
417
+ value: encodeURI(filterValues?.deliveryFromDatetime)
418
+ }
419
+ }
420
+ )
421
+ }
422
+ if (filterValues?.deliveryEndDatetime !== null) {
423
+ filterConditons.push(
424
+ {
425
+ attribute: 'delivery_datetime',
426
+ value: {
427
+ condition: '<=',
428
+ value: filterValues?.deliveryEndDatetime
429
+ }
430
+ }
431
+ )
432
+ }
433
+ if (filterValues?.businessIds.length !== 0) {
434
+ filterConditons.push(
435
+ {
436
+ attribute: 'business_id',
437
+ value: filterValues?.businessIds
438
+ }
439
+ )
440
+ }
441
+ if (filterValues?.countryCode.length !== 0) {
442
+ filterConditons.push(
443
+ {
444
+ attribute: 'country_code',
445
+ value: filterValues?.countryCode
446
+ }
447
+ )
448
+ }
449
+ if (filterValues?.currency.length !== 0) {
450
+ filterConditons.push(
451
+ {
452
+ attribute: 'currency',
453
+ value: filterValues?.currency
454
+ }
455
+ )
456
+ }
457
+ if (filterValues?.driverIds.length > 0) {
458
+ filterConditons.push(
459
+ {
460
+ attribute: 'driver_id',
461
+ value: filterValues?.driverIds
462
+ }
463
+ )
464
+ }
465
+ if (filterValues?.deliveryTypes.length !== 0) {
466
+ filterConditons.push(
467
+ {
468
+ attribute: 'delivery_type',
469
+ value: filterValues?.deliveryTypes
470
+ }
471
+ )
472
+ }
473
+ if (filterValues?.cityIds.length !== 0) {
474
+ filterConditons.push(
475
+ {
476
+ attribute: 'business',
477
+ conditions: [
478
+ {
479
+ attribute: 'city_id',
480
+ value: filterValues?.cityIds
481
+ }
482
+ ]
483
+ }
484
+ )
485
+ }
486
+ if (filterValues?.driverGroupIds.length !== 0) {
487
+ filterConditons.push(
488
+ {
489
+ attribute: 'driver_id',
490
+ value: filterValues?.driverGroupIds
491
+ }
492
+ )
493
+ }
494
+ if (filterValues?.paymethodIds.length !== 0) {
495
+ filterConditons.push(
496
+ {
497
+ attribute: 'paymethod_id',
498
+ value: filterValues?.paymethodIds
499
+ }
500
+ )
501
+ }
502
+
503
+ if (filterConditons.length) {
504
+ conditions.push({
505
+ conector: 'AND',
506
+ conditions: filterConditons
507
+ })
508
+ }
509
+ }
510
+
511
+ const additionalConditions = []
512
+
513
+ if (isOnlyDelivery) {
514
+ additionalConditions.push({
515
+ attribute: 'delivery_type',
516
+ value: 1
517
+ })
518
+ }
519
+
520
+ if (driverId) {
521
+ additionalConditions.push({
522
+ attribute: 'driver_id',
523
+ value: driverId
524
+ })
525
+ }
526
+ if (customerId) {
527
+ additionalConditions.push({
528
+ attribute: 'customer_id',
529
+ value: customerId
530
+ })
531
+ }
532
+ if (businessId) {
533
+ additionalConditions.push({
534
+ attribute: 'business_id',
535
+ value: businessId
536
+ })
537
+ }
538
+ if (franchiseId) {
539
+ conditions.push({
540
+ attribute: 'ref_business',
541
+ conditions: [{
542
+ attribute: 'franchise_id',
543
+ value: franchiseId
544
+ }]
545
+ })
546
+ }
547
+ if (timeStatus) {
548
+ additionalConditions.push(
549
+ {
550
+ attribute: 'time_status',
551
+ value: timeStatus
552
+ }
553
+ )
554
+ }
555
+ if (additionalConditions.length) {
556
+ conditions.push({
557
+ conector: 'AND',
558
+ conditions: additionalConditions
559
+ })
560
+ }
561
+
562
+ if (searchValue) {
563
+ const searchConditions = []
564
+ searchConditions.push(
565
+ {
566
+ attribute: 'id',
567
+ value: {
568
+ condition: 'ilike',
569
+ value: encodeURI(`%${searchValue}%`)
570
+ }
571
+ }
572
+ )
573
+
574
+ searchConditions.push(
575
+ {
576
+ attribute: 'customer',
577
+ conditions: [
578
+ {
579
+ attribute: 'email',
580
+ value: {
581
+ condition: 'ilike',
582
+ value: encodeURI(`%${searchValue}%`)
583
+ }
584
+ }
585
+ ]
586
+ }
587
+ )
588
+
589
+ searchConditions.push(
590
+ {
591
+ attribute: 'customer',
592
+ conditions: [
593
+ {
594
+ attribute: 'cellphone',
595
+ value: {
596
+ condition: 'ilike',
597
+ value: encodeURI(`%${searchValue}%`)
598
+ }
599
+ }
600
+ ]
601
+ }
602
+ )
603
+
604
+ searchConditions.push(
605
+ {
606
+ attribute: 'business',
607
+ conditions: [
608
+ {
609
+ attribute: 'name',
610
+ value: {
611
+ condition: 'ilike',
612
+ value: encodeURI(`%${searchValue}%`)
613
+ }
614
+ }
615
+ ]
616
+ }
617
+ )
618
+
619
+ searchConditions.push(
620
+ {
621
+ attribute: 'driver',
622
+ conditions: [
623
+ {
624
+ attribute: 'name',
625
+ value: {
626
+ condition: 'ilike',
627
+ value: encodeURI(`%${searchValue}%`)
628
+ }
629
+ }
630
+ ]
631
+ }
632
+ )
633
+
634
+ conditions.push({
635
+ conector: 'OR',
636
+ conditions: searchConditions
637
+ })
638
+ }
639
+
640
+ if (conditions.length) {
641
+ where = {
642
+ conditions,
643
+ conector: 'AND'
644
+ }
645
+ }
646
+ try {
647
+ setNumberOfOrdersByStatus({ ...numberOfOrdersByStatus, loading: true })
648
+ const requestOptions = {
649
+ method: 'GET',
650
+ headers: {
651
+ 'Content-Type': 'application/json',
652
+ Authorization: `Bearer ${token}`
653
+ }
654
+ }
655
+ const response = await fetch(`${ordering.root}/orders/dashboard?v=2&where=${JSON.stringify(where)}`, requestOptions)
656
+ const content = await response.json()
657
+ if (!content?.error) {
658
+ const _orderStatusNumbers = Object.keys(orderStatuesList).reduce((sum, curr, index) => {
659
+ const _currRe = content?.result.filter(ele => orderStatuesList[curr].indexOf(ele?.status) >= 0)
660
+ if (index === 1) {
661
+ const _sumRe = content?.result.filter(ele => orderStatuesList[sum].indexOf(ele?.status) >= 0)
662
+ return {
663
+ [sum]: _sumRe.length > 1 ? _sumRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _sumRe[0]?.quantity || 0,
664
+ [curr]: _currRe.length > 1 ? _currRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _currRe[0]?.quantity || 0
665
+ }
666
+ } else {
667
+ return { ...sum, [curr]: _currRe.length > 1 ? _currRe.reduce((_sum, _curr) => Number(_sum?.quantity || _sum || 0) + Number(_curr?.quantity)) : _currRe[0]?.quantity || 0 }
668
+ }
669
+ })
670
+
671
+ setNumberOfOrdersByStatus({
672
+ ...numberOfOrdersByStatus,
673
+ loading: false,
674
+ error: false,
675
+ result: _orderStatusNumbers
676
+ })
677
+ } else {
678
+ setNumberOfOrdersByStatus({
679
+ ...numberOfOrdersByStatus,
680
+ loading: false,
681
+ error: true
682
+ })
683
+ }
684
+ } catch (err) {
685
+ setNumberOfOrdersByStatus({
686
+ ...numberOfOrdersByStatus,
687
+ loading: false,
688
+ error: [err.message]
689
+ })
690
+ }
691
+ }
692
+
693
+ const handleNewOrder = (order) => {
694
+ if (customerId && order?.customer_id !== customerId) return
695
+ if (!numberOfOrdersByStatus.result) return
696
+ const _orderStatusNumbers = numberOfOrdersByStatus.result
697
+ _orderStatusNumbers.pending += 1
698
+ setNumberOfOrdersByStatus({
699
+ ...numberOfOrdersByStatus,
700
+ loading: false,
701
+ error: false,
702
+ result: _orderStatusNumbers
703
+ })
704
+ }
705
+
706
+ const handleUpdateOrder = (order) => {
707
+ if (!order?.history) return
708
+ if (customerId && order?.customer_id !== customerId) return
709
+ const length = order.history.length
710
+ const lastHistoryData = order?.history[length - 1].data
711
+ const statusChange = lastHistoryData?.find(({ attribute }) => (attribute === 'status'))
712
+ if (statusChange && numberOfOrdersByStatus.result) {
713
+ const from = statusChange.old
714
+ const to = statusChange.new
715
+ const _orderStatusNumbers = numberOfOrdersByStatus.result
716
+ let fromTab = null
717
+ let toTab = null
718
+
719
+ Object.values(orderStatuesList).map((statusTabs, key) => {
720
+ if (statusTabs.includes(from)) {
721
+ fromTab = Object.keys(orderStatuesList)[key]
722
+ if (_orderStatusNumbers[fromTab] > 0) {
723
+ _orderStatusNumbers[fromTab] -= 1
724
+ }
725
+ }
726
+ if (statusTabs.includes(to)) {
727
+ toTab = Object.keys(orderStatuesList)[key]
728
+ _orderStatusNumbers[toTab] += 1
729
+ }
730
+ })
731
+ setNumberOfOrdersByStatus({
732
+ ...numberOfOrdersByStatus,
733
+ loading: false,
734
+ error: false,
735
+ result: _orderStatusNumbers
736
+ })
737
+ }
738
+ }
739
+
740
+ useEffect(() => {
741
+ socket.on('update_order', handleUpdateOrder)
742
+ socket.on('orders_register', handleNewOrder)
743
+ return () => {
744
+ socket.off('update_order', handleUpdateOrder)
745
+ socket.off('orders_register', handleNewOrder)
746
+ }
747
+ }, [socket, filterValues, searchValue, JSON.stringify(numberOfOrdersByStatus)])
748
+
749
+ /**
750
+ * Listening multi orders action start to change status
751
+ */
752
+ useEffect(() => {
753
+ if (!startMulitOrderStatusChange || selectedOrderIds.length === 0) return
754
+ handleChangeMultiOrderStatus(selectedOrderIds[0])
755
+ }, [selectedOrderIds, startMulitOrderStatusChange])
756
+
757
+ useEffect(() => {
758
+ if (loading) return
759
+ if (user?.level === 0 || user?.level === 2 || user?.level === 5) {
760
+ getDrivers()
761
+ }
762
+ getControlsOrders()
763
+
764
+ return () => {
765
+ if (requestsState.drivers) {
766
+ requestsState.drivers.cancel()
767
+ }
768
+ }
769
+ }, [user, loading])
770
+
771
+ useEffect(() => {
772
+ getOrderNumbersByStatus()
773
+ }, [filterValues, searchValue, driverId, customerId, businessId, timeStatus])
774
+
775
+ useEffect(() => {
776
+ if (!user.id || configState?.loading) return
777
+ const getUser = async () => {
778
+ try {
779
+ const response = await ordering.users(user.id).select(['settings']).get()
780
+ const { content: { error, result } } = response
781
+ if (!error && result.settings?.orderColumns) {
782
+ setAllowColumns(result.settings?.orderColumns)
783
+ return
784
+ }
785
+
786
+ setAllowColumns({
787
+ ...allowColumnsModel,
788
+ slaBar: { ...allowColumnsModel?.slaBar, visable: configState?.configs?.order_deadlines_enabled?.value === '1' },
789
+ timer: { ...allowColumnsModel?.timer, visable: configState?.configs?.order_deadlines_enabled?.value === '1' }
790
+ })
791
+ } catch (err) {
792
+ setAllowColumns({
793
+ ...allowColumnsModel,
794
+ slaBar: { ...allowColumnsModel?.slaBar, visable: configState?.configs?.order_deadlines_enabled?.value === '1' },
795
+ timer: { ...allowColumnsModel?.timer, visable: configState?.configs?.order_deadlines_enabled?.value === '1' }
796
+ })
797
+ }
798
+ }
799
+ getUser()
800
+ }, [user, configState])
801
+
802
+ return (
803
+ <>
804
+ {UIComponent && (
805
+ <UIComponent
806
+ {...props}
807
+ searchValue={searchValue}
808
+ driverGroupList={driverGroupList}
809
+ driversList={driversList}
810
+ paymethodsList={paymethodsList}
811
+ businessesList={businessesList}
812
+ citiesList={citiesList}
813
+ ordersStatusGroup={ordersStatusGroup}
814
+ filterValues={filterValues}
815
+ multiOrderUpdateStatus={updateStatus}
816
+ selectedOrderIds={selectedOrderIds}
817
+ deletedOrderIds={deletedOrderIds}
818
+ startMulitOrderStatusChange={startMulitOrderStatusChange}
819
+ selectedSubOrderStatus={selectedSubOrderStatus}
820
+ handleSelectedSubOrderStatus={setSelectedSubOrderStatus}
821
+ handleSelectedOrderIds={handleSelectedOrderIds}
822
+ handleRemoveSelectedOrderId={handleRemoveSelectedOrderId}
823
+ handleChangeSearch={handleChangeSearch}
824
+ handleChangeFilterValues={handleChangeFilterValues}
825
+ handleOrdersStatusGroupFilter={handleOrdersStatusGroupFilter}
826
+ handleChangeMultiOrdersStatus={handleChangeMultiOrdersStatus}
827
+ handleDeleteMultiOrders={handleDeleteMultiOrders}
828
+ setSelectedOrderIds={setSelectedOrderIds}
829
+ numberOfOrdersByStatus={numberOfOrdersByStatus}
830
+ allowColumns={allowColumns}
831
+ setAllowColumns={setAllowColumns}
832
+ timeStatus={timeStatus}
833
+ setTimeStatus={setTimeStatus}
834
+ />
835
+ )}
836
+ </>
837
+ )
838
+ }
839
+
840
+ OrdersManage.propTypes = {
841
+ /**
842
+ * UI Component, this must be containt all graphic elements and use parent props
843
+ */
844
+ UIComponent: PropTypes.elementType,
845
+ /**
846
+ * Components types before my orders
847
+ * Array of type components, the parent props will pass to these components
848
+ */
849
+ beforeComponents: PropTypes.arrayOf(PropTypes.elementType),
850
+ /**
851
+ * Components types after my orders
852
+ * Array of type components, the parent props will pass to these components
853
+ */
854
+ afterComponents: PropTypes.arrayOf(PropTypes.elementType),
855
+ /**
856
+ * Elements before my orders
857
+ * Array of HTML/Components elements, these components will not get the parent props
858
+ */
859
+ beforeElements: PropTypes.arrayOf(PropTypes.element),
860
+ /**
861
+ * Elements after my orders
862
+ * Array of HTML/Components elements, these components will not get the parent props
863
+ */
864
+ afterElements: PropTypes.arrayOf(PropTypes.element)
865
+ }
866
+
867
+ OrdersManage.defaultProps = {
868
+ driversPropsToFetch: ['id', 'name', 'lastname', 'assigned_orders_count', 'available', 'phone', 'cellphone', 'location', 'photo', 'qualification', 'last_order_assigned_at'],
869
+ beforeComponents: [],
870
+ afterComponents: [],
871
+ beforeElements: [],
872
+ afterElements: []
873
+ }