@devlider001/washlab-backend 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/convex/_generated/api.d.ts +2 -0
- package/convex/_generated/api.js +23 -0
- package/convex/_generated/server.js +93 -0
- package/convex/admin.d.ts +95 -6
- package/convex/attendants.d.ts +1 -1
- package/convex/branches.d.ts +24 -0
- package/convex/customers.d.ts +12 -3
- package/convex/loyalty.d.ts +131 -7
- package/convex/notifications.d.ts +51 -47
- package/convex/orders.d.ts +17 -5
- package/convex/payments.d.ts +159 -19
- package/convex/schema.d.ts +29 -6
- package/convex/vouchers.d.ts +2 -2
- package/package.json +1 -1
|
@@ -12,6 +12,7 @@ import type * as admin from "../admin.js";
|
|
|
12
12
|
import type * as analytics from "../analytics.js";
|
|
13
13
|
import type * as attendants from "../attendants.js";
|
|
14
14
|
import type * as audit from "../audit.js";
|
|
15
|
+
import type * as branches from "../branches.js";
|
|
15
16
|
import type * as clerk from "../clerk.js";
|
|
16
17
|
import type * as customers from "../customers.js";
|
|
17
18
|
import type * as http from "../http.js";
|
|
@@ -36,6 +37,7 @@ declare const fullApi: ApiFromModules<{
|
|
|
36
37
|
analytics: typeof analytics;
|
|
37
38
|
attendants: typeof attendants;
|
|
38
39
|
audit: typeof audit;
|
|
40
|
+
branches: typeof branches;
|
|
39
41
|
clerk: typeof clerk;
|
|
40
42
|
customers: typeof customers;
|
|
41
43
|
http: typeof http;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* Generated `api` utility.
|
|
4
|
+
*
|
|
5
|
+
* THIS CODE IS AUTOMATICALLY GENERATED.
|
|
6
|
+
*
|
|
7
|
+
* To regenerate, run `npx convex dev`.
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { anyApi, componentsGeneric } from "convex/server";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A utility for referencing Convex functions in your app's API.
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* ```js
|
|
18
|
+
* const myFunctionReference = api.myModule.myFunction;
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export const api = anyApi;
|
|
22
|
+
export const internal = anyApi;
|
|
23
|
+
export const components = componentsGeneric();
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
/**
|
|
3
|
+
* Generated utilities for implementing server-side Convex query and mutation functions.
|
|
4
|
+
*
|
|
5
|
+
* THIS CODE IS AUTOMATICALLY GENERATED.
|
|
6
|
+
*
|
|
7
|
+
* To regenerate, run `npx convex dev`.
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
actionGeneric,
|
|
13
|
+
httpActionGeneric,
|
|
14
|
+
queryGeneric,
|
|
15
|
+
mutationGeneric,
|
|
16
|
+
internalActionGeneric,
|
|
17
|
+
internalMutationGeneric,
|
|
18
|
+
internalQueryGeneric,
|
|
19
|
+
} from "convex/server";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Define a query in this Convex app's public API.
|
|
23
|
+
*
|
|
24
|
+
* This function will be allowed to read your Convex database and will be accessible from the client.
|
|
25
|
+
*
|
|
26
|
+
* @param func - The query function. It receives a {@link QueryCtx} as its first argument.
|
|
27
|
+
* @returns The wrapped query. Include this as an `export` to name it and make it accessible.
|
|
28
|
+
*/
|
|
29
|
+
export const query = queryGeneric;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Define a query that is only accessible from other Convex functions (but not from the client).
|
|
33
|
+
*
|
|
34
|
+
* This function will be allowed to read from your Convex database. It will not be accessible from the client.
|
|
35
|
+
*
|
|
36
|
+
* @param func - The query function. It receives a {@link QueryCtx} as its first argument.
|
|
37
|
+
* @returns The wrapped query. Include this as an `export` to name it and make it accessible.
|
|
38
|
+
*/
|
|
39
|
+
export const internalQuery = internalQueryGeneric;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Define a mutation in this Convex app's public API.
|
|
43
|
+
*
|
|
44
|
+
* This function will be allowed to modify your Convex database and will be accessible from the client.
|
|
45
|
+
*
|
|
46
|
+
* @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
|
|
47
|
+
* @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
|
|
48
|
+
*/
|
|
49
|
+
export const mutation = mutationGeneric;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Define a mutation that is only accessible from other Convex functions (but not from the client).
|
|
53
|
+
*
|
|
54
|
+
* This function will be allowed to modify your Convex database. It will not be accessible from the client.
|
|
55
|
+
*
|
|
56
|
+
* @param func - The mutation function. It receives a {@link MutationCtx} as its first argument.
|
|
57
|
+
* @returns The wrapped mutation. Include this as an `export` to name it and make it accessible.
|
|
58
|
+
*/
|
|
59
|
+
export const internalMutation = internalMutationGeneric;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Define an action in this Convex app's public API.
|
|
63
|
+
*
|
|
64
|
+
* An action is a function which can execute any JavaScript code, including non-deterministic
|
|
65
|
+
* code and code with side-effects, like calling third-party services.
|
|
66
|
+
* They can be run in Convex's JavaScript environment or in Node.js using the "use node" directive.
|
|
67
|
+
* They can interact with the database indirectly by calling queries and mutations using the {@link ActionCtx}.
|
|
68
|
+
*
|
|
69
|
+
* @param func - The action. It receives an {@link ActionCtx} as its first argument.
|
|
70
|
+
* @returns The wrapped action. Include this as an `export` to name it and make it accessible.
|
|
71
|
+
*/
|
|
72
|
+
export const action = actionGeneric;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Define an action that is only accessible from other Convex functions (but not from the client).
|
|
76
|
+
*
|
|
77
|
+
* @param func - The function. It receives an {@link ActionCtx} as its first argument.
|
|
78
|
+
* @returns The wrapped function. Include this as an `export` to name it and make it accessible.
|
|
79
|
+
*/
|
|
80
|
+
export const internalAction = internalActionGeneric;
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Define an HTTP action.
|
|
84
|
+
*
|
|
85
|
+
* The wrapped function will be used to respond to HTTP requests received
|
|
86
|
+
* by a Convex deployment if the requests matches the path and method where
|
|
87
|
+
* this action is routed. Be sure to route your httpAction in `convex/http.js`.
|
|
88
|
+
*
|
|
89
|
+
* @param func - The function. It receives an {@link ActionCtx} as its first argument
|
|
90
|
+
* and a Fetch API `Request` object as its second.
|
|
91
|
+
* @returns The wrapped function. Import this function from `convex/http.js` and route it to hook it up.
|
|
92
|
+
*/
|
|
93
|
+
export const httpAction = httpActionGeneric;
|
package/convex/admin.d.ts
CHANGED
|
@@ -25,8 +25,14 @@ export declare const getCurrentUser: import("convex/server").RegisteredQuery<"pu
|
|
|
25
25
|
*/
|
|
26
26
|
export declare const getBranches: import("convex/server").RegisteredQuery<"public", {
|
|
27
27
|
includeInactive?: boolean | undefined;
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
paginationOpts: {
|
|
29
|
+
id?: number;
|
|
30
|
+
endCursor?: string | null;
|
|
31
|
+
maximumRowsRead?: number;
|
|
32
|
+
maximumBytesRead?: number;
|
|
33
|
+
numItems: number;
|
|
34
|
+
cursor: string | null;
|
|
35
|
+
};
|
|
30
36
|
}, Promise<{
|
|
31
37
|
page: {
|
|
32
38
|
_id: import("convex/values").GenericId<"branches">;
|
|
@@ -99,8 +105,8 @@ export declare const getBranch: import("convex/server").RegisteredQuery<"public"
|
|
|
99
105
|
export declare const getAttendants: import("convex/server").RegisteredQuery<"public", {
|
|
100
106
|
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
101
107
|
includeInactive?: boolean | undefined;
|
|
102
|
-
cursor?: string | undefined;
|
|
103
108
|
numItems?: number | undefined;
|
|
109
|
+
cursor?: string | undefined;
|
|
104
110
|
}, Promise<{
|
|
105
111
|
page: {
|
|
106
112
|
_id: import("convex/values").GenericId<"attendants">;
|
|
@@ -126,15 +132,22 @@ export declare const getAttendants: import("convex/server").RegisteredQuery<"pub
|
|
|
126
132
|
export declare const getOrders: import("convex/server").RegisteredQuery<"public", {
|
|
127
133
|
status?: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled" | undefined;
|
|
128
134
|
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
129
|
-
cursor?: string | undefined;
|
|
130
|
-
numItems?: number | undefined;
|
|
131
135
|
startDate?: number | undefined;
|
|
132
136
|
endDate?: number | undefined;
|
|
137
|
+
paginationOpts: {
|
|
138
|
+
id?: number;
|
|
139
|
+
endCursor?: string | null;
|
|
140
|
+
maximumRowsRead?: number;
|
|
141
|
+
maximumBytesRead?: number;
|
|
142
|
+
numItems: number;
|
|
143
|
+
cursor: string | null;
|
|
144
|
+
};
|
|
133
145
|
}, Promise<{
|
|
134
146
|
page: {
|
|
135
147
|
_id: import("convex/values").GenericId<"orders">;
|
|
136
148
|
_creationTime: number;
|
|
137
149
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
150
|
+
customerEmail?: string | undefined;
|
|
138
151
|
estimatedWeight?: number | undefined;
|
|
139
152
|
actualWeight?: number | undefined;
|
|
140
153
|
itemCount?: number | undefined;
|
|
@@ -167,9 +180,10 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
167
180
|
updatedAt: number;
|
|
168
181
|
statusHistory: {
|
|
169
182
|
notes?: string | undefined;
|
|
183
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
184
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
170
185
|
status: string;
|
|
171
186
|
changedAt: number;
|
|
172
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
173
187
|
}[];
|
|
174
188
|
}[];
|
|
175
189
|
isDone: boolean;
|
|
@@ -374,4 +388,79 @@ export declare const createFirstSuperAdmin: import("convex/server").RegisteredMu
|
|
|
374
388
|
name: string;
|
|
375
389
|
clerkUserId: string;
|
|
376
390
|
}, Promise<import("convex/values").GenericId<"admins">>>;
|
|
391
|
+
/**
|
|
392
|
+
* Admin: Update order status (admin can update any order)
|
|
393
|
+
*/
|
|
394
|
+
export declare const updateOrderStatus: import("convex/server").RegisteredMutation<"public", {
|
|
395
|
+
notes?: string | undefined;
|
|
396
|
+
orderId: import("convex/values").GenericId<"orders">;
|
|
397
|
+
newStatus: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
398
|
+
}, Promise<import("convex/values").GenericId<"orders">>>;
|
|
399
|
+
/**
|
|
400
|
+
* Admin: Delete order (soft delete)
|
|
401
|
+
*/
|
|
402
|
+
export declare const deleteOrder: import("convex/server").RegisteredMutation<"public", {
|
|
403
|
+
orderId: import("convex/values").GenericId<"orders">;
|
|
404
|
+
}, Promise<import("convex/values").GenericId<"orders">>>;
|
|
405
|
+
/**
|
|
406
|
+
* Admin: Get order details (includes full order information with customer and branch)
|
|
407
|
+
*/
|
|
408
|
+
export declare const getOrderDetails: import("convex/server").RegisteredQuery<"public", {
|
|
409
|
+
orderId: import("convex/values").GenericId<"orders">;
|
|
410
|
+
}, Promise<{
|
|
411
|
+
customer: {
|
|
412
|
+
_id: import("convex/values").GenericId<"users">;
|
|
413
|
+
name: string;
|
|
414
|
+
phoneNumber: string;
|
|
415
|
+
email: string | undefined;
|
|
416
|
+
} | null;
|
|
417
|
+
branch: {
|
|
418
|
+
_id: import("convex/values").GenericId<"branches">;
|
|
419
|
+
name: string;
|
|
420
|
+
code: string;
|
|
421
|
+
address: string;
|
|
422
|
+
city: string;
|
|
423
|
+
} | null;
|
|
424
|
+
_id: import("convex/values").GenericId<"orders">;
|
|
425
|
+
_creationTime: number;
|
|
426
|
+
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
427
|
+
customerEmail?: string | undefined;
|
|
428
|
+
estimatedWeight?: number | undefined;
|
|
429
|
+
actualWeight?: number | undefined;
|
|
430
|
+
itemCount?: number | undefined;
|
|
431
|
+
estimatedLoads?: number | undefined;
|
|
432
|
+
whitesSeparate?: boolean | undefined;
|
|
433
|
+
bagCardNumber?: string | undefined;
|
|
434
|
+
notes?: string | undefined;
|
|
435
|
+
deliveryAddress?: string | undefined;
|
|
436
|
+
deliveryPhoneNumber?: string | undefined;
|
|
437
|
+
deliveryHall?: string | undefined;
|
|
438
|
+
deliveryRoom?: string | undefined;
|
|
439
|
+
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
440
|
+
paymentId?: import("convex/values").GenericId<"payments"> | undefined;
|
|
441
|
+
fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
442
|
+
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
443
|
+
createdAt: number;
|
|
444
|
+
isDeleted: boolean;
|
|
445
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
446
|
+
deliveryFee: number;
|
|
447
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
448
|
+
customerPhoneNumber: string;
|
|
449
|
+
orderNumber: string;
|
|
450
|
+
orderType: "walk_in" | "online";
|
|
451
|
+
serviceType: "wash_only" | "wash_and_dry" | "dry_only";
|
|
452
|
+
isDelivery: boolean;
|
|
453
|
+
basePrice: number;
|
|
454
|
+
totalPrice: number;
|
|
455
|
+
finalPrice: number;
|
|
456
|
+
paymentStatus: "pending" | "paid" | "failed" | "refunded";
|
|
457
|
+
updatedAt: number;
|
|
458
|
+
statusHistory: {
|
|
459
|
+
notes?: string | undefined;
|
|
460
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
461
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
462
|
+
status: string;
|
|
463
|
+
changedAt: number;
|
|
464
|
+
}[];
|
|
465
|
+
} | null>>;
|
|
377
466
|
//# sourceMappingURL=admin.d.ts.map
|
package/convex/attendants.d.ts
CHANGED
|
@@ -65,8 +65,8 @@ export declare const getActiveSession: import("convex/server").RegisteredQuery<"
|
|
|
65
65
|
*/
|
|
66
66
|
export declare const getAttendanceHistory: import("convex/server").RegisteredQuery<"public", {
|
|
67
67
|
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
68
|
-
cursor?: string | undefined;
|
|
69
68
|
numItems?: number | undefined;
|
|
69
|
+
cursor?: string | undefined;
|
|
70
70
|
}, Promise<{
|
|
71
71
|
page: {
|
|
72
72
|
_id: import("convex/values").GenericId<"attendanceLogs">;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branch Functions
|
|
3
|
+
*
|
|
4
|
+
* Handles branch information queries for customers and public access.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Get all active branches
|
|
8
|
+
* Public query - can be used by customers and guests
|
|
9
|
+
*/
|
|
10
|
+
export declare const getActive: import("convex/server").RegisteredQuery<"public", {}, Promise<{
|
|
11
|
+
_id: import("convex/values").GenericId<"branches">;
|
|
12
|
+
name: string;
|
|
13
|
+
code: string;
|
|
14
|
+
address: string;
|
|
15
|
+
city: string;
|
|
16
|
+
country: string;
|
|
17
|
+
phoneNumber: string;
|
|
18
|
+
email: string | undefined;
|
|
19
|
+
pricingPerKg: number;
|
|
20
|
+
deliveryFee: number;
|
|
21
|
+
isActive: boolean;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
}[]>>;
|
|
24
|
+
//# sourceMappingURL=branches.d.ts.map
|
package/convex/customers.d.ts
CHANGED
|
@@ -59,8 +59,14 @@ export declare const getProfile: import("convex/server").RegisteredQuery<"public
|
|
|
59
59
|
* Returns empty results if customer not found
|
|
60
60
|
*/
|
|
61
61
|
export declare const getOrders: import("convex/server").RegisteredQuery<"public", {
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
paginationOpts: {
|
|
63
|
+
id?: number;
|
|
64
|
+
endCursor?: string | null;
|
|
65
|
+
maximumRowsRead?: number;
|
|
66
|
+
maximumBytesRead?: number;
|
|
67
|
+
numItems: number;
|
|
68
|
+
cursor: string | null;
|
|
69
|
+
};
|
|
64
70
|
}, Promise<{
|
|
65
71
|
page: never[];
|
|
66
72
|
isDone: boolean;
|
|
@@ -70,6 +76,7 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
70
76
|
_id: import("convex/values").GenericId<"orders">;
|
|
71
77
|
_creationTime: number;
|
|
72
78
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
79
|
+
customerEmail?: string | undefined;
|
|
73
80
|
estimatedWeight?: number | undefined;
|
|
74
81
|
actualWeight?: number | undefined;
|
|
75
82
|
itemCount?: number | undefined;
|
|
@@ -102,9 +109,10 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
102
109
|
updatedAt: number;
|
|
103
110
|
statusHistory: {
|
|
104
111
|
notes?: string | undefined;
|
|
112
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
113
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
105
114
|
status: string;
|
|
106
115
|
changedAt: number;
|
|
107
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
108
116
|
}[];
|
|
109
117
|
}[];
|
|
110
118
|
isDone: boolean;
|
|
@@ -148,6 +156,7 @@ export declare const register: import("convex/server").RegisteredMutation<"publi
|
|
|
148
156
|
* Update customer profile
|
|
149
157
|
*/
|
|
150
158
|
export declare const updateProfile: import("convex/server").RegisteredMutation<"public", {
|
|
159
|
+
phoneNumber?: string | undefined;
|
|
151
160
|
email?: string | undefined;
|
|
152
161
|
name?: string | undefined;
|
|
153
162
|
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
package/convex/loyalty.d.ts
CHANGED
|
@@ -15,15 +15,18 @@ export declare const getBalance: import("convex/server").RegisteredQuery<"public
|
|
|
15
15
|
lastRedeemedAt: number | undefined;
|
|
16
16
|
}>>;
|
|
17
17
|
/**
|
|
18
|
-
* Get loyalty transaction history
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Get loyalty transactions - Paginated
|
|
18
|
+
* Get loyalty transaction history - Paginated
|
|
22
19
|
* Supports usePaginatedQuery for infinite scroll
|
|
23
20
|
*/
|
|
24
21
|
export declare const getTransactions: import("convex/server").RegisteredQuery<"public", {
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
paginationOpts: {
|
|
23
|
+
id?: number;
|
|
24
|
+
endCursor?: string | null;
|
|
25
|
+
maximumRowsRead?: number;
|
|
26
|
+
maximumBytesRead?: number;
|
|
27
|
+
numItems: number;
|
|
28
|
+
cursor: string | null;
|
|
29
|
+
};
|
|
27
30
|
}, Promise<{
|
|
28
31
|
page: {
|
|
29
32
|
_id: import("convex/values").GenericId<"loyaltyTransactions">;
|
|
@@ -41,6 +44,117 @@ export declare const getTransactions: import("convex/server").RegisteredQuery<"p
|
|
|
41
44
|
isDone: boolean;
|
|
42
45
|
continueCursor: string;
|
|
43
46
|
}>>;
|
|
47
|
+
/**
|
|
48
|
+
* Admin: Get all loyalty points balances (paginated)
|
|
49
|
+
*/
|
|
50
|
+
export declare const getAllLoyaltyPoints: import("convex/server").RegisteredQuery<"public", {
|
|
51
|
+
searchQuery?: string | undefined;
|
|
52
|
+
paginationOpts: {
|
|
53
|
+
id?: number;
|
|
54
|
+
endCursor?: string | null;
|
|
55
|
+
maximumRowsRead?: number;
|
|
56
|
+
maximumBytesRead?: number;
|
|
57
|
+
numItems: number;
|
|
58
|
+
cursor: string | null;
|
|
59
|
+
};
|
|
60
|
+
}, Promise<{
|
|
61
|
+
page: never[];
|
|
62
|
+
isDone: boolean;
|
|
63
|
+
continueCursor: null;
|
|
64
|
+
} | {
|
|
65
|
+
page: {
|
|
66
|
+
customer: {
|
|
67
|
+
_id: import("convex/values").GenericId<"users">;
|
|
68
|
+
name: string;
|
|
69
|
+
phoneNumber: string;
|
|
70
|
+
email: string | undefined;
|
|
71
|
+
} | null;
|
|
72
|
+
_id: import("convex/values").GenericId<"loyaltyPoints">;
|
|
73
|
+
_creationTime: number;
|
|
74
|
+
lastEarnedAt?: number | undefined;
|
|
75
|
+
lastRedeemedAt?: number | undefined;
|
|
76
|
+
isDeleted: boolean;
|
|
77
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
78
|
+
points: number;
|
|
79
|
+
totalEarned: number;
|
|
80
|
+
totalRedeemed: number;
|
|
81
|
+
}[];
|
|
82
|
+
isDone: boolean;
|
|
83
|
+
continueCursor: string;
|
|
84
|
+
}>>;
|
|
85
|
+
/**
|
|
86
|
+
* Admin: Get all loyalty transactions (paginated)
|
|
87
|
+
*/
|
|
88
|
+
export declare const getAllTransactions: import("convex/server").RegisteredQuery<"public", {
|
|
89
|
+
type?: "earned" | "redeemed" | "adjusted" | undefined;
|
|
90
|
+
customerId?: import("convex/values").GenericId<"users"> | undefined;
|
|
91
|
+
paginationOpts: {
|
|
92
|
+
id?: number;
|
|
93
|
+
endCursor?: string | null;
|
|
94
|
+
maximumRowsRead?: number;
|
|
95
|
+
maximumBytesRead?: number;
|
|
96
|
+
numItems: number;
|
|
97
|
+
cursor: string | null;
|
|
98
|
+
};
|
|
99
|
+
}, Promise<{
|
|
100
|
+
page: {
|
|
101
|
+
customer: {
|
|
102
|
+
_id: import("convex/values").GenericId<"users">;
|
|
103
|
+
name: string;
|
|
104
|
+
phoneNumber: string;
|
|
105
|
+
email: string | undefined;
|
|
106
|
+
} | null;
|
|
107
|
+
order: {
|
|
108
|
+
_id: import("convex/values").GenericId<"orders">;
|
|
109
|
+
orderNumber: string;
|
|
110
|
+
} | null;
|
|
111
|
+
adjustedBy: {
|
|
112
|
+
_id: import("convex/values").GenericId<"admins">;
|
|
113
|
+
name: string;
|
|
114
|
+
email: string;
|
|
115
|
+
} | null;
|
|
116
|
+
_id: import("convex/values").GenericId<"loyaltyTransactions">;
|
|
117
|
+
_creationTime: number;
|
|
118
|
+
createdBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
119
|
+
orderId?: import("convex/values").GenericId<"orders"> | undefined;
|
|
120
|
+
description?: string | undefined;
|
|
121
|
+
type: "earned" | "redeemed" | "expired" | "adjusted";
|
|
122
|
+
createdAt: number;
|
|
123
|
+
isDeleted: boolean;
|
|
124
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
125
|
+
points: number;
|
|
126
|
+
balanceAfter: number;
|
|
127
|
+
}[];
|
|
128
|
+
isDone: boolean;
|
|
129
|
+
continueCursor: string;
|
|
130
|
+
}>>;
|
|
131
|
+
/**
|
|
132
|
+
* Admin: Get loyalty points for a specific customer
|
|
133
|
+
*/
|
|
134
|
+
export declare const getCustomerLoyaltyPoints: import("convex/server").RegisteredQuery<"public", {
|
|
135
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
136
|
+
}, Promise<{
|
|
137
|
+
points: number;
|
|
138
|
+
totalEarned: number;
|
|
139
|
+
totalRedeemed: number;
|
|
140
|
+
lastEarnedAt: undefined;
|
|
141
|
+
lastRedeemedAt: undefined;
|
|
142
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
143
|
+
customer?: undefined;
|
|
144
|
+
} | {
|
|
145
|
+
points: number;
|
|
146
|
+
totalEarned: number;
|
|
147
|
+
totalRedeemed: number;
|
|
148
|
+
lastEarnedAt: number | undefined;
|
|
149
|
+
lastRedeemedAt: number | undefined;
|
|
150
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
151
|
+
customer: {
|
|
152
|
+
_id: import("convex/values").GenericId<"users">;
|
|
153
|
+
name: string;
|
|
154
|
+
phoneNumber: string;
|
|
155
|
+
email: string | undefined;
|
|
156
|
+
} | null;
|
|
157
|
+
}>>;
|
|
44
158
|
/**
|
|
45
159
|
* Earn loyalty points (internal - called when order is completed)
|
|
46
160
|
*/
|
|
@@ -48,7 +162,17 @@ export declare const earnPoints: import("convex/server").RegisteredMutation<"int
|
|
|
48
162
|
customerId: import("convex/values").GenericId<"users">;
|
|
49
163
|
orderId: import("convex/values").GenericId<"orders">;
|
|
50
164
|
points: number;
|
|
51
|
-
}, Promise<
|
|
165
|
+
}, Promise<{
|
|
166
|
+
skipped: boolean;
|
|
167
|
+
reason: string;
|
|
168
|
+
success?: undefined;
|
|
169
|
+
pointsAwarded?: undefined;
|
|
170
|
+
} | {
|
|
171
|
+
success: boolean;
|
|
172
|
+
pointsAwarded: number;
|
|
173
|
+
skipped?: undefined;
|
|
174
|
+
reason?: undefined;
|
|
175
|
+
}>>;
|
|
52
176
|
/**
|
|
53
177
|
* Redeem loyalty points for free wash
|
|
54
178
|
*/
|
|
@@ -1,58 +1,39 @@
|
|
|
1
|
+
import { Id } from "./_generated/dataModel";
|
|
1
2
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Handles creating, reading, and managing system notifications
|
|
5
|
-
* for customers, attendants, and admins.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Get notifications for current user - Paginated
|
|
9
|
-
* Supports usePaginatedQuery for infinite scroll
|
|
3
|
+
* Get notifications for current user
|
|
4
|
+
* Returns empty array if user not found
|
|
10
5
|
*/
|
|
11
6
|
export declare const getMyNotifications: import("convex/server").RegisteredQuery<"public", {
|
|
12
7
|
type?: "info" | "success" | "warning" | "error" | "order" | "payment" | "system" | undefined;
|
|
13
8
|
isRead?: boolean | undefined;
|
|
14
|
-
|
|
15
|
-
id?: number;
|
|
16
|
-
endCursor?: string | null;
|
|
17
|
-
maximumRowsRead?: number;
|
|
18
|
-
maximumBytesRead?: number;
|
|
19
|
-
numItems: number;
|
|
20
|
-
cursor: string | null;
|
|
21
|
-
};
|
|
9
|
+
limit?: number | undefined;
|
|
22
10
|
}, Promise<{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
title: string;
|
|
47
|
-
message: string;
|
|
48
|
-
priority: "low" | "normal" | "high" | "urgent";
|
|
49
|
-
isRead: boolean;
|
|
50
|
-
}[];
|
|
51
|
-
isDone: boolean;
|
|
52
|
-
continueCursor: string;
|
|
53
|
-
}>>;
|
|
11
|
+
_id: Id<"notifications">;
|
|
12
|
+
_creationTime: number;
|
|
13
|
+
recipientId: string;
|
|
14
|
+
recipientType: string;
|
|
15
|
+
title: string;
|
|
16
|
+
message: string;
|
|
17
|
+
type: string;
|
|
18
|
+
priority: string;
|
|
19
|
+
isRead: boolean;
|
|
20
|
+
createdAt: number;
|
|
21
|
+
isDeleted: boolean;
|
|
22
|
+
readAt?: number;
|
|
23
|
+
actionUrl?: string;
|
|
24
|
+
actionLabel?: string;
|
|
25
|
+
entityType?: string;
|
|
26
|
+
entityId?: string;
|
|
27
|
+
senderId?: string;
|
|
28
|
+
senderType?: string;
|
|
29
|
+
branchId?: Id<"branches">;
|
|
30
|
+
expiresAt?: number;
|
|
31
|
+
scheduledFor?: number;
|
|
32
|
+
sentAt?: number;
|
|
33
|
+
}[]>>;
|
|
54
34
|
/**
|
|
55
35
|
* Get unread notification count for current user
|
|
36
|
+
* Returns 0 if user not found
|
|
56
37
|
*/
|
|
57
38
|
export declare const getUnreadCount: import("convex/server").RegisteredQuery<"public", {}, Promise<number>>;
|
|
58
39
|
/**
|
|
@@ -142,6 +123,29 @@ export declare const createNotification: import("convex/server").RegisteredMutat
|
|
|
142
123
|
notificationId: import("convex/values").GenericId<"notifications">;
|
|
143
124
|
success: boolean;
|
|
144
125
|
}>>;
|
|
126
|
+
/**
|
|
127
|
+
* Internal mutation to create notification (can be called from other mutations)
|
|
128
|
+
*/
|
|
129
|
+
export declare const internalCreateNotification: import("convex/server").RegisteredMutation<"internal", {
|
|
130
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
131
|
+
entityType?: string | undefined;
|
|
132
|
+
entityId?: string | undefined;
|
|
133
|
+
recipientId?: string | undefined;
|
|
134
|
+
actionUrl?: string | undefined;
|
|
135
|
+
actionLabel?: string | undefined;
|
|
136
|
+
priority?: "low" | "normal" | "high" | "urgent" | undefined;
|
|
137
|
+
senderId?: string | undefined;
|
|
138
|
+
senderType?: "admin" | "attendant" | "system" | undefined;
|
|
139
|
+
expiresAt?: number | undefined;
|
|
140
|
+
scheduledFor?: number | undefined;
|
|
141
|
+
type: "info" | "success" | "warning" | "error" | "order" | "payment" | "system";
|
|
142
|
+
recipientType: "admin" | "customer" | "attendant" | "all";
|
|
143
|
+
title: string;
|
|
144
|
+
message: string;
|
|
145
|
+
}, Promise<{
|
|
146
|
+
notificationId: import("convex/values").GenericId<"notifications">;
|
|
147
|
+
success: boolean;
|
|
148
|
+
}>>;
|
|
145
149
|
/**
|
|
146
150
|
* Delete notification (admin only - hard delete)
|
|
147
151
|
*/
|
package/convex/orders.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export declare const getByOrderNumber: import("convex/server").RegisteredQuery<"
|
|
|
12
12
|
_id: import("convex/values").GenericId<"orders">;
|
|
13
13
|
_creationTime: number;
|
|
14
14
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
15
|
+
customerEmail?: string | undefined;
|
|
15
16
|
estimatedWeight?: number | undefined;
|
|
16
17
|
actualWeight?: number | undefined;
|
|
17
18
|
itemCount?: number | undefined;
|
|
@@ -44,9 +45,10 @@ export declare const getByOrderNumber: import("convex/server").RegisteredQuery<"
|
|
|
44
45
|
updatedAt: number;
|
|
45
46
|
statusHistory: {
|
|
46
47
|
notes?: string | undefined;
|
|
48
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
49
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
47
50
|
status: string;
|
|
48
51
|
changedAt: number;
|
|
49
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
50
52
|
}[];
|
|
51
53
|
} | null>>;
|
|
52
54
|
/**
|
|
@@ -59,6 +61,7 @@ export declare const getByCustomer: import("convex/server").RegisteredQuery<"pub
|
|
|
59
61
|
_id: import("convex/values").GenericId<"orders">;
|
|
60
62
|
_creationTime: number;
|
|
61
63
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
64
|
+
customerEmail?: string | undefined;
|
|
62
65
|
estimatedWeight?: number | undefined;
|
|
63
66
|
actualWeight?: number | undefined;
|
|
64
67
|
itemCount?: number | undefined;
|
|
@@ -91,9 +94,10 @@ export declare const getByCustomer: import("convex/server").RegisteredQuery<"pub
|
|
|
91
94
|
updatedAt: number;
|
|
92
95
|
statusHistory: {
|
|
93
96
|
notes?: string | undefined;
|
|
97
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
98
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
94
99
|
status: string;
|
|
95
100
|
changedAt: number;
|
|
96
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
97
101
|
}[];
|
|
98
102
|
}[]>>;
|
|
99
103
|
/**
|
|
@@ -107,6 +111,7 @@ export declare const getByBranch: import("convex/server").RegisteredQuery<"publi
|
|
|
107
111
|
_id: import("convex/values").GenericId<"orders">;
|
|
108
112
|
_creationTime: number;
|
|
109
113
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
114
|
+
customerEmail?: string | undefined;
|
|
110
115
|
estimatedWeight?: number | undefined;
|
|
111
116
|
actualWeight?: number | undefined;
|
|
112
117
|
itemCount?: number | undefined;
|
|
@@ -139,9 +144,10 @@ export declare const getByBranch: import("convex/server").RegisteredQuery<"publi
|
|
|
139
144
|
updatedAt: number;
|
|
140
145
|
statusHistory: {
|
|
141
146
|
notes?: string | undefined;
|
|
147
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
148
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
142
149
|
status: string;
|
|
143
150
|
changedAt: number;
|
|
144
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
145
151
|
}[];
|
|
146
152
|
}[]>>;
|
|
147
153
|
/**
|
|
@@ -153,6 +159,7 @@ export declare const getPending: import("convex/server").RegisteredQuery<"public
|
|
|
153
159
|
_id: import("convex/values").GenericId<"orders">;
|
|
154
160
|
_creationTime: number;
|
|
155
161
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
162
|
+
customerEmail?: string | undefined;
|
|
156
163
|
estimatedWeight?: number | undefined;
|
|
157
164
|
actualWeight?: number | undefined;
|
|
158
165
|
itemCount?: number | undefined;
|
|
@@ -185,15 +192,17 @@ export declare const getPending: import("convex/server").RegisteredQuery<"public
|
|
|
185
192
|
updatedAt: number;
|
|
186
193
|
statusHistory: {
|
|
187
194
|
notes?: string | undefined;
|
|
195
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
196
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
188
197
|
status: string;
|
|
189
198
|
changedAt: number;
|
|
190
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
191
199
|
}[];
|
|
192
200
|
}[]>>;
|
|
193
201
|
/**
|
|
194
202
|
* Create walk-in order (attendant creates at POS)
|
|
195
203
|
*/
|
|
196
204
|
export declare const createWalkIn: import("convex/server").RegisteredMutation<"public", {
|
|
205
|
+
customerEmail?: string | undefined;
|
|
197
206
|
bagCardNumber?: string | undefined;
|
|
198
207
|
notes?: string | undefined;
|
|
199
208
|
deliveryAddress?: string | undefined;
|
|
@@ -220,6 +229,7 @@ export declare const createOnline: import("convex/server").RegisteredMutation<"p
|
|
|
220
229
|
deliveryRoom?: string | undefined;
|
|
221
230
|
branchId: import("convex/values").GenericId<"branches">;
|
|
222
231
|
customerPhoneNumber: string;
|
|
232
|
+
customerEmail: string;
|
|
223
233
|
serviceType: "wash_only" | "wash_and_dry" | "dry_only";
|
|
224
234
|
estimatedWeight: number;
|
|
225
235
|
itemCount: number;
|
|
@@ -286,6 +296,7 @@ export declare const getByDateRange: import("convex/server").RegisteredQuery<"pu
|
|
|
286
296
|
_id: import("convex/values").GenericId<"orders">;
|
|
287
297
|
_creationTime: number;
|
|
288
298
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
299
|
+
customerEmail?: string | undefined;
|
|
289
300
|
estimatedWeight?: number | undefined;
|
|
290
301
|
actualWeight?: number | undefined;
|
|
291
302
|
itemCount?: number | undefined;
|
|
@@ -318,9 +329,10 @@ export declare const getByDateRange: import("convex/server").RegisteredQuery<"pu
|
|
|
318
329
|
updatedAt: number;
|
|
319
330
|
statusHistory: {
|
|
320
331
|
notes?: string | undefined;
|
|
332
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
333
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
321
334
|
status: string;
|
|
322
335
|
changedAt: number;
|
|
323
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
324
336
|
}[];
|
|
325
337
|
}[]>>;
|
|
326
338
|
//# sourceMappingURL=orders.d.ts.map
|
package/convex/payments.d.ts
CHANGED
|
@@ -25,26 +25,81 @@ export declare const getByOrder: import("convex/server").RegisteredQuery<"public
|
|
|
25
25
|
currency: string;
|
|
26
26
|
} | null>>;
|
|
27
27
|
/**
|
|
28
|
-
* Get payment history by customer
|
|
28
|
+
* Get payment history by customer - Paginated
|
|
29
|
+
* Supports usePaginatedQuery for infinite scroll
|
|
29
30
|
*/
|
|
30
31
|
export declare const getByCustomer: import("convex/server").RegisteredQuery<"public", {
|
|
31
|
-
|
|
32
|
+
paginationOpts: {
|
|
33
|
+
id?: number;
|
|
34
|
+
endCursor?: string | null;
|
|
35
|
+
maximumRowsRead?: number;
|
|
36
|
+
maximumBytesRead?: number;
|
|
37
|
+
numItems: number;
|
|
38
|
+
cursor: string | null;
|
|
39
|
+
};
|
|
32
40
|
}, Promise<{
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
page: {
|
|
42
|
+
order: {
|
|
43
|
+
_id: import("convex/values").GenericId<"orders">;
|
|
44
|
+
_creationTime: number;
|
|
45
|
+
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
46
|
+
customerEmail?: string | undefined;
|
|
47
|
+
estimatedWeight?: number | undefined;
|
|
48
|
+
actualWeight?: number | undefined;
|
|
49
|
+
itemCount?: number | undefined;
|
|
50
|
+
estimatedLoads?: number | undefined;
|
|
51
|
+
whitesSeparate?: boolean | undefined;
|
|
52
|
+
bagCardNumber?: string | undefined;
|
|
53
|
+
notes?: string | undefined;
|
|
54
|
+
deliveryAddress?: string | undefined;
|
|
55
|
+
deliveryPhoneNumber?: string | undefined;
|
|
56
|
+
deliveryHall?: string | undefined;
|
|
57
|
+
deliveryRoom?: string | undefined;
|
|
58
|
+
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
59
|
+
paymentId?: import("convex/values").GenericId<"payments"> | undefined;
|
|
60
|
+
fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
61
|
+
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
62
|
+
createdAt: number;
|
|
63
|
+
isDeleted: boolean;
|
|
64
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
65
|
+
deliveryFee: number;
|
|
66
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
67
|
+
customerPhoneNumber: string;
|
|
68
|
+
orderNumber: string;
|
|
69
|
+
orderType: "walk_in" | "online";
|
|
70
|
+
serviceType: "wash_only" | "wash_and_dry" | "dry_only";
|
|
71
|
+
isDelivery: boolean;
|
|
72
|
+
basePrice: number;
|
|
73
|
+
totalPrice: number;
|
|
74
|
+
finalPrice: number;
|
|
75
|
+
paymentStatus: "pending" | "paid" | "failed" | "refunded";
|
|
76
|
+
updatedAt: number;
|
|
77
|
+
statusHistory: {
|
|
78
|
+
notes?: string | undefined;
|
|
79
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
80
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
81
|
+
status: string;
|
|
82
|
+
changedAt: number;
|
|
83
|
+
}[];
|
|
84
|
+
} | null;
|
|
85
|
+
_id: import("convex/values").GenericId<"payments">;
|
|
86
|
+
_creationTime: number;
|
|
87
|
+
gatewayTransactionId?: string | undefined;
|
|
88
|
+
gatewayResponse?: string | undefined;
|
|
89
|
+
completedAt?: number | undefined;
|
|
90
|
+
processedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
91
|
+
status: "pending" | "completed" | "failed" | "refunded" | "processing";
|
|
92
|
+
createdAt: number;
|
|
93
|
+
isDeleted: boolean;
|
|
94
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
95
|
+
paymentMethod: "mobile_money" | "card" | "cash";
|
|
96
|
+
orderId: import("convex/values").GenericId<"orders">;
|
|
97
|
+
amount: number;
|
|
98
|
+
currency: string;
|
|
99
|
+
}[];
|
|
100
|
+
isDone: boolean;
|
|
101
|
+
continueCursor: string;
|
|
102
|
+
}>>;
|
|
48
103
|
/**
|
|
49
104
|
* Create payment record
|
|
50
105
|
*/
|
|
@@ -91,14 +146,99 @@ export declare const refund: import("convex/server").RegisteredMutation<"public"
|
|
|
91
146
|
* Supports usePaginatedQuery for infinite scroll
|
|
92
147
|
*/
|
|
93
148
|
export declare const getTransactionHistory: import("convex/server").RegisteredQuery<"public", {
|
|
149
|
+
status?: "pending" | "completed" | "failed" | "refunded" | "processing" | undefined;
|
|
94
150
|
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
95
151
|
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
96
|
-
cursor?: string | undefined;
|
|
97
|
-
numItems?: number | undefined;
|
|
98
152
|
startDate?: number | undefined;
|
|
99
153
|
endDate?: number | undefined;
|
|
154
|
+
paginationOpts: {
|
|
155
|
+
id?: number;
|
|
156
|
+
endCursor?: string | null;
|
|
157
|
+
maximumRowsRead?: number;
|
|
158
|
+
maximumBytesRead?: number;
|
|
159
|
+
numItems: number;
|
|
160
|
+
cursor: string | null;
|
|
161
|
+
};
|
|
100
162
|
}, Promise<{
|
|
101
163
|
page: {
|
|
164
|
+
order: {
|
|
165
|
+
_id: import("convex/values").GenericId<"orders">;
|
|
166
|
+
_creationTime: number;
|
|
167
|
+
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
168
|
+
customerEmail?: string | undefined;
|
|
169
|
+
estimatedWeight?: number | undefined;
|
|
170
|
+
actualWeight?: number | undefined;
|
|
171
|
+
itemCount?: number | undefined;
|
|
172
|
+
estimatedLoads?: number | undefined;
|
|
173
|
+
whitesSeparate?: boolean | undefined;
|
|
174
|
+
bagCardNumber?: string | undefined;
|
|
175
|
+
notes?: string | undefined;
|
|
176
|
+
deliveryAddress?: string | undefined;
|
|
177
|
+
deliveryPhoneNumber?: string | undefined;
|
|
178
|
+
deliveryHall?: string | undefined;
|
|
179
|
+
deliveryRoom?: string | undefined;
|
|
180
|
+
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
181
|
+
paymentId?: import("convex/values").GenericId<"payments"> | undefined;
|
|
182
|
+
fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
183
|
+
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
184
|
+
createdAt: number;
|
|
185
|
+
isDeleted: boolean;
|
|
186
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
187
|
+
deliveryFee: number;
|
|
188
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
189
|
+
customerPhoneNumber: string;
|
|
190
|
+
orderNumber: string;
|
|
191
|
+
orderType: "walk_in" | "online";
|
|
192
|
+
serviceType: "wash_only" | "wash_and_dry" | "dry_only";
|
|
193
|
+
isDelivery: boolean;
|
|
194
|
+
basePrice: number;
|
|
195
|
+
totalPrice: number;
|
|
196
|
+
finalPrice: number;
|
|
197
|
+
paymentStatus: "pending" | "paid" | "failed" | "refunded";
|
|
198
|
+
updatedAt: number;
|
|
199
|
+
statusHistory: {
|
|
200
|
+
notes?: string | undefined;
|
|
201
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
202
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
203
|
+
status: string;
|
|
204
|
+
changedAt: number;
|
|
205
|
+
}[];
|
|
206
|
+
} | null;
|
|
207
|
+
customer: {
|
|
208
|
+
_id: import("convex/values").GenericId<"users">;
|
|
209
|
+
_creationTime: number;
|
|
210
|
+
email?: string | undefined;
|
|
211
|
+
clerkUserId?: string | undefined;
|
|
212
|
+
status?: "active" | "blocked" | "suspended" | "restricted" | undefined;
|
|
213
|
+
statusNote?: string | undefined;
|
|
214
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
215
|
+
statusChangedAt?: number | undefined;
|
|
216
|
+
lastLoginAt?: number | undefined;
|
|
217
|
+
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
218
|
+
phoneNumber: string;
|
|
219
|
+
name: string;
|
|
220
|
+
isRegistered: boolean;
|
|
221
|
+
isVerified: boolean;
|
|
222
|
+
createdAt: number;
|
|
223
|
+
isDeleted: boolean;
|
|
224
|
+
} | null;
|
|
225
|
+
branch: {
|
|
226
|
+
_id: import("convex/values").GenericId<"branches">;
|
|
227
|
+
_creationTime: number;
|
|
228
|
+
email?: string | undefined;
|
|
229
|
+
phoneNumber: string;
|
|
230
|
+
name: string;
|
|
231
|
+
createdAt: number;
|
|
232
|
+
isDeleted: boolean;
|
|
233
|
+
isActive: boolean;
|
|
234
|
+
code: string;
|
|
235
|
+
address: string;
|
|
236
|
+
city: string;
|
|
237
|
+
country: string;
|
|
238
|
+
pricingPerKg: number;
|
|
239
|
+
deliveryFee: number;
|
|
240
|
+
createdBy: import("convex/values").GenericId<"admins">;
|
|
241
|
+
} | null;
|
|
102
242
|
_id: import("convex/values").GenericId<"payments">;
|
|
103
243
|
_creationTime: number;
|
|
104
244
|
gatewayTransactionId?: string | undefined;
|
package/convex/schema.d.ts
CHANGED
|
@@ -124,6 +124,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
124
124
|
}, {}, {}>;
|
|
125
125
|
orders: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
126
126
|
createdBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
127
|
+
customerEmail?: string | undefined;
|
|
127
128
|
estimatedWeight?: number | undefined;
|
|
128
129
|
actualWeight?: number | undefined;
|
|
129
130
|
itemCount?: number | undefined;
|
|
@@ -156,13 +157,15 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
156
157
|
updatedAt: number;
|
|
157
158
|
statusHistory: {
|
|
158
159
|
notes?: string | undefined;
|
|
160
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
161
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
159
162
|
status: string;
|
|
160
163
|
changedAt: number;
|
|
161
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
162
164
|
}[];
|
|
163
165
|
}, {
|
|
164
166
|
customerId: import("convex/values").VId<import("convex/values").GenericId<"users">, "required">;
|
|
165
167
|
customerPhoneNumber: import("convex/values").VString<string, "required">;
|
|
168
|
+
customerEmail: import("convex/values").VString<string | undefined, "optional">;
|
|
166
169
|
branchId: import("convex/values").VId<import("convex/values").GenericId<"branches">, "required">;
|
|
167
170
|
orderNumber: import("convex/values").VString<string, "required">;
|
|
168
171
|
orderType: import("convex/values").VUnion<"walk_in" | "online", [import("convex/values").VLiteral<"walk_in", "required">, import("convex/values").VLiteral<"online", "required">], "required", never>;
|
|
@@ -193,26 +196,30 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
193
196
|
fulfilledBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
|
|
194
197
|
statusHistory: import("convex/values").VArray<{
|
|
195
198
|
notes?: string | undefined;
|
|
199
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
200
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
196
201
|
status: string;
|
|
197
202
|
changedAt: number;
|
|
198
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
199
203
|
}[], import("convex/values").VObject<{
|
|
200
204
|
notes?: string | undefined;
|
|
205
|
+
changedBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
206
|
+
changedByAdmin?: import("convex/values").GenericId<"admins"> | undefined;
|
|
201
207
|
status: string;
|
|
202
208
|
changedAt: number;
|
|
203
|
-
changedBy: import("convex/values").GenericId<"attendants">;
|
|
204
209
|
}, {
|
|
205
210
|
status: import("convex/values").VString<string, "required">;
|
|
206
211
|
changedAt: import("convex/values").VFloat64<number, "required">;
|
|
207
|
-
changedBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"
|
|
212
|
+
changedBy: import("convex/values").VId<import("convex/values").GenericId<"attendants"> | undefined, "optional">;
|
|
213
|
+
changedByAdmin: import("convex/values").VId<import("convex/values").GenericId<"admins"> | undefined, "optional">;
|
|
208
214
|
notes: import("convex/values").VString<string | undefined, "optional">;
|
|
209
|
-
}, "required", "status" | "notes" | "changedAt" | "changedBy">, "required">;
|
|
215
|
+
}, "required", "status" | "notes" | "changedAt" | "changedBy" | "changedByAdmin">, "required">;
|
|
210
216
|
isDeleted: import("convex/values").VBoolean<boolean, "required">;
|
|
211
|
-
}, "required", "status" | "createdAt" | "isDeleted" | "branchId" | "deliveryFee" | "createdBy" | "customerId" | "customerPhoneNumber" | "orderNumber" | "orderType" | "serviceType" | "estimatedWeight" | "actualWeight" | "itemCount" | "estimatedLoads" | "whitesSeparate" | "bagCardNumber" | "notes" | "isDelivery" | "deliveryAddress" | "deliveryPhoneNumber" | "deliveryHall" | "deliveryRoom" | "basePrice" | "totalPrice" | "finalPrice" | "paymentStatus" | "paymentMethod" | "paymentId" | "updatedAt" | "fulfilledBy" | "statusHistory">, {
|
|
217
|
+
}, "required", "status" | "createdAt" | "isDeleted" | "branchId" | "deliveryFee" | "createdBy" | "customerId" | "customerPhoneNumber" | "customerEmail" | "orderNumber" | "orderType" | "serviceType" | "estimatedWeight" | "actualWeight" | "itemCount" | "estimatedLoads" | "whitesSeparate" | "bagCardNumber" | "notes" | "isDelivery" | "deliveryAddress" | "deliveryPhoneNumber" | "deliveryHall" | "deliveryRoom" | "basePrice" | "totalPrice" | "finalPrice" | "paymentStatus" | "paymentMethod" | "paymentId" | "updatedAt" | "fulfilledBy" | "statusHistory">, {
|
|
212
218
|
by_customer: ["customerId", "_creationTime"];
|
|
213
219
|
by_branch: ["branchId", "_creationTime"];
|
|
214
220
|
by_status: ["status", "_creationTime"];
|
|
215
221
|
by_phone: ["customerPhoneNumber", "_creationTime"];
|
|
222
|
+
by_email: ["customerEmail", "_creationTime"];
|
|
216
223
|
by_order_number: ["orderNumber", "_creationTime"];
|
|
217
224
|
by_created: ["createdAt", "_creationTime"];
|
|
218
225
|
by_fulfilled_by: ["fulfilledBy", "_creationTime"];
|
|
@@ -292,6 +299,7 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
292
299
|
by_customer: ["customerId", "_creationTime"];
|
|
293
300
|
by_order: ["orderId", "_creationTime"];
|
|
294
301
|
by_created: ["createdAt", "_creationTime"];
|
|
302
|
+
by_type: ["type", "_creationTime"];
|
|
295
303
|
}, {}, {}>;
|
|
296
304
|
attendanceLogs: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
297
305
|
clockOutAt?: number | undefined;
|
|
@@ -496,6 +504,21 @@ declare const _default: import("convex/server").SchemaDefinition<{
|
|
|
496
504
|
by_branch: ["branchId", "_creationTime"];
|
|
497
505
|
by_entity: ["entityType", "entityId", "_creationTime"];
|
|
498
506
|
}, {}, {}>;
|
|
507
|
+
notificationReadStatus: import("convex/server").TableDefinition<import("convex/values").VObject<{
|
|
508
|
+
readAt: number;
|
|
509
|
+
notificationId: import("convex/values").GenericId<"notifications">;
|
|
510
|
+
userId: string;
|
|
511
|
+
userType: "admin" | "customer" | "attendant";
|
|
512
|
+
}, {
|
|
513
|
+
notificationId: import("convex/values").VId<import("convex/values").GenericId<"notifications">, "required">;
|
|
514
|
+
userId: import("convex/values").VString<string, "required">;
|
|
515
|
+
userType: import("convex/values").VUnion<"admin" | "customer" | "attendant", [import("convex/values").VLiteral<"customer", "required">, import("convex/values").VLiteral<"attendant", "required">, import("convex/values").VLiteral<"admin", "required">], "required", never>;
|
|
516
|
+
readAt: import("convex/values").VFloat64<number, "required">;
|
|
517
|
+
}, "required", "readAt" | "notificationId" | "userId" | "userType">, {
|
|
518
|
+
by_notification: ["notificationId", "_creationTime"];
|
|
519
|
+
by_user: ["userId", "userType", "_creationTime"];
|
|
520
|
+
by_notification_user: ["notificationId", "userId", "userType", "_creationTime"];
|
|
521
|
+
}, {}, {}>;
|
|
499
522
|
}, true>;
|
|
500
523
|
export default _default;
|
|
501
524
|
//# sourceMappingURL=schema.d.ts.map
|
package/convex/vouchers.d.ts
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export declare const getAll: import("convex/server").RegisteredQuery<"public", {
|
|
10
10
|
includeInactive?: boolean | undefined;
|
|
11
|
-
cursor?: string | undefined;
|
|
12
11
|
numItems?: number | undefined;
|
|
12
|
+
cursor?: string | undefined;
|
|
13
13
|
}, Promise<{
|
|
14
14
|
page: {
|
|
15
15
|
_id: import("convex/values").GenericId<"vouchers">;
|
|
@@ -165,8 +165,8 @@ export declare const applyToOrder: import("convex/server").RegisteredMutation<"p
|
|
|
165
165
|
*/
|
|
166
166
|
export declare const getUsageHistory: import("convex/server").RegisteredQuery<"public", {
|
|
167
167
|
voucherId?: import("convex/values").GenericId<"vouchers"> | undefined;
|
|
168
|
-
cursor?: string | undefined;
|
|
169
168
|
numItems?: number | undefined;
|
|
169
|
+
cursor?: string | undefined;
|
|
170
170
|
}, Promise<{
|
|
171
171
|
page: {
|
|
172
172
|
_id: import("convex/values").GenericId<"voucherUsages">;
|