@devlider001/washlab-backend 1.0.3 → 1.0.5
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 +6 -0
- package/convex/admin.d.ts +129 -4
- package/convex/analytics.d.ts +87 -0
- package/convex/attendants.d.ts +40 -0
- package/convex/audit.d.ts +39 -0
- package/convex/customers.d.ts +69 -1
- package/convex/lib/auth.d.ts +4 -0
- package/convex/loyalty.d.ts +1 -1
- package/convex/notifications.d.ts +170 -0
- package/convex/orders.d.ts +80 -4
- package/convex/payments.d.ts +47 -2
- package/convex/resources.d.ts +31 -0
- package/convex/schema.d.ts +141 -9
- package/convex/vouchers.d.ts +187 -0
- package/dist/convex/admin.d.ts +377 -0
- package/dist/convex/admin.d.ts.map +1 -0
- package/dist/convex/admin.js +959 -0
- package/dist/convex/admin.js.map +1 -0
- package/dist/convex/analytics.d.ts +87 -0
- package/dist/convex/analytics.d.ts.map +1 -0
- package/dist/convex/analytics.js +361 -0
- package/dist/convex/analytics.js.map +1 -0
- package/dist/convex/attendants.d.ts +140 -0
- package/dist/convex/attendants.d.ts.map +1 -0
- package/dist/convex/attendants.js +337 -0
- package/dist/convex/attendants.js.map +1 -0
- package/dist/convex/audit.d.ts +158 -0
- package/dist/convex/audit.d.ts.map +1 -0
- package/dist/convex/audit.js +184 -0
- package/dist/convex/audit.js.map +1 -0
- package/dist/convex/clerk.d.ts +53 -0
- package/dist/convex/clerk.d.ts.map +1 -0
- package/dist/convex/clerk.js +316 -0
- package/dist/convex/clerk.js.map +1 -0
- package/dist/convex/customers.d.ts +224 -0
- package/dist/convex/customers.d.ts.map +1 -0
- package/dist/convex/customers.js +504 -0
- package/dist/convex/customers.js.map +1 -0
- package/dist/convex/http.d.ts +3 -0
- package/dist/convex/http.d.ts.map +1 -0
- package/dist/convex/http.js +115 -0
- package/dist/convex/http.js.map +1 -0
- package/dist/convex/lib/audit.d.ts +36 -0
- package/dist/convex/lib/audit.d.ts.map +1 -0
- package/dist/convex/lib/audit.js +59 -0
- package/dist/convex/lib/audit.js.map +1 -0
- package/dist/convex/lib/auth.d.ts +96 -0
- package/dist/convex/lib/auth.d.ts.map +1 -0
- package/dist/convex/lib/auth.js +94 -0
- package/dist/convex/lib/auth.js.map +1 -0
- package/dist/convex/lib/utils.d.ts +38 -0
- package/dist/convex/lib/utils.d.ts.map +1 -0
- package/dist/convex/lib/utils.js +71 -0
- package/dist/convex/lib/utils.js.map +1 -0
- package/dist/convex/loyalty.d.ts +82 -0
- package/dist/convex/loyalty.d.ts.map +1 -0
- package/dist/convex/loyalty.js +286 -0
- package/dist/convex/loyalty.js.map +1 -0
- package/dist/convex/orders.d.ts +326 -0
- package/dist/convex/orders.d.ts.map +1 -0
- package/dist/convex/orders.js +570 -0
- package/dist/convex/orders.js.map +1 -0
- package/dist/convex/payments.d.ts +134 -0
- package/dist/convex/payments.d.ts.map +1 -0
- package/dist/convex/payments.js +360 -0
- package/dist/convex/payments.js.map +1 -0
- package/dist/convex/resources.d.ts +119 -0
- package/dist/convex/resources.d.ts.map +1 -0
- package/dist/convex/resources.js +283 -0
- package/dist/convex/resources.js.map +1 -0
- package/dist/convex/schema.d.ts +450 -0
- package/dist/convex/schema.d.ts.map +1 -0
- package/dist/convex/schema.js +347 -0
- package/dist/convex/schema.js.map +1 -0
- package/dist/convex/vouchers.d.ts +187 -0
- package/dist/convex/vouchers.d.ts.map +1 -0
- package/dist/convex/vouchers.js +464 -0
- package/dist/convex/vouchers.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/package.json +4 -3
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
import type * as admin from "../admin.js";
|
|
12
|
+
import type * as analytics from "../analytics.js";
|
|
12
13
|
import type * as attendants from "../attendants.js";
|
|
13
14
|
import type * as audit from "../audit.js";
|
|
14
15
|
import type * as clerk from "../clerk.js";
|
|
@@ -18,9 +19,11 @@ import type * as lib_audit from "../lib/audit.js";
|
|
|
18
19
|
import type * as lib_auth from "../lib/auth.js";
|
|
19
20
|
import type * as lib_utils from "../lib/utils.js";
|
|
20
21
|
import type * as loyalty from "../loyalty.js";
|
|
22
|
+
import type * as notifications from "../notifications.js";
|
|
21
23
|
import type * as orders from "../orders.js";
|
|
22
24
|
import type * as payments from "../payments.js";
|
|
23
25
|
import type * as resources from "../resources.js";
|
|
26
|
+
import type * as vouchers from "../vouchers.js";
|
|
24
27
|
|
|
25
28
|
import type {
|
|
26
29
|
ApiFromModules,
|
|
@@ -30,6 +33,7 @@ import type {
|
|
|
30
33
|
|
|
31
34
|
declare const fullApi: ApiFromModules<{
|
|
32
35
|
admin: typeof admin;
|
|
36
|
+
analytics: typeof analytics;
|
|
33
37
|
attendants: typeof attendants;
|
|
34
38
|
audit: typeof audit;
|
|
35
39
|
clerk: typeof clerk;
|
|
@@ -39,9 +43,11 @@ declare const fullApi: ApiFromModules<{
|
|
|
39
43
|
"lib/auth": typeof lib_auth;
|
|
40
44
|
"lib/utils": typeof lib_utils;
|
|
41
45
|
loyalty: typeof loyalty;
|
|
46
|
+
notifications: typeof notifications;
|
|
42
47
|
orders: typeof orders;
|
|
43
48
|
payments: typeof payments;
|
|
44
49
|
resources: typeof resources;
|
|
50
|
+
vouchers: typeof vouchers;
|
|
45
51
|
}>;
|
|
46
52
|
|
|
47
53
|
/**
|
package/convex/admin.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export declare const getBranches: import("convex/server").RegisteredQuery<"publi
|
|
|
37
37
|
createdAt: number;
|
|
38
38
|
isDeleted: boolean;
|
|
39
39
|
isActive: boolean;
|
|
40
|
+
code: string;
|
|
40
41
|
address: string;
|
|
41
42
|
city: string;
|
|
42
43
|
country: string;
|
|
@@ -47,6 +48,50 @@ export declare const getBranches: import("convex/server").RegisteredQuery<"publi
|
|
|
47
48
|
isDone: boolean;
|
|
48
49
|
continueCursor: string;
|
|
49
50
|
}>>;
|
|
51
|
+
/**
|
|
52
|
+
* Get branch by code
|
|
53
|
+
*/
|
|
54
|
+
export declare const getBranchByCode: import("convex/server").RegisteredQuery<"public", {
|
|
55
|
+
code: string;
|
|
56
|
+
}, Promise<{
|
|
57
|
+
_id: import("convex/values").GenericId<"branches">;
|
|
58
|
+
_creationTime: number;
|
|
59
|
+
email?: string | undefined;
|
|
60
|
+
phoneNumber: string;
|
|
61
|
+
name: string;
|
|
62
|
+
createdAt: number;
|
|
63
|
+
isDeleted: boolean;
|
|
64
|
+
isActive: boolean;
|
|
65
|
+
code: string;
|
|
66
|
+
address: string;
|
|
67
|
+
city: string;
|
|
68
|
+
country: string;
|
|
69
|
+
pricingPerKg: number;
|
|
70
|
+
deliveryFee: number;
|
|
71
|
+
createdBy: import("convex/values").GenericId<"admins">;
|
|
72
|
+
} | null>>;
|
|
73
|
+
/**
|
|
74
|
+
* Get single branch by ID
|
|
75
|
+
*/
|
|
76
|
+
export declare const getBranch: import("convex/server").RegisteredQuery<"public", {
|
|
77
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
78
|
+
}, Promise<{
|
|
79
|
+
_id: import("convex/values").GenericId<"branches">;
|
|
80
|
+
_creationTime: number;
|
|
81
|
+
email?: string | undefined;
|
|
82
|
+
phoneNumber: string;
|
|
83
|
+
name: string;
|
|
84
|
+
createdAt: number;
|
|
85
|
+
isDeleted: boolean;
|
|
86
|
+
isActive: boolean;
|
|
87
|
+
code: string;
|
|
88
|
+
address: string;
|
|
89
|
+
city: string;
|
|
90
|
+
country: string;
|
|
91
|
+
pricingPerKg: number;
|
|
92
|
+
deliveryFee: number;
|
|
93
|
+
createdBy: import("convex/values").GenericId<"admins">;
|
|
94
|
+
} | null>>;
|
|
50
95
|
/**
|
|
51
96
|
* Get all attendants - Paginated
|
|
52
97
|
* Supports usePaginatedQuery for infinite scroll
|
|
@@ -79,8 +124,8 @@ export declare const getAttendants: import("convex/server").RegisteredQuery<"pub
|
|
|
79
124
|
* Supports usePaginatedQuery for infinite scroll
|
|
80
125
|
*/
|
|
81
126
|
export declare const getOrders: import("convex/server").RegisteredQuery<"public", {
|
|
82
|
-
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
83
127
|
status?: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled" | undefined;
|
|
128
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
84
129
|
cursor?: string | undefined;
|
|
85
130
|
numItems?: number | undefined;
|
|
86
131
|
startDate?: number | undefined;
|
|
@@ -95,6 +140,7 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
95
140
|
itemCount?: number | undefined;
|
|
96
141
|
estimatedLoads?: number | undefined;
|
|
97
142
|
whitesSeparate?: boolean | undefined;
|
|
143
|
+
bagCardNumber?: string | undefined;
|
|
98
144
|
notes?: string | undefined;
|
|
99
145
|
deliveryAddress?: string | undefined;
|
|
100
146
|
deliveryPhoneNumber?: string | undefined;
|
|
@@ -103,6 +149,7 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
103
149
|
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
104
150
|
paymentId?: import("convex/values").GenericId<"payments"> | undefined;
|
|
105
151
|
fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
152
|
+
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
106
153
|
createdAt: number;
|
|
107
154
|
isDeleted: boolean;
|
|
108
155
|
branchId: import("convex/values").GenericId<"branches">;
|
|
@@ -116,7 +163,6 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
116
163
|
basePrice: number;
|
|
117
164
|
totalPrice: number;
|
|
118
165
|
finalPrice: number;
|
|
119
|
-
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
120
166
|
paymentStatus: "pending" | "paid" | "failed" | "refunded";
|
|
121
167
|
updatedAt: number;
|
|
122
168
|
statusHistory: {
|
|
@@ -158,27 +204,73 @@ export declare const getAnalytics: import("convex/server").RegisteredQuery<"publ
|
|
|
158
204
|
* Supports usePaginatedQuery for infinite scroll
|
|
159
205
|
*/
|
|
160
206
|
export declare const getCustomers: import("convex/server").RegisteredQuery<"public", {
|
|
207
|
+
isRegistered?: boolean | undefined;
|
|
208
|
+
status?: "active" | "blocked" | "suspended" | "restricted" | undefined;
|
|
161
209
|
search?: string | undefined;
|
|
162
|
-
|
|
163
|
-
|
|
210
|
+
paginationOpts: {
|
|
211
|
+
id?: number;
|
|
212
|
+
endCursor?: string | null;
|
|
213
|
+
maximumRowsRead?: number;
|
|
214
|
+
maximumBytesRead?: number;
|
|
215
|
+
numItems: number;
|
|
216
|
+
cursor: string | null;
|
|
217
|
+
};
|
|
164
218
|
}, Promise<{
|
|
165
219
|
page: {
|
|
220
|
+
orderCount: number;
|
|
221
|
+
completedOrderCount: number;
|
|
222
|
+
totalSpent: number;
|
|
223
|
+
lastOrderDate: number;
|
|
224
|
+
lastOrderNumber: string;
|
|
166
225
|
_id: import("convex/values").GenericId<"users">;
|
|
167
226
|
_creationTime: number;
|
|
168
227
|
email?: string | undefined;
|
|
169
228
|
clerkUserId?: string | undefined;
|
|
229
|
+
statusNote?: string | undefined;
|
|
230
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
231
|
+
statusChangedAt?: number | undefined;
|
|
170
232
|
lastLoginAt?: number | undefined;
|
|
171
233
|
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
172
234
|
phoneNumber: string;
|
|
173
235
|
name: string;
|
|
174
236
|
isRegistered: boolean;
|
|
175
237
|
isVerified: boolean;
|
|
238
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
176
239
|
createdAt: number;
|
|
177
240
|
isDeleted: boolean;
|
|
178
241
|
}[];
|
|
179
242
|
isDone: boolean;
|
|
180
243
|
continueCursor: string;
|
|
181
244
|
}>>;
|
|
245
|
+
/**
|
|
246
|
+
* Get customer statistics/aggregations
|
|
247
|
+
*/
|
|
248
|
+
export declare const getCustomerStats: import("convex/server").RegisteredQuery<"public", {}, Promise<{
|
|
249
|
+
totalCustomers: number;
|
|
250
|
+
registeredCustomers: number;
|
|
251
|
+
walkInCustomers: number;
|
|
252
|
+
activeCustomers: number;
|
|
253
|
+
blockedCustomers: number;
|
|
254
|
+
suspendedCustomers: number;
|
|
255
|
+
restrictedCustomers: number;
|
|
256
|
+
verifiedCustomers: number;
|
|
257
|
+
customersWithActiveOrders: number;
|
|
258
|
+
totalRevenue: number;
|
|
259
|
+
}>>;
|
|
260
|
+
/**
|
|
261
|
+
* Change customer status (with required note)
|
|
262
|
+
*/
|
|
263
|
+
export declare const changeCustomerStatus: import("convex/server").RegisteredMutation<"public", {
|
|
264
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
265
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
266
|
+
note: string;
|
|
267
|
+
}, Promise<import("convex/values").GenericId<"users">>>;
|
|
268
|
+
/**
|
|
269
|
+
* Delete a customer (soft delete)
|
|
270
|
+
*/
|
|
271
|
+
export declare const deleteCustomer: import("convex/server").RegisteredMutation<"public", {
|
|
272
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
273
|
+
}, Promise<import("convex/values").GenericId<"users">>>;
|
|
182
274
|
/**
|
|
183
275
|
* Create new branch
|
|
184
276
|
*/
|
|
@@ -186,6 +278,7 @@ export declare const createBranch: import("convex/server").RegisteredMutation<"p
|
|
|
186
278
|
email?: string | undefined;
|
|
187
279
|
phoneNumber: string;
|
|
188
280
|
name: string;
|
|
281
|
+
code: string;
|
|
189
282
|
address: string;
|
|
190
283
|
city: string;
|
|
191
284
|
country: string;
|
|
@@ -200,6 +293,7 @@ export declare const updateBranch: import("convex/server").RegisteredMutation<"p
|
|
|
200
293
|
email?: string | undefined;
|
|
201
294
|
name?: string | undefined;
|
|
202
295
|
isActive?: boolean | undefined;
|
|
296
|
+
code?: string | undefined;
|
|
203
297
|
address?: string | undefined;
|
|
204
298
|
city?: string | undefined;
|
|
205
299
|
country?: string | undefined;
|
|
@@ -207,6 +301,21 @@ export declare const updateBranch: import("convex/server").RegisteredMutation<"p
|
|
|
207
301
|
deliveryFee?: number | undefined;
|
|
208
302
|
branchId: import("convex/values").GenericId<"branches">;
|
|
209
303
|
}, Promise<import("convex/values").GenericId<"branches">>>;
|
|
304
|
+
/**
|
|
305
|
+
* Toggle branch active status (enable/disable)
|
|
306
|
+
*/
|
|
307
|
+
export declare const toggleBranchStatus: import("convex/server").RegisteredMutation<"public", {
|
|
308
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
309
|
+
}, Promise<{
|
|
310
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
311
|
+
isActive: boolean;
|
|
312
|
+
}>>;
|
|
313
|
+
/**
|
|
314
|
+
* Delete branch (soft delete)
|
|
315
|
+
*/
|
|
316
|
+
export declare const deleteBranch: import("convex/server").RegisteredMutation<"public", {
|
|
317
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
318
|
+
}, Promise<import("convex/values").GenericId<"branches">>>;
|
|
210
319
|
/**
|
|
211
320
|
* Create attendant account
|
|
212
321
|
* Note: Clerk user must be created separately, then link clerkUserId
|
|
@@ -238,6 +347,12 @@ export declare const assignAttendantToBranch: import("convex/server").Registered
|
|
|
238
347
|
branchId: import("convex/values").GenericId<"branches">;
|
|
239
348
|
attendantId: import("convex/values").GenericId<"attendants">;
|
|
240
349
|
}, Promise<import("convex/values").GenericId<"attendants">>>;
|
|
350
|
+
/**
|
|
351
|
+
* Delete attendant (soft delete)
|
|
352
|
+
*/
|
|
353
|
+
export declare const deleteAttendant: import("convex/server").RegisteredMutation<"public", {
|
|
354
|
+
attendantId: import("convex/values").GenericId<"attendants">;
|
|
355
|
+
}, Promise<import("convex/values").GenericId<"attendants">>>;
|
|
241
356
|
/**
|
|
242
357
|
* Create admin account
|
|
243
358
|
* Only super admins can create other admins
|
|
@@ -249,4 +364,14 @@ export declare const createAdmin: import("convex/server").RegisteredMutation<"pu
|
|
|
249
364
|
clerkUserId: string;
|
|
250
365
|
role: "super_admin" | "admin";
|
|
251
366
|
}, Promise<import("convex/values").GenericId<"admins">>>;
|
|
367
|
+
/**
|
|
368
|
+
* Create the first super admin (one-time setup)
|
|
369
|
+
* This function can only be used when no super admins exist in the database
|
|
370
|
+
* After the first super admin is created, use createAdmin instead
|
|
371
|
+
*/
|
|
372
|
+
export declare const createFirstSuperAdmin: import("convex/server").RegisteredMutation<"public", {
|
|
373
|
+
email: string;
|
|
374
|
+
name: string;
|
|
375
|
+
clerkUserId: string;
|
|
376
|
+
}, Promise<import("convex/values").GenericId<"admins">>>;
|
|
252
377
|
//# sourceMappingURL=admin.d.ts.map
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Id } from "./_generated/dataModel";
|
|
2
|
+
/**
|
|
3
|
+
* Analytics Functions
|
|
4
|
+
*
|
|
5
|
+
* Comprehensive analytics and aggregations for dashboard, reports, and insights.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get dashboard overview statistics
|
|
9
|
+
*/
|
|
10
|
+
export declare const getDashboardStats: import("convex/server").RegisteredQuery<"public", {
|
|
11
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
12
|
+
startDate?: number | undefined;
|
|
13
|
+
endDate?: number | undefined;
|
|
14
|
+
}, Promise<{
|
|
15
|
+
totalOrders: number;
|
|
16
|
+
totalRevenue: number;
|
|
17
|
+
completedOrders: number;
|
|
18
|
+
pendingOrders: number;
|
|
19
|
+
walkInOrders: number;
|
|
20
|
+
onlineOrders: number;
|
|
21
|
+
averageOrderValue: number;
|
|
22
|
+
ordersByStatus: Record<string, number>;
|
|
23
|
+
ordersByDay: Record<string, number>;
|
|
24
|
+
revenueByDay: Record<string, number>;
|
|
25
|
+
ordersByServiceType: Record<string, number>;
|
|
26
|
+
ordersByPaymentMethod: Record<string, number>;
|
|
27
|
+
dateRange: {
|
|
28
|
+
start: number;
|
|
29
|
+
end: number;
|
|
30
|
+
};
|
|
31
|
+
}>>;
|
|
32
|
+
/**
|
|
33
|
+
* Get today's statistics
|
|
34
|
+
*/
|
|
35
|
+
export declare const getTodayStats: import("convex/server").RegisteredQuery<"public", {
|
|
36
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
37
|
+
}, Promise<{
|
|
38
|
+
totalOrders: number;
|
|
39
|
+
totalRevenue: number;
|
|
40
|
+
completedOrders: number;
|
|
41
|
+
pendingOrders: number;
|
|
42
|
+
walkInOrders: number;
|
|
43
|
+
onlineOrders: number;
|
|
44
|
+
}>>;
|
|
45
|
+
/**
|
|
46
|
+
* Get top customers by order count
|
|
47
|
+
*/
|
|
48
|
+
export declare const getTopCustomers: import("convex/server").RegisteredQuery<"public", {
|
|
49
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
50
|
+
startDate?: number | undefined;
|
|
51
|
+
endDate?: number | undefined;
|
|
52
|
+
limit?: number | undefined;
|
|
53
|
+
}, Promise<{
|
|
54
|
+
customerId: Id<"users">;
|
|
55
|
+
name: string;
|
|
56
|
+
phoneNumber: string;
|
|
57
|
+
orderCount: number;
|
|
58
|
+
totalRevenue: number;
|
|
59
|
+
averageOrderValue: number;
|
|
60
|
+
}[]>>;
|
|
61
|
+
/**
|
|
62
|
+
* Get revenue trends (daily/weekly/monthly)
|
|
63
|
+
*/
|
|
64
|
+
export declare const getRevenueTrends: import("convex/server").RegisteredQuery<"public", {
|
|
65
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
66
|
+
days?: number | undefined;
|
|
67
|
+
period: "daily" | "weekly" | "monthly";
|
|
68
|
+
}, Promise<{
|
|
69
|
+
period: string;
|
|
70
|
+
revenue: number;
|
|
71
|
+
orders: number;
|
|
72
|
+
}[]>>;
|
|
73
|
+
/**
|
|
74
|
+
* Get branch performance comparison
|
|
75
|
+
*/
|
|
76
|
+
export declare const getBranchPerformance: import("convex/server").RegisteredQuery<"public", {
|
|
77
|
+
startDate?: number | undefined;
|
|
78
|
+
endDate?: number | undefined;
|
|
79
|
+
}, Promise<{
|
|
80
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
81
|
+
branchName: string;
|
|
82
|
+
totalOrders: number;
|
|
83
|
+
totalRevenue: number;
|
|
84
|
+
completedOrders: number;
|
|
85
|
+
averageOrderValue: number;
|
|
86
|
+
}[]>>;
|
|
87
|
+
//# sourceMappingURL=analytics.d.ts.map
|
package/convex/attendants.d.ts
CHANGED
|
@@ -97,4 +97,44 @@ export declare const clockIn: import("convex/server").RegisteredMutation<"public
|
|
|
97
97
|
export declare const clockOut: import("convex/server").RegisteredMutation<"public", {
|
|
98
98
|
attendanceLogId?: import("convex/values").GenericId<"attendanceLogs"> | undefined;
|
|
99
99
|
}, Promise<import("convex/values").GenericId<"attendanceLogs">>>;
|
|
100
|
+
/**
|
|
101
|
+
* Get attendance statistics for a branch
|
|
102
|
+
*/
|
|
103
|
+
export declare const getBranchAttendanceStats: import("convex/server").RegisteredQuery<"public", {
|
|
104
|
+
date?: string | undefined;
|
|
105
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
106
|
+
}, Promise<{
|
|
107
|
+
date: string;
|
|
108
|
+
branchId: import("convex/values").GenericId<"branches">;
|
|
109
|
+
clockIns: number;
|
|
110
|
+
clockOuts: number;
|
|
111
|
+
activeSessions: number;
|
|
112
|
+
uniqueAttendants: number;
|
|
113
|
+
totalHoursWorked: number;
|
|
114
|
+
averageHoursPerAttendant: number;
|
|
115
|
+
}>>;
|
|
116
|
+
/**
|
|
117
|
+
* Get attendance summary for date range
|
|
118
|
+
*/
|
|
119
|
+
export declare const getAttendanceSummary: import("convex/server").RegisteredQuery<"public", {
|
|
120
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
121
|
+
startDate?: number | undefined;
|
|
122
|
+
endDate?: number | undefined;
|
|
123
|
+
}, Promise<{
|
|
124
|
+
totalSessions: number;
|
|
125
|
+
completedSessions: number;
|
|
126
|
+
activeSessions: number;
|
|
127
|
+
uniqueAttendants: number;
|
|
128
|
+
totalHoursWorked: number;
|
|
129
|
+
averageHoursPerSession: number;
|
|
130
|
+
attendanceByDay: Record<string, {
|
|
131
|
+
clockIns: number;
|
|
132
|
+
clockOuts: number;
|
|
133
|
+
hours: number;
|
|
134
|
+
}>;
|
|
135
|
+
dateRange: {
|
|
136
|
+
start: number;
|
|
137
|
+
end: number;
|
|
138
|
+
};
|
|
139
|
+
}>>;
|
|
100
140
|
//# sourceMappingURL=attendants.d.ts.map
|
package/convex/audit.d.ts
CHANGED
|
@@ -122,4 +122,43 @@ export declare const getByTimeRange: import("convex/server").RegisteredQuery<"pu
|
|
|
122
122
|
entityType: string;
|
|
123
123
|
timestamp: number;
|
|
124
124
|
}[]>>;
|
|
125
|
+
/**
|
|
126
|
+
* Get all audit logs with filters - Paginated
|
|
127
|
+
* Supports usePaginatedQuery for infinite scroll
|
|
128
|
+
*/
|
|
129
|
+
export declare const getAll: import("convex/server").RegisteredQuery<"public", {
|
|
130
|
+
actorType?: "admin" | "customer" | "attendant" | undefined;
|
|
131
|
+
action?: string | undefined;
|
|
132
|
+
entityType?: string | undefined;
|
|
133
|
+
startTimestamp?: number | undefined;
|
|
134
|
+
endTimestamp?: number | undefined;
|
|
135
|
+
paginationOpts: {
|
|
136
|
+
id?: number;
|
|
137
|
+
endCursor?: string | null;
|
|
138
|
+
maximumRowsRead?: number;
|
|
139
|
+
maximumBytesRead?: number;
|
|
140
|
+
numItems: number;
|
|
141
|
+
cursor: string | null;
|
|
142
|
+
};
|
|
143
|
+
}, Promise<{
|
|
144
|
+
page: {
|
|
145
|
+
_id: import("convex/values").GenericId<"auditLogs">;
|
|
146
|
+
_creationTime: number;
|
|
147
|
+
branchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
148
|
+
deviceId?: string | undefined;
|
|
149
|
+
entityId?: string | undefined;
|
|
150
|
+
ipAddress?: string | undefined;
|
|
151
|
+
details?: string | undefined;
|
|
152
|
+
oldValue?: string | undefined;
|
|
153
|
+
newValue?: string | undefined;
|
|
154
|
+
actorId: string;
|
|
155
|
+
actorType: "admin" | "customer" | "attendant";
|
|
156
|
+
actorRole: string;
|
|
157
|
+
action: string;
|
|
158
|
+
entityType: string;
|
|
159
|
+
timestamp: number;
|
|
160
|
+
}[];
|
|
161
|
+
isDone: boolean;
|
|
162
|
+
continueCursor: string;
|
|
163
|
+
}>>;
|
|
125
164
|
//# sourceMappingURL=audit.d.ts.map
|
package/convex/customers.d.ts
CHANGED
|
@@ -16,12 +16,16 @@ export declare const getByPhone: import("convex/server").RegisteredQuery<"public
|
|
|
16
16
|
_creationTime: number;
|
|
17
17
|
email?: string | undefined;
|
|
18
18
|
clerkUserId?: string | undefined;
|
|
19
|
+
statusNote?: string | undefined;
|
|
20
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
21
|
+
statusChangedAt?: number | undefined;
|
|
19
22
|
lastLoginAt?: number | undefined;
|
|
20
23
|
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
21
24
|
phoneNumber: string;
|
|
22
25
|
name: string;
|
|
23
26
|
isRegistered: boolean;
|
|
24
27
|
isVerified: boolean;
|
|
28
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
25
29
|
createdAt: number;
|
|
26
30
|
isDeleted: boolean;
|
|
27
31
|
} | null>>;
|
|
@@ -35,12 +39,16 @@ export declare const getProfile: import("convex/server").RegisteredQuery<"public
|
|
|
35
39
|
_creationTime: number;
|
|
36
40
|
email?: string | undefined;
|
|
37
41
|
clerkUserId?: string | undefined;
|
|
42
|
+
statusNote?: string | undefined;
|
|
43
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
44
|
+
statusChangedAt?: number | undefined;
|
|
38
45
|
lastLoginAt?: number | undefined;
|
|
39
46
|
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
40
47
|
phoneNumber: string;
|
|
41
48
|
name: string;
|
|
42
49
|
isRegistered: boolean;
|
|
43
50
|
isVerified: boolean;
|
|
51
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
44
52
|
createdAt: number;
|
|
45
53
|
isDeleted: boolean;
|
|
46
54
|
}>>;
|
|
@@ -61,6 +69,7 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
61
69
|
itemCount?: number | undefined;
|
|
62
70
|
estimatedLoads?: number | undefined;
|
|
63
71
|
whitesSeparate?: boolean | undefined;
|
|
72
|
+
bagCardNumber?: string | undefined;
|
|
64
73
|
notes?: string | undefined;
|
|
65
74
|
deliveryAddress?: string | undefined;
|
|
66
75
|
deliveryPhoneNumber?: string | undefined;
|
|
@@ -69,6 +78,7 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
69
78
|
paymentMethod?: "mobile_money" | "card" | "cash" | undefined;
|
|
70
79
|
paymentId?: import("convex/values").GenericId<"payments"> | undefined;
|
|
71
80
|
fulfilledBy?: import("convex/values").GenericId<"attendants"> | undefined;
|
|
81
|
+
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
72
82
|
createdAt: number;
|
|
73
83
|
isDeleted: boolean;
|
|
74
84
|
branchId: import("convex/values").GenericId<"branches">;
|
|
@@ -82,7 +92,6 @@ export declare const getOrders: import("convex/server").RegisteredQuery<"public"
|
|
|
82
92
|
basePrice: number;
|
|
83
93
|
totalPrice: number;
|
|
84
94
|
finalPrice: number;
|
|
85
|
-
status: "pending" | "in_progress" | "ready_for_pickup" | "delivered" | "completed" | "cancelled";
|
|
86
95
|
paymentStatus: "pending" | "paid" | "failed" | "refunded";
|
|
87
96
|
updatedAt: number;
|
|
88
97
|
statusHistory: {
|
|
@@ -153,4 +162,63 @@ export declare const createTestUser: import("convex/server").RegisteredMutation<
|
|
|
153
162
|
phoneNumber: string;
|
|
154
163
|
name: string;
|
|
155
164
|
}, Promise<import("convex/values").GenericId<"users">>>;
|
|
165
|
+
/**
|
|
166
|
+
* Search customers by name or phone number
|
|
167
|
+
* Used by POS for customer lookup
|
|
168
|
+
*/
|
|
169
|
+
export declare const search: import("convex/server").RegisteredQuery<"public", {
|
|
170
|
+
limit?: number | undefined;
|
|
171
|
+
query: string;
|
|
172
|
+
}, Promise<{
|
|
173
|
+
orderCount: number;
|
|
174
|
+
completedOrderCount: number;
|
|
175
|
+
totalSpent: number;
|
|
176
|
+
lastOrderDate: number;
|
|
177
|
+
_id: import("convex/values").GenericId<"users">;
|
|
178
|
+
_creationTime: number;
|
|
179
|
+
email?: string | undefined;
|
|
180
|
+
clerkUserId?: string | undefined;
|
|
181
|
+
statusNote?: string | undefined;
|
|
182
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
183
|
+
statusChangedAt?: number | undefined;
|
|
184
|
+
lastLoginAt?: number | undefined;
|
|
185
|
+
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
186
|
+
phoneNumber: string;
|
|
187
|
+
name: string;
|
|
188
|
+
isRegistered: boolean;
|
|
189
|
+
isVerified: boolean;
|
|
190
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
191
|
+
createdAt: number;
|
|
192
|
+
isDeleted: boolean;
|
|
193
|
+
}[]>>;
|
|
194
|
+
/**
|
|
195
|
+
* Get customer details with full order history
|
|
196
|
+
*/
|
|
197
|
+
export declare const getDetails: import("convex/server").RegisteredQuery<"public", {
|
|
198
|
+
customerId: import("convex/values").GenericId<"users">;
|
|
199
|
+
}, Promise<{
|
|
200
|
+
orderCount: number;
|
|
201
|
+
completedOrderCount: number;
|
|
202
|
+
totalSpent: number;
|
|
203
|
+
averageOrderValue: number;
|
|
204
|
+
loyaltyPoints: number;
|
|
205
|
+
lastOrderDate: number;
|
|
206
|
+
lastOrderNumber: string;
|
|
207
|
+
_id: import("convex/values").GenericId<"users">;
|
|
208
|
+
_creationTime: number;
|
|
209
|
+
email?: string | undefined;
|
|
210
|
+
clerkUserId?: string | undefined;
|
|
211
|
+
statusNote?: string | undefined;
|
|
212
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
213
|
+
statusChangedAt?: number | undefined;
|
|
214
|
+
lastLoginAt?: number | undefined;
|
|
215
|
+
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
216
|
+
phoneNumber: string;
|
|
217
|
+
name: string;
|
|
218
|
+
isRegistered: boolean;
|
|
219
|
+
isVerified: boolean;
|
|
220
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
221
|
+
createdAt: number;
|
|
222
|
+
isDeleted: boolean;
|
|
223
|
+
}>>;
|
|
156
224
|
//# sourceMappingURL=customers.d.ts.map
|
package/convex/lib/auth.d.ts
CHANGED
|
@@ -14,12 +14,16 @@ export declare function getCurrentCustomer(ctx: QueryCtx | MutationCtx): Promise
|
|
|
14
14
|
_creationTime: number;
|
|
15
15
|
email?: string | undefined;
|
|
16
16
|
clerkUserId?: string | undefined;
|
|
17
|
+
statusNote?: string | undefined;
|
|
18
|
+
statusChangedBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
19
|
+
statusChangedAt?: number | undefined;
|
|
17
20
|
lastLoginAt?: number | undefined;
|
|
18
21
|
preferredBranchId?: import("convex/values").GenericId<"branches"> | undefined;
|
|
19
22
|
phoneNumber: string;
|
|
20
23
|
name: string;
|
|
21
24
|
isRegistered: boolean;
|
|
22
25
|
isVerified: boolean;
|
|
26
|
+
status: "active" | "blocked" | "suspended" | "restricted";
|
|
23
27
|
createdAt: number;
|
|
24
28
|
isDeleted: boolean;
|
|
25
29
|
}>;
|
package/convex/loyalty.d.ts
CHANGED
|
@@ -31,9 +31,9 @@ export declare const getTransactions: import("convex/server").RegisteredQuery<"p
|
|
|
31
31
|
createdBy?: import("convex/values").GenericId<"admins"> | undefined;
|
|
32
32
|
orderId?: import("convex/values").GenericId<"orders"> | undefined;
|
|
33
33
|
description?: string | undefined;
|
|
34
|
+
type: "earned" | "redeemed" | "expired" | "adjusted";
|
|
34
35
|
createdAt: number;
|
|
35
36
|
isDeleted: boolean;
|
|
36
|
-
type: "earned" | "redeemed" | "expired" | "adjusted";
|
|
37
37
|
customerId: import("convex/values").GenericId<"users">;
|
|
38
38
|
points: number;
|
|
39
39
|
balanceAfter: number;
|