@open-tender/cloud 0.0.1

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 (215) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/app/hooks.d.ts +50 -0
  4. package/dist/cjs/app/hooks.js +8 -0
  5. package/dist/cjs/app/index.d.ts +1 -0
  6. package/dist/cjs/app/index.js +4 -0
  7. package/dist/cjs/app/store.d.ts +146 -0
  8. package/dist/cjs/app/store.js +51 -0
  9. package/dist/cjs/index.d.ts +3 -0
  10. package/dist/cjs/index.js +7 -0
  11. package/dist/cjs/services/api.d.ts +162 -0
  12. package/dist/cjs/services/api.js +691 -0
  13. package/dist/cjs/services/errors.d.ts +50 -0
  14. package/dist/cjs/services/errors.js +53 -0
  15. package/dist/cjs/services/index.d.ts +2 -0
  16. package/dist/cjs/services/index.js +6 -0
  17. package/dist/cjs/slices/alerts.d.ts +5 -0
  18. package/dist/cjs/slices/alerts.js +28 -0
  19. package/dist/cjs/slices/allergens.d.ts +19 -0
  20. package/dist/cjs/slices/allergens.js +66 -0
  21. package/dist/cjs/slices/announcements.d.ts +28 -0
  22. package/dist/cjs/slices/announcements.js +77 -0
  23. package/dist/cjs/slices/checkout.d.ts +38 -0
  24. package/dist/cjs/slices/checkout.js +276 -0
  25. package/dist/cjs/slices/completedOrders.d.ts +25 -0
  26. package/dist/cjs/slices/completedOrders.js +61 -0
  27. package/dist/cjs/slices/config.d.ts +87 -0
  28. package/dist/cjs/slices/config.js +121 -0
  29. package/dist/cjs/slices/confirmation.d.ts +8 -0
  30. package/dist/cjs/slices/confirmation.js +22 -0
  31. package/dist/cjs/slices/customer/account.d.ts +59 -0
  32. package/dist/cjs/slices/customer/account.js +288 -0
  33. package/dist/cjs/slices/customer/addresses.d.ts +37 -0
  34. package/dist/cjs/slices/customer/addresses.js +134 -0
  35. package/dist/cjs/slices/customer/allergens.d.ts +25 -0
  36. package/dist/cjs/slices/customer/allergens.js +94 -0
  37. package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
  38. package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
  39. package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
  40. package/dist/cjs/slices/customer/creditCards.js +172 -0
  41. package/dist/cjs/slices/customer/favorites.d.ts +45 -0
  42. package/dist/cjs/slices/customer/favorites.js +176 -0
  43. package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
  44. package/dist/cjs/slices/customer/fcmToken.js +110 -0
  45. package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
  46. package/dist/cjs/slices/customer/giftCards.js +196 -0
  47. package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
  48. package/dist/cjs/slices/customer/groupOrders.js +148 -0
  49. package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
  50. package/dist/cjs/slices/customer/houseAccounts.js +67 -0
  51. package/dist/cjs/slices/customer/index.d.ts +29 -0
  52. package/dist/cjs/slices/customer/index.js +52 -0
  53. package/dist/cjs/slices/customer/levelup.d.ts +36 -0
  54. package/dist/cjs/slices/customer/levelup.js +128 -0
  55. package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
  56. package/dist/cjs/slices/customer/loyalty.js +87 -0
  57. package/dist/cjs/slices/customer/order.d.ts +25 -0
  58. package/dist/cjs/slices/customer/order.js +84 -0
  59. package/dist/cjs/slices/customer/orders.d.ts +20 -0
  60. package/dist/cjs/slices/customer/orders.js +67 -0
  61. package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
  62. package/dist/cjs/slices/customer/qrCode.js +57 -0
  63. package/dist/cjs/slices/customer/rewards.d.ts +20 -0
  64. package/dist/cjs/slices/customer/rewards.js +67 -0
  65. package/dist/cjs/slices/customer/thanx.d.ts +17 -0
  66. package/dist/cjs/slices/customer/thanx.js +57 -0
  67. package/dist/cjs/slices/deals.d.ts +19 -0
  68. package/dist/cjs/slices/deals.js +97 -0
  69. package/dist/cjs/slices/donations.d.ts +26 -0
  70. package/dist/cjs/slices/donations.js +62 -0
  71. package/dist/cjs/slices/giftCards.d.ts +26 -0
  72. package/dist/cjs/slices/giftCards.js +63 -0
  73. package/dist/cjs/slices/groupOrder.d.ts +80 -0
  74. package/dist/cjs/slices/groupOrder.js +226 -0
  75. package/dist/cjs/slices/guest.d.ts +38 -0
  76. package/dist/cjs/slices/guest.js +101 -0
  77. package/dist/cjs/slices/index.d.ts +27 -0
  78. package/dist/cjs/slices/index.js +30 -0
  79. package/dist/cjs/slices/levelup.d.ts +18 -0
  80. package/dist/cjs/slices/levelup.js +51 -0
  81. package/dist/cjs/slices/menu.d.ts +22 -0
  82. package/dist/cjs/slices/menu.js +86 -0
  83. package/dist/cjs/slices/menuDisplay.d.ts +26 -0
  84. package/dist/cjs/slices/menuDisplay.js +59 -0
  85. package/dist/cjs/slices/menuItems.d.ts +20 -0
  86. package/dist/cjs/slices/menuItems.js +57 -0
  87. package/dist/cjs/slices/notifications.d.ts +5 -0
  88. package/dist/cjs/slices/notifications.js +27 -0
  89. package/dist/cjs/slices/order.d.ts +77 -0
  90. package/dist/cjs/slices/order.js +426 -0
  91. package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
  92. package/dist/cjs/slices/orderFulfillment.js +83 -0
  93. package/dist/cjs/slices/orderRating.d.ts +34 -0
  94. package/dist/cjs/slices/orderRating.js +108 -0
  95. package/dist/cjs/slices/orders.d.ts +86 -0
  96. package/dist/cjs/slices/orders.js +311 -0
  97. package/dist/cjs/slices/resetPassword.d.ts +29 -0
  98. package/dist/cjs/slices/resetPassword.js +83 -0
  99. package/dist/cjs/slices/revenueCenters.d.ts +35 -0
  100. package/dist/cjs/slices/revenueCenters.js +95 -0
  101. package/dist/cjs/slices/signUp.d.ts +19 -0
  102. package/dist/cjs/slices/signUp.js +52 -0
  103. package/dist/cjs/slices/types.d.ts +43 -0
  104. package/dist/cjs/slices/types.js +47 -0
  105. package/dist/cjs/slices/validTimes.d.ts +17 -0
  106. package/dist/cjs/slices/validTimes.js +57 -0
  107. package/dist/cjs/slices/verifyAccount.d.ts +17 -0
  108. package/dist/cjs/slices/verifyAccount.js +54 -0
  109. package/dist/esm/app/hooks.d.ts +50 -0
  110. package/dist/esm/app/hooks.js +4 -0
  111. package/dist/esm/app/index.d.ts +1 -0
  112. package/dist/esm/app/index.js +1 -0
  113. package/dist/esm/app/store.d.ts +146 -0
  114. package/dist/esm/app/store.js +48 -0
  115. package/dist/esm/index.d.ts +3 -0
  116. package/dist/esm/index.js +3 -0
  117. package/dist/esm/services/api.d.ts +162 -0
  118. package/dist/esm/services/api.js +689 -0
  119. package/dist/esm/services/errors.d.ts +50 -0
  120. package/dist/esm/services/errors.js +50 -0
  121. package/dist/esm/services/index.d.ts +2 -0
  122. package/dist/esm/services/index.js +2 -0
  123. package/dist/esm/slices/alerts.d.ts +5 -0
  124. package/dist/esm/slices/alerts.js +23 -0
  125. package/dist/esm/slices/allergens.d.ts +19 -0
  126. package/dist/esm/slices/allergens.js +60 -0
  127. package/dist/esm/slices/announcements.d.ts +28 -0
  128. package/dist/esm/slices/announcements.js +71 -0
  129. package/dist/esm/slices/checkout.d.ts +38 -0
  130. package/dist/esm/slices/checkout.js +268 -0
  131. package/dist/esm/slices/completedOrders.d.ts +25 -0
  132. package/dist/esm/slices/completedOrders.js +57 -0
  133. package/dist/esm/slices/config.d.ts +87 -0
  134. package/dist/esm/slices/config.js +102 -0
  135. package/dist/esm/slices/confirmation.d.ts +8 -0
  136. package/dist/esm/slices/confirmation.js +18 -0
  137. package/dist/esm/slices/customer/account.d.ts +59 -0
  138. package/dist/esm/slices/customer/account.js +282 -0
  139. package/dist/esm/slices/customer/addresses.d.ts +37 -0
  140. package/dist/esm/slices/customer/addresses.js +129 -0
  141. package/dist/esm/slices/customer/allergens.d.ts +25 -0
  142. package/dist/esm/slices/customer/allergens.js +89 -0
  143. package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
  144. package/dist/esm/slices/customer/communicationPreferences.js +161 -0
  145. package/dist/esm/slices/customer/creditCards.d.ts +46 -0
  146. package/dist/esm/slices/customer/creditCards.js +166 -0
  147. package/dist/esm/slices/customer/favorites.d.ts +45 -0
  148. package/dist/esm/slices/customer/favorites.js +171 -0
  149. package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
  150. package/dist/esm/slices/customer/fcmToken.js +106 -0
  151. package/dist/esm/slices/customer/giftCards.d.ts +62 -0
  152. package/dist/esm/slices/customer/giftCards.js +191 -0
  153. package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
  154. package/dist/esm/slices/customer/groupOrders.js +143 -0
  155. package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
  156. package/dist/esm/slices/customer/houseAccounts.js +62 -0
  157. package/dist/esm/slices/customer/index.d.ts +29 -0
  158. package/dist/esm/slices/customer/index.js +48 -0
  159. package/dist/esm/slices/customer/levelup.d.ts +36 -0
  160. package/dist/esm/slices/customer/levelup.js +123 -0
  161. package/dist/esm/slices/customer/loyalty.d.ts +27 -0
  162. package/dist/esm/slices/customer/loyalty.js +79 -0
  163. package/dist/esm/slices/customer/order.d.ts +25 -0
  164. package/dist/esm/slices/customer/order.js +79 -0
  165. package/dist/esm/slices/customer/orders.d.ts +20 -0
  166. package/dist/esm/slices/customer/orders.js +62 -0
  167. package/dist/esm/slices/customer/qrCode.d.ts +17 -0
  168. package/dist/esm/slices/customer/qrCode.js +53 -0
  169. package/dist/esm/slices/customer/rewards.d.ts +20 -0
  170. package/dist/esm/slices/customer/rewards.js +62 -0
  171. package/dist/esm/slices/customer/thanx.d.ts +17 -0
  172. package/dist/esm/slices/customer/thanx.js +53 -0
  173. package/dist/esm/slices/deals.d.ts +19 -0
  174. package/dist/esm/slices/deals.js +91 -0
  175. package/dist/esm/slices/donations.d.ts +26 -0
  176. package/dist/esm/slices/donations.js +58 -0
  177. package/dist/esm/slices/giftCards.d.ts +26 -0
  178. package/dist/esm/slices/giftCards.js +59 -0
  179. package/dist/esm/slices/groupOrder.d.ts +80 -0
  180. package/dist/esm/slices/groupOrder.js +216 -0
  181. package/dist/esm/slices/guest.d.ts +38 -0
  182. package/dist/esm/slices/guest.js +97 -0
  183. package/dist/esm/slices/index.d.ts +27 -0
  184. package/dist/esm/slices/index.js +27 -0
  185. package/dist/esm/slices/levelup.d.ts +18 -0
  186. package/dist/esm/slices/levelup.js +48 -0
  187. package/dist/esm/slices/menu.d.ts +22 -0
  188. package/dist/esm/slices/menu.js +81 -0
  189. package/dist/esm/slices/menuDisplay.d.ts +26 -0
  190. package/dist/esm/slices/menuDisplay.js +55 -0
  191. package/dist/esm/slices/menuItems.d.ts +20 -0
  192. package/dist/esm/slices/menuItems.js +52 -0
  193. package/dist/esm/slices/notifications.d.ts +5 -0
  194. package/dist/esm/slices/notifications.js +22 -0
  195. package/dist/esm/slices/order.d.ts +77 -0
  196. package/dist/esm/slices/order.js +423 -0
  197. package/dist/esm/slices/orderFulfillment.d.ts +29 -0
  198. package/dist/esm/slices/orderFulfillment.js +79 -0
  199. package/dist/esm/slices/orderRating.d.ts +34 -0
  200. package/dist/esm/slices/orderRating.js +104 -0
  201. package/dist/esm/slices/orders.d.ts +86 -0
  202. package/dist/esm/slices/orders.js +302 -0
  203. package/dist/esm/slices/resetPassword.d.ts +29 -0
  204. package/dist/esm/slices/resetPassword.js +79 -0
  205. package/dist/esm/slices/revenueCenters.d.ts +35 -0
  206. package/dist/esm/slices/revenueCenters.js +89 -0
  207. package/dist/esm/slices/signUp.d.ts +19 -0
  208. package/dist/esm/slices/signUp.js +48 -0
  209. package/dist/esm/slices/types.d.ts +43 -0
  210. package/dist/esm/slices/types.js +44 -0
  211. package/dist/esm/slices/validTimes.d.ts +17 -0
  212. package/dist/esm/slices/validTimes.js +52 -0
  213. package/dist/esm/slices/verifyAccount.d.ts +17 -0
  214. package/dist/esm/slices/verifyAccount.js +50 -0
  215. package/package.json +61 -0
@@ -0,0 +1,86 @@
1
+ import { AppState } from '../app';
2
+ import { Order, Orders, OrdersCount, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface OrdersState {
4
+ entities: Orders;
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ skipped: number;
8
+ currentOrder: Order | null;
9
+ counts: OrdersCount;
10
+ }
11
+ export declare enum OrdersActionType {
12
+ FetchOrders = "orders/fetchOrders",
13
+ FetchOrdersToday = "orders/fetchOrdersToday",
14
+ PrintTicket = "order/printTicket",
15
+ UpdateOrders = "orders/updateOrders",
16
+ UpdateTicket = "orders/updateTicket",
17
+ PrintTickets = "orders/printTickets",
18
+ ResetTickets = "orders/resetTickets",
19
+ UpdateOrderPrep = "orders/updateOrderPrep",
20
+ PrintReceipt = "orders/printReceipt"
21
+ }
22
+ export declare const fetchOrders: import("@reduxjs/toolkit").AsyncThunk<any, any, {
23
+ state: AppState;
24
+ rejectValue: RequestError;
25
+ }>;
26
+ export declare const printTicket: import("@reduxjs/toolkit").AsyncThunk<void, {
27
+ order_uuid: number;
28
+ ticket_no: number;
29
+ status: any;
30
+ }, {
31
+ state: AppState;
32
+ rejectValue: RequestError;
33
+ }>;
34
+ export declare const updateTicket: import("@reduxjs/toolkit").AsyncThunk<void, {
35
+ order_uuid: number;
36
+ ticket_no: number;
37
+ status: any;
38
+ }, {
39
+ state: AppState;
40
+ rejectValue: RequestError;
41
+ }>;
42
+ export declare const printTickets: import("@reduxjs/toolkit").AsyncThunk<void, {
43
+ order_uuid: number;
44
+ status: any;
45
+ }, {
46
+ state: AppState;
47
+ rejectValue: RequestError;
48
+ }>;
49
+ export declare const resetTickets: import("@reduxjs/toolkit").AsyncThunk<void, number, {
50
+ state: AppState;
51
+ rejectValue: RequestError;
52
+ }>;
53
+ export declare const updateOrderPrep: import("@reduxjs/toolkit").AsyncThunk<void, {
54
+ order_uuid: number;
55
+ data: any;
56
+ }, {
57
+ state: AppState;
58
+ rejectValue: RequestError;
59
+ }>;
60
+ export declare const printReceipt: import("@reduxjs/toolkit").AsyncThunk<void, number, {
61
+ state: AppState;
62
+ rejectValue: RequestError;
63
+ }>;
64
+ export declare const resetOrders: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCurrentOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>, skipFetchOrders: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, updateOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
65
+ export declare const selectOrders: (state: AppState) => {
66
+ orders: Orders;
67
+ loading: RequestStatus;
68
+ error: RequestError;
69
+ };
70
+ export declare const selectCurrentOrder: (state: AppState) => Order | null;
71
+ export declare const selectCurrentOrders: (state: AppState) => {
72
+ orders: Order[];
73
+ loading: RequestStatus;
74
+ error: RequestError;
75
+ };
76
+ export declare const selectFutureOrders: (state: AppState) => {
77
+ orders: Order[];
78
+ loading: RequestStatus;
79
+ error: RequestError;
80
+ };
81
+ export declare const selectOrdersCounts: (state: AppState) => {
82
+ current: any;
83
+ future: any;
84
+ qa: any;
85
+ };
86
+ export declare const ordersReducer: import("redux").Reducer<OrdersState, import("redux").AnyAction>;
@@ -0,0 +1,302 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from './types';
4
+ import { addAlert } from './alerts';
5
+ import { currentLocalDate, isoToDate, makeOrdersCounts, notDone, parseIsoToDate, timezoneMap } from '@open-tender/utils';
6
+ const initialState = {
7
+ entities: [],
8
+ loading: 'idle',
9
+ error: null,
10
+ skipped: 0,
11
+ currentOrder: null,
12
+ counts: { current: null, future: null, qa: null }
13
+ };
14
+ export var OrdersActionType;
15
+ (function (OrdersActionType) {
16
+ OrdersActionType["FetchOrders"] = "orders/fetchOrders";
17
+ OrdersActionType["FetchOrdersToday"] = "orders/fetchOrdersToday";
18
+ OrdersActionType["PrintTicket"] = "order/printTicket";
19
+ OrdersActionType["UpdateOrders"] = "orders/updateOrders";
20
+ OrdersActionType["UpdateTicket"] = "orders/updateTicket";
21
+ OrdersActionType["PrintTickets"] = "orders/printTickets";
22
+ OrdersActionType["ResetTickets"] = "orders/resetTickets";
23
+ OrdersActionType["UpdateOrderPrep"] = "orders/updateOrderPrep";
24
+ OrdersActionType["PrintReceipt"] = "orders/printReceipt";
25
+ })(OrdersActionType || (OrdersActionType = {}));
26
+ export const fetchOrders = createAsyncThunk(OrdersActionType.FetchOrders, (args, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
27
+ const { api, itemTypes } = getState().config;
28
+ if (!api)
29
+ return;
30
+ try {
31
+ const orders = yield api.getOrders(args);
32
+ const counts = makeOrdersCounts(itemTypes, orders);
33
+ return { orders, counts };
34
+ }
35
+ catch (err) {
36
+ const error = err;
37
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
38
+ return rejectWithValue(error);
39
+ }
40
+ }));
41
+ // export const fetchOrdersToday = createAsyncThunk<
42
+ // any,
43
+ // any,
44
+ // { state: AppState; rejectValue: RequestError }
45
+ // >(
46
+ // OrdersActionType.FetchOrdersToday,
47
+ // async (args, { dispatch, getState, rejectWithValue }) => {
48
+ // const { api, itemTypes, store } = getState().config
49
+ // if (!api || !store) return
50
+ // const tz: TimezonePython = store.timezone ? timezoneMap[store.timezone as TimezonePython] : getUserTimezone()
51
+ // const business_date = currentLocalDateStr(tz)
52
+ // const params = {
53
+ // business_date,
54
+ // prep_status: 'TODO,IN_PROGRESS,DONE',
55
+ // sort_by: 'fire_at',
56
+ // sort_direction: 'ASC',
57
+ // ...args
58
+ // }
59
+ // try {
60
+ // const ordersToday = await api.getOrders(params)
61
+ // const existing = getState().orders.entities.filter(
62
+ // i => !i.requested_at.startsWith(business_date)
63
+ // )
64
+ // const orders = [...ordersToday, ...existing]
65
+ // .map(i => ({
66
+ // ...i,
67
+ // fireAt: isoToDate(i.fire_at, tz)
68
+ // }))
69
+ // .sort((a, b) => a.fireAt - b.fireAt)
70
+ // const counts = makeOrdersCounts(itemTypes, orders)
71
+ // return { orders, counts }
72
+ // } catch (err) {
73
+ // const error = err as RequestError
74
+ // dispatch(addAlert(error?.detail || error?.message))
75
+ // return rejectWithValue(error)
76
+ // }
77
+ // }
78
+ // )
79
+ export const printTicket = createAsyncThunk(OrdersActionType.PrintTicket, (args, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
80
+ const { api, itemTypes } = getState().config;
81
+ if (!api)
82
+ return;
83
+ try {
84
+ const data = args.status ? { ticket_status: args.status } : {};
85
+ const order = yield api.postTicketPrint(args.order_uuid, args.ticket_no, data);
86
+ dispatch(updateOrder({ order, itemTypes }));
87
+ return;
88
+ }
89
+ catch (err) {
90
+ const error = err;
91
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
92
+ return rejectWithValue(error);
93
+ }
94
+ }));
95
+ export const updateTicket = createAsyncThunk(OrdersActionType.UpdateTicket, (args, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
96
+ const { api, itemTypes } = getState().config;
97
+ if (!api)
98
+ return;
99
+ try {
100
+ const order = yield api.postTicketStatus(args.order_uuid, args.ticket_no, args.status);
101
+ dispatch(updateOrder({ order, itemTypes }));
102
+ return;
103
+ }
104
+ catch (err) {
105
+ const error = err;
106
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
107
+ return rejectWithValue(error);
108
+ }
109
+ }));
110
+ export const printTickets = createAsyncThunk(OrdersActionType.PrintTickets, (args, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
111
+ const { api, itemTypes } = getState().config;
112
+ if (!api)
113
+ return;
114
+ try {
115
+ const data = args.status ? { prep_status: args.status } : {};
116
+ const order = yield api.postTicketsPrint(args.order_uuid, data);
117
+ dispatch(updateOrder({ order, itemTypes }));
118
+ return;
119
+ }
120
+ catch (err) {
121
+ const error = err;
122
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
123
+ return rejectWithValue(error);
124
+ }
125
+ }));
126
+ export const resetTickets = createAsyncThunk(OrdersActionType.ResetTickets, (order_uuid, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
127
+ const { api, itemTypes } = getState().config;
128
+ if (!api)
129
+ return;
130
+ try {
131
+ const order = yield api.postTicketsReset(order_uuid);
132
+ dispatch(updateOrder({ order, itemTypes }));
133
+ return;
134
+ }
135
+ catch (err) {
136
+ const error = err;
137
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
138
+ return rejectWithValue(error);
139
+ }
140
+ }));
141
+ export const updateOrderPrep = createAsyncThunk(OrdersActionType.UpdateOrderPrep, (args, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
142
+ const { api, itemTypes } = getState().config;
143
+ if (!api)
144
+ return;
145
+ try {
146
+ const order = yield api.patchOrder(args.order_uuid, args.data);
147
+ dispatch(updateOrder({ order, itemTypes }));
148
+ return;
149
+ }
150
+ catch (err) {
151
+ const error = err;
152
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
153
+ return rejectWithValue(error);
154
+ }
155
+ }));
156
+ export const printReceipt = createAsyncThunk(OrdersActionType.PrintReceipt, (order_uuid, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
157
+ const { api } = getState().config;
158
+ if (!api)
159
+ return;
160
+ try {
161
+ yield api.postReceipt(order_uuid);
162
+ return;
163
+ }
164
+ catch (err) {
165
+ const error = err;
166
+ dispatch(addAlert((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
167
+ return rejectWithValue(error);
168
+ }
169
+ }));
170
+ const ordersSlice = createSlice({
171
+ name: ReducerType.Orders,
172
+ initialState,
173
+ reducers: {
174
+ resetOrders: () => initialState,
175
+ setCurrentOrder: (state, action) => {
176
+ state.currentOrder = action.payload;
177
+ },
178
+ skipFetchOrders: state => {
179
+ state.skipped = state.skipped + 1;
180
+ },
181
+ updateOrder: (state, action) => {
182
+ const { order, itemTypes } = action.payload;
183
+ const entities = state.entities
184
+ .map(i => {
185
+ return i.order_uuid === order.order_uuid ? order : i;
186
+ })
187
+ .map(i => (Object.assign(Object.assign({}, i), { fireAt: parseIsoToDate(i.fire_at) })))
188
+ .sort((a, b) => a.fireAt - b.fireAt);
189
+ const counts = makeOrdersCounts(itemTypes, entities);
190
+ const currentOrder = state.currentOrder ? order : null;
191
+ state.entities = entities;
192
+ state.currentOrder = currentOrder;
193
+ state.counts = counts;
194
+ }
195
+ },
196
+ extraReducers: builder => {
197
+ builder
198
+ .addCase(fetchOrders.fulfilled, (state, action) => {
199
+ const { orders, counts } = action.payload;
200
+ state.entities = orders;
201
+ state.counts = counts;
202
+ state.loading = 'idle';
203
+ state.skipped = 0;
204
+ })
205
+ .addCase(fetchOrders.pending, state => {
206
+ state.loading = 'pending';
207
+ })
208
+ .addCase(fetchOrders.rejected, state => {
209
+ state.loading = 'idle';
210
+ })
211
+ // .addCase(fetchOrdersToday.fulfilled, (state, action) => {
212
+ // const { orders, counts } = action.payload
213
+ // state.entities = orders
214
+ // state.counts = counts
215
+ // state.loading = 'idle'
216
+ // })
217
+ // .addCase(fetchOrdersToday.pending, state => {
218
+ // state.loading = 'pending'
219
+ // })
220
+ // .addCase(fetchOrdersToday.rejected, state => {
221
+ // state.loading = 'idle'
222
+ // })
223
+ .addCase(printTicket.fulfilled, state => {
224
+ state.loading = 'idle';
225
+ })
226
+ .addCase(printTicket.pending, state => {
227
+ state.loading = 'pending';
228
+ })
229
+ .addCase(printTicket.rejected, state => {
230
+ state.loading = 'idle';
231
+ })
232
+ .addCase(updateTicket.fulfilled, state => {
233
+ state.loading = 'idle';
234
+ })
235
+ .addCase(updateTicket.pending, state => {
236
+ state.loading = 'pending';
237
+ })
238
+ .addCase(updateTicket.rejected, state => {
239
+ state.loading = 'idle';
240
+ })
241
+ .addCase(printTickets.fulfilled, state => {
242
+ state.loading = 'idle';
243
+ })
244
+ .addCase(printTickets.pending, state => {
245
+ state.loading = 'pending';
246
+ })
247
+ .addCase(printTickets.rejected, state => {
248
+ state.loading = 'idle';
249
+ })
250
+ .addCase(updateOrderPrep.fulfilled, state => {
251
+ state.loading = 'idle';
252
+ })
253
+ .addCase(updateOrderPrep.pending, state => {
254
+ state.loading = 'pending';
255
+ })
256
+ .addCase(updateOrderPrep.rejected, state => {
257
+ state.loading = 'idle';
258
+ })
259
+ .addCase(printReceipt.fulfilled, state => {
260
+ state.loading = 'idle';
261
+ })
262
+ .addCase(printReceipt.pending, state => {
263
+ state.loading = 'pending';
264
+ })
265
+ .addCase(printReceipt.rejected, state => {
266
+ state.loading = 'idle';
267
+ });
268
+ }
269
+ });
270
+ export const { resetOrders, setCurrentOrder, skipFetchOrders, updateOrder } = ordersSlice.actions;
271
+ export const selectOrders = (state) => {
272
+ const { entities: orders, loading, error } = state.orders;
273
+ return { orders, loading, error };
274
+ };
275
+ export const selectCurrentOrder = (state) => {
276
+ return state.orders.currentOrder;
277
+ };
278
+ export const selectCurrentOrders = (state) => {
279
+ const { entities, loading, error } = state.orders;
280
+ const orders = entities.filter(i => {
281
+ const tz = timezoneMap[i.timezone];
282
+ const fireDate = isoToDate(i.fire_at, tz);
283
+ const currentDate = currentLocalDate(tz);
284
+ return notDone(i.prep_status) && fireDate < currentDate;
285
+ });
286
+ return { orders, loading, error };
287
+ };
288
+ export const selectFutureOrders = (state) => {
289
+ const { entities, loading, error } = state.orders;
290
+ const orders = entities.filter(i => {
291
+ const tz = timezoneMap[i.timezone];
292
+ const fireDate = isoToDate(i.fire_at, tz);
293
+ const currentDate = currentLocalDate(tz);
294
+ return notDone(i.prep_status) && fireDate > currentDate;
295
+ });
296
+ return { orders, loading, error };
297
+ };
298
+ export const selectOrdersCounts = (state) => {
299
+ const { current, future, qa } = state.orders.counts;
300
+ return { current, future, qa };
301
+ };
302
+ export const ordersReducer = ordersSlice.reducer;
@@ -0,0 +1,29 @@
1
+ import { AppState } from '../app';
2
+ import { RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface ResetPasswordState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ success: boolean;
7
+ resetSent: boolean;
8
+ }
9
+ export declare enum ResetPasswordActionType {
10
+ SendPasswordResetEmail = "resetPassword/sendPasswordResetEmail",
11
+ ResetPassword = "resetPassword/resetPassword"
12
+ }
13
+ export declare const sendPasswordResetEmail: import("@reduxjs/toolkit").AsyncThunk<void, {
14
+ email: string;
15
+ link_url: string;
16
+ }, {
17
+ state: AppState;
18
+ rejectValue: RequestError;
19
+ }>;
20
+ export declare const resetPassword: import("@reduxjs/toolkit").AsyncThunk<void, {
21
+ new_password: string;
22
+ resetToken: string;
23
+ }, {
24
+ state: AppState;
25
+ rejectValue: RequestError;
26
+ }>;
27
+ export declare const resetPasswordReset: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
28
+ export declare const selectResetPassword: (state: AppState) => ResetPasswordState;
29
+ export declare const resetPasswordReducer: import("redux").Reducer<ResetPasswordState, import("redux").AnyAction>;
@@ -0,0 +1,79 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from './types';
4
+ import { makeFormErrors } from '@open-tender/utils';
5
+ const initialState = {
6
+ loading: 'idle',
7
+ error: null,
8
+ success: false,
9
+ resetSent: false
10
+ };
11
+ export var ResetPasswordActionType;
12
+ (function (ResetPasswordActionType) {
13
+ ResetPasswordActionType["SendPasswordResetEmail"] = "resetPassword/sendPasswordResetEmail";
14
+ ResetPasswordActionType["ResetPassword"] = "resetPassword/resetPassword";
15
+ })(ResetPasswordActionType || (ResetPasswordActionType = {}));
16
+ export const sendPasswordResetEmail = createAsyncThunk(ResetPasswordActionType.SendPasswordResetEmail, (requestData, { getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const { api } = getState().config;
18
+ if (!api)
19
+ return;
20
+ try {
21
+ yield api.postSendPasswordResetEmail(requestData.email, requestData.link_url);
22
+ return;
23
+ }
24
+ catch (err) {
25
+ const errors = makeFormErrors(err);
26
+ return rejectWithValue(errors);
27
+ }
28
+ }));
29
+ export const resetPassword = createAsyncThunk(ResetPasswordActionType.ResetPassword, (requestData, { getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
30
+ const { api } = getState().config;
31
+ if (!api)
32
+ return;
33
+ try {
34
+ yield api.postResetPassword(requestData.new_password, requestData.resetToken);
35
+ return;
36
+ }
37
+ catch (err) {
38
+ const errors = makeFormErrors(err);
39
+ return rejectWithValue(errors);
40
+ }
41
+ }));
42
+ const resetPasswordSlice = createSlice({
43
+ name: ReducerType.ResetPassword,
44
+ initialState,
45
+ reducers: {
46
+ resetPasswordReset: () => initialState
47
+ },
48
+ extraReducers: builder => {
49
+ builder
50
+ .addCase(sendPasswordResetEmail.fulfilled, state => {
51
+ state.resetSent = true;
52
+ state.loading = 'idle';
53
+ state.error = null;
54
+ })
55
+ .addCase(sendPasswordResetEmail.pending, state => {
56
+ state.loading = 'pending';
57
+ })
58
+ .addCase(sendPasswordResetEmail.rejected, (state, action) => {
59
+ state.loading = 'idle';
60
+ state.error = action.payload;
61
+ })
62
+ .addCase(resetPassword.fulfilled, state => {
63
+ state.resetSent = false;
64
+ state.success = true;
65
+ state.loading = 'idle';
66
+ state.error = null;
67
+ })
68
+ .addCase(resetPassword.pending, state => {
69
+ state.loading = 'pending';
70
+ })
71
+ .addCase(resetPassword.rejected, (state, action) => {
72
+ state.loading = 'idle';
73
+ state.error = action.payload;
74
+ });
75
+ }
76
+ });
77
+ export const { resetPasswordReset } = resetPasswordSlice.actions;
78
+ export const selectResetPassword = (state) => state.resetPassword;
79
+ export const resetPasswordReducer = resetPasswordSlice.reducer;
@@ -0,0 +1,35 @@
1
+ import { AppState } from '../app';
2
+ import { CustomerRevenueCenters, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface RevenueCentersState {
4
+ revenueCenters: CustomerRevenueCenters;
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ }
8
+ export declare enum RevenueCentersActionType {
9
+ FetchRevenueCenters = "revenueCenters/fetchRevenueCenters",
10
+ FetchLocations = "revenueCenters/fetchLocations"
11
+ }
12
+ export declare const fetchRevenueCenters: import("@reduxjs/toolkit").AsyncThunk<CustomerRevenueCenters, {
13
+ type: string;
14
+ is_outpost: boolean;
15
+ lat: number;
16
+ lng: number;
17
+ requestedAt: string;
18
+ }, {
19
+ state: AppState;
20
+ rejectValue: RequestError;
21
+ }>;
22
+ export declare const fetchLocations: import("@reduxjs/toolkit").AsyncThunk<CustomerRevenueCenters, {
23
+ type: string;
24
+ is_outpost: boolean;
25
+ lat: number;
26
+ lng: number;
27
+ requestedAt: string;
28
+ }, {
29
+ state: AppState;
30
+ rejectValue: RequestError;
31
+ }>;
32
+ export declare const resetRevenueCenters: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setRevenueCenters: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
33
+ export declare const selectRevenueCenters: (state: AppState) => RevenueCentersState;
34
+ export declare const selectRevenueCenterCount: (state: AppState) => number;
35
+ export declare const revenueCentersReducer: import("redux").Reducer<RevenueCentersState, import("redux").AnyAction>;
@@ -0,0 +1,89 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from './types';
4
+ import { addDistance } from '@open-tender/utils';
5
+ const initialState = {
6
+ revenueCenters: [],
7
+ loading: 'idle',
8
+ error: null
9
+ };
10
+ export var RevenueCentersActionType;
11
+ (function (RevenueCentersActionType) {
12
+ RevenueCentersActionType["FetchRevenueCenters"] = "revenueCenters/fetchRevenueCenters";
13
+ RevenueCentersActionType["FetchLocations"] = "revenueCenters/fetchLocations";
14
+ })(RevenueCentersActionType || (RevenueCentersActionType = {}));
15
+ export const fetchRevenueCenters = createAsyncThunk(RevenueCentersActionType.FetchRevenueCenters, (requestData, { getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
16
+ try {
17
+ const { api } = getState().config;
18
+ if (requestData.lat)
19
+ requestData.lat = parseFloat(requestData.lat.toFixed(7));
20
+ if (requestData.lng)
21
+ requestData.lng = parseFloat(requestData.lng.toFixed(7));
22
+ const { data } = yield api.getRevenueCenters(requestData.type, requestData.is_outpost, requestData.lat, requestData.lng, requestData.requestedAt);
23
+ const revenueCenters = requestData.lat && requestData.lng
24
+ ? addDistance(data, { lat: requestData.lat, lng: requestData.lng })
25
+ : data;
26
+ return revenueCenters;
27
+ }
28
+ catch (err) {
29
+ return rejectWithValue(err);
30
+ }
31
+ }));
32
+ export const fetchLocations = createAsyncThunk(RevenueCentersActionType.FetchLocations, (requestData, { getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
33
+ try {
34
+ const { api } = getState().config;
35
+ if (requestData.lat)
36
+ requestData.lat = parseFloat(requestData.lat.toFixed(7));
37
+ if (requestData.lng)
38
+ requestData.lng = parseFloat(requestData.lng.toFixed(7));
39
+ const { data } = yield api.getLocations(requestData.type, requestData.is_outpost, requestData.lat, requestData.lng, requestData.requestedAt);
40
+ const revenueCenters = requestData.lat && requestData.lng
41
+ ? addDistance(data, { lat: requestData.lat, lng: requestData.lng })
42
+ : data;
43
+ return revenueCenters;
44
+ }
45
+ catch (err) {
46
+ return rejectWithValue(err);
47
+ }
48
+ }));
49
+ const revenueCentersSlice = createSlice({
50
+ name: ReducerType.RevenueCenters,
51
+ initialState,
52
+ reducers: {
53
+ resetRevenueCenters: () => initialState,
54
+ setRevenueCenters: (state, action) => {
55
+ state.revenueCenters = action.payload;
56
+ }
57
+ },
58
+ extraReducers: builder => {
59
+ builder
60
+ .addCase(fetchRevenueCenters.fulfilled, (state, action) => {
61
+ state.revenueCenters = action.payload;
62
+ state.loading = 'idle';
63
+ state.error = null;
64
+ })
65
+ .addCase(fetchRevenueCenters.pending, state => {
66
+ state.loading = 'pending';
67
+ })
68
+ .addCase(fetchRevenueCenters.rejected, (state, action) => {
69
+ state.error = action.payload;
70
+ state.loading = 'idle';
71
+ })
72
+ .addCase(fetchLocations.fulfilled, (state, action) => {
73
+ state.revenueCenters = action.payload;
74
+ state.loading = 'idle';
75
+ state.error = null;
76
+ })
77
+ .addCase(fetchLocations.pending, state => {
78
+ state.loading = 'pending';
79
+ })
80
+ .addCase(fetchLocations.rejected, (state, action) => {
81
+ state.error = action.payload;
82
+ state.loading = 'idle';
83
+ });
84
+ }
85
+ });
86
+ export const { resetRevenueCenters, setRevenueCenters } = revenueCentersSlice.actions;
87
+ export const selectRevenueCenters = (state) => state.revenueCenters;
88
+ export const selectRevenueCenterCount = (state) => state.revenueCenters ? state.revenueCenters.revenueCenters.length : 0;
89
+ export const revenueCentersReducer = revenueCentersSlice.reducer;
@@ -0,0 +1,19 @@
1
+ import { AppState } from '../app';
2
+ import { LoginData, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface SignUpState {
4
+ loading: RequestStatus;
5
+ error: RequestError;
6
+ }
7
+ export declare enum SignUpActionType {
8
+ SignUpCustomer = "signUp/signUpCustomer"
9
+ }
10
+ export declare const signUpCustomer: import("@reduxjs/toolkit").AsyncThunk<void, {
11
+ data: LoginData;
12
+ callback?: ((data: any) => void) | undefined;
13
+ }, {
14
+ state: AppState;
15
+ rejectValue: RequestError;
16
+ }>;
17
+ export declare const resetSignUp: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
18
+ export declare const selectSignUp: (state: AppState) => SignUpState;
19
+ export declare const signUpReducer: import("redux").Reducer<SignUpState, import("redux").AnyAction>;