@unchainedshop/api 4.0.0-rc.10 → 4.0.0-rc.11

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 (166) hide show
  1. package/lib/mcp/index.d.ts.map +1 -1
  2. package/lib/mcp/index.js +6 -0
  3. package/lib/mcp/index.js.map +1 -1
  4. package/lib/mcp/tools/delivery/createDeliveryProviderHandler.d.ts +44 -0
  5. package/lib/mcp/tools/delivery/createDeliveryProviderHandler.d.ts.map +1 -0
  6. package/lib/mcp/tools/delivery/createDeliveryProviderHandler.js +50 -0
  7. package/lib/mcp/tools/delivery/createDeliveryProviderHandler.js.map +1 -0
  8. package/lib/mcp/tools/delivery/deliveryInterfacesHandler.d.ts +20 -0
  9. package/lib/mcp/tools/delivery/deliveryInterfacesHandler.d.ts.map +1 -0
  10. package/lib/mcp/tools/delivery/deliveryInterfacesHandler.js +45 -0
  11. package/lib/mcp/tools/delivery/deliveryInterfacesHandler.js.map +1 -0
  12. package/lib/mcp/tools/delivery/deliveryProvider.d.ts +20 -0
  13. package/lib/mcp/tools/delivery/deliveryProvider.d.ts.map +1 -0
  14. package/lib/mcp/tools/delivery/deliveryProvider.js +43 -0
  15. package/lib/mcp/tools/delivery/deliveryProvider.js.map +1 -0
  16. package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.d.ts +20 -0
  17. package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.d.ts.map +1 -0
  18. package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.js +36 -0
  19. package/lib/mcp/tools/delivery/deliveryProvidersCountHandler.js.map +1 -0
  20. package/lib/mcp/tools/delivery/deliveryProvidersListHandler.d.ts +24 -0
  21. package/lib/mcp/tools/delivery/deliveryProvidersListHandler.d.ts.map +1 -0
  22. package/lib/mcp/tools/delivery/deliveryProvidersListHandler.js +44 -0
  23. package/lib/mcp/tools/delivery/deliveryProvidersListHandler.js.map +1 -0
  24. package/lib/mcp/tools/delivery/index.d.ts +4 -0
  25. package/lib/mcp/tools/delivery/index.d.ts.map +1 -0
  26. package/lib/mcp/tools/delivery/index.js +17 -0
  27. package/lib/mcp/tools/delivery/index.js.map +1 -0
  28. package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.d.ts +20 -0
  29. package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.d.ts.map +1 -0
  30. package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.js +37 -0
  31. package/lib/mcp/tools/delivery/removeDeliveryProviderHandler.js.map +1 -0
  32. package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.d.ts +96 -0
  33. package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.d.ts.map +1 -0
  34. package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.js +54 -0
  35. package/lib/mcp/tools/delivery/updateDeliveryProviderHandler.js.map +1 -0
  36. package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.d.ts +36 -0
  37. package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.d.ts.map +1 -0
  38. package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.js +89 -0
  39. package/lib/mcp/tools/order/getMonthlySalesBreakdownHandler.js.map +1 -0
  40. package/lib/mcp/tools/order/getSalesSummaryHandler.d.ts +40 -0
  41. package/lib/mcp/tools/order/getSalesSummaryHandler.d.ts.map +1 -0
  42. package/lib/mcp/tools/order/getSalesSummaryHandler.js +90 -0
  43. package/lib/mcp/tools/order/getSalesSummaryHandler.js.map +1 -0
  44. package/lib/mcp/tools/order/getTopCustomersHandler.d.ts +52 -0
  45. package/lib/mcp/tools/order/getTopCustomersHandler.d.ts.map +1 -0
  46. package/lib/mcp/tools/order/getTopCustomersHandler.js +111 -0
  47. package/lib/mcp/tools/order/getTopCustomersHandler.js.map +1 -0
  48. package/lib/mcp/tools/order/getTopSellingProductsHandler.d.ts +28 -0
  49. package/lib/mcp/tools/order/getTopSellingProductsHandler.d.ts.map +1 -0
  50. package/lib/mcp/tools/order/getTopSellingProductsHandler.js +99 -0
  51. package/lib/mcp/tools/order/getTopSellingProductsHandler.js.map +1 -0
  52. package/lib/mcp/tools/order/index.d.ts +4 -0
  53. package/lib/mcp/tools/order/index.d.ts.map +1 -0
  54. package/lib/mcp/tools/order/index.js +13 -0
  55. package/lib/mcp/tools/order/index.js.map +1 -0
  56. package/lib/mcp/tools/order/ordersListHandler.d.ts +108 -0
  57. package/lib/mcp/tools/order/ordersListHandler.d.ts.map +1 -0
  58. package/lib/mcp/tools/order/ordersListHandler.js +91 -0
  59. package/lib/mcp/tools/order/ordersListHandler.js.map +1 -0
  60. package/lib/mcp/tools/payment/createPaymentProviderHandler.d.ts.map +1 -1
  61. package/lib/mcp/tools/payment/createPaymentProviderHandler.js +5 -2
  62. package/lib/mcp/tools/payment/createPaymentProviderHandler.js.map +1 -1
  63. package/lib/mcp/tools/payment/index.js +1 -1
  64. package/lib/mcp/tools/payment/index.js.map +1 -1
  65. package/lib/mcp/tools/payment/paymentInterfacesHandler.d.ts +2 -2
  66. package/lib/mcp/tools/payment/paymentInterfacesHandler.d.ts.map +1 -1
  67. package/lib/mcp/tools/payment/paymentInterfacesHandler.js +7 -5
  68. package/lib/mcp/tools/payment/paymentInterfacesHandler.js.map +1 -1
  69. package/lib/mcp/tools/payment/paymentProviderByIdHandler.js +1 -1
  70. package/lib/mcp/tools/payment/paymentProviderByIdHandler.js.map +1 -1
  71. package/lib/mcp/tools/payment/paymentProvidersListHandler.d.ts +4 -0
  72. package/lib/mcp/tools/payment/paymentProvidersListHandler.d.ts.map +1 -1
  73. package/lib/mcp/tools/payment/paymentProvidersListHandler.js +12 -3
  74. package/lib/mcp/tools/payment/paymentProvidersListHandler.js.map +1 -1
  75. package/lib/mcp/tools/payment/removePaymentProviderHandler.d.ts.map +1 -1
  76. package/lib/mcp/tools/payment/removePaymentProviderHandler.js +5 -4
  77. package/lib/mcp/tools/payment/removePaymentProviderHandler.js.map +1 -1
  78. package/lib/mcp/tools/payment/updatePaymentProviderHandler.d.ts +66 -10
  79. package/lib/mcp/tools/payment/updatePaymentProviderHandler.d.ts.map +1 -1
  80. package/lib/mcp/tools/payment/updatePaymentProviderHandler.js +18 -3
  81. package/lib/mcp/tools/payment/updatePaymentProviderHandler.js.map +1 -1
  82. package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.d.ts +44 -0
  83. package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.d.ts.map +1 -0
  84. package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.js +48 -0
  85. package/lib/mcp/tools/warehousing/createWarehousingProviderHandler.js.map +1 -0
  86. package/lib/mcp/tools/warehousing/index.d.ts +4 -0
  87. package/lib/mcp/tools/warehousing/index.d.ts.map +1 -0
  88. package/lib/mcp/tools/warehousing/index.js +17 -0
  89. package/lib/mcp/tools/warehousing/index.js.map +1 -0
  90. package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.d.ts +20 -0
  91. package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.d.ts.map +1 -0
  92. package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.js +39 -0
  93. package/lib/mcp/tools/warehousing/removeWarehousingProviderHandler.js.map +1 -0
  94. package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.d.ts +96 -0
  95. package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.d.ts.map +1 -0
  96. package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.js +58 -0
  97. package/lib/mcp/tools/warehousing/updateWarehousingProviderHandler.js.map +1 -0
  98. package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.d.ts +20 -0
  99. package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.d.ts.map +1 -0
  100. package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.js +45 -0
  101. package/lib/mcp/tools/warehousing/warehousingInterfacesHandler.js.map +1 -0
  102. package/lib/mcp/tools/warehousing/warehousingProviderHandler.d.ts +20 -0
  103. package/lib/mcp/tools/warehousing/warehousingProviderHandler.d.ts.map +1 -0
  104. package/lib/mcp/tools/warehousing/warehousingProviderHandler.js +45 -0
  105. package/lib/mcp/tools/warehousing/warehousingProviderHandler.js.map +1 -0
  106. package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.d.ts +20 -0
  107. package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.d.ts.map +1 -0
  108. package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.js +36 -0
  109. package/lib/mcp/tools/warehousing/warehousingProvidersCountHandler.js.map +1 -0
  110. package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.d.ts +24 -0
  111. package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.d.ts.map +1 -0
  112. package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.js +44 -0
  113. package/lib/mcp/tools/warehousing/warehousingProvidersListHandler.js.map +1 -0
  114. package/lib/mcp/utils/orderFilters.d.ts +22 -0
  115. package/lib/mcp/utils/orderFilters.d.ts.map +1 -0
  116. package/lib/mcp/utils/orderFilters.js +34 -0
  117. package/lib/mcp/utils/orderFilters.js.map +1 -0
  118. package/lib/mcp/utils/sharedSchemas.d.ts +11 -0
  119. package/lib/mcp/utils/sharedSchemas.d.ts.map +1 -0
  120. package/lib/mcp/utils/sharedSchemas.js +11 -0
  121. package/lib/mcp/utils/sharedSchemas.js.map +1 -0
  122. package/lib/resolvers/queries/orders/orders.d.ts.map +1 -1
  123. package/lib/resolvers/queries/orders/orders.js +33 -4
  124. package/lib/resolvers/queries/orders/orders.js.map +1 -1
  125. package/lib/resolvers/queries/orders/ordersCount.d.ts.map +1 -1
  126. package/lib/resolvers/queries/orders/ordersCount.js +29 -1
  127. package/lib/resolvers/queries/orders/ordersCount.js.map +1 -1
  128. package/lib/schema/query.d.ts.map +1 -1
  129. package/lib/schema/query.js +11 -1
  130. package/lib/schema/query.js.map +1 -1
  131. package/package.json +1 -1
  132. package/src/mcp/index.ts +6 -1
  133. package/src/mcp/tools/delivery/createDeliveryProviderHandler.ts +62 -0
  134. package/src/mcp/tools/delivery/deliveryInterfacesHandler.ts +56 -0
  135. package/src/mcp/tools/delivery/deliveryProvider.ts +51 -0
  136. package/src/mcp/tools/delivery/deliveryProvidersCountHandler.ts +46 -0
  137. package/src/mcp/tools/delivery/deliveryProvidersListHandler.ts +54 -0
  138. package/src/mcp/tools/delivery/index.ts +74 -0
  139. package/src/mcp/tools/delivery/removeDeliveryProviderHandler.ts +45 -0
  140. package/src/mcp/tools/delivery/updateDeliveryProviderHandler.ts +68 -0
  141. package/src/mcp/tools/order/getMonthlySalesBreakdownHandler.ts +106 -0
  142. package/src/mcp/tools/order/getSalesSummaryHandler.ts +103 -0
  143. package/src/mcp/tools/order/getTopCustomersHandler.ts +123 -0
  144. package/src/mcp/tools/order/getTopSellingProductsHandler.ts +112 -0
  145. package/src/mcp/tools/order/index.ts +50 -0
  146. package/src/mcp/tools/order/ordersListHandler.ts +119 -0
  147. package/src/mcp/tools/payment/createPaymentProviderHandler.ts +7 -2
  148. package/src/mcp/tools/payment/index.ts +1 -1
  149. package/src/mcp/tools/payment/paymentInterfacesHandler.ts +13 -10
  150. package/src/mcp/tools/payment/paymentProviderByIdHandler.ts +1 -1
  151. package/src/mcp/tools/payment/paymentProvidersListHandler.ts +14 -4
  152. package/src/mcp/tools/payment/removePaymentProviderHandler.ts +6 -8
  153. package/src/mcp/tools/payment/updatePaymentProviderHandler.ts +23 -4
  154. package/src/mcp/tools/warehousing/createWarehousingProviderHandler.ts +61 -0
  155. package/src/mcp/tools/warehousing/index.ts +81 -0
  156. package/src/mcp/tools/warehousing/removeWarehousingProviderHandler.ts +46 -0
  157. package/src/mcp/tools/warehousing/updateWarehousingProviderHandler.ts +72 -0
  158. package/src/mcp/tools/warehousing/warehousingInterfacesHandler.ts +58 -0
  159. package/src/mcp/tools/warehousing/warehousingProviderHandler.ts +55 -0
  160. package/src/mcp/tools/warehousing/warehousingProvidersCountHandler.ts +46 -0
  161. package/src/mcp/tools/warehousing/warehousingProvidersListHandler.ts +55 -0
  162. package/src/mcp/utils/orderFilters.ts +52 -0
  163. package/src/mcp/utils/sharedSchemas.ts +12 -0
  164. package/src/resolvers/queries/orders/orders.ts +46 -5
  165. package/src/resolvers/queries/orders/ordersCount.ts +42 -1
  166. package/src/schema/query.ts +11 -1
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../../context.js';
3
+ import { log } from '@unchainedshop/logger';
4
+
5
+ export const WarehousingProviderByIdSchema = {
6
+ warehousingProviderId: z.string().min(1).describe('ID of the warehousing provider'),
7
+ };
8
+
9
+ export const WarehousingProviderByIdZodSchema = z.object(WarehousingProviderByIdSchema);
10
+ export type WarehousingProviderByIdParams = z.infer<typeof WarehousingProviderByIdZodSchema>;
11
+
12
+ export async function warehousingProviderHandler(
13
+ context: Context,
14
+ params: WarehousingProviderByIdParams,
15
+ ) {
16
+ const { modules, userId } = context;
17
+ const { warehousingProviderId } = params;
18
+
19
+ try {
20
+ log('handler warehousingProviderHandler', { userId, warehousingProviderId });
21
+
22
+ const provider = await modules.warehousing.findProvider({
23
+ warehousingProviderId,
24
+ });
25
+
26
+ if (!provider) {
27
+ return {
28
+ content: [
29
+ {
30
+ type: 'text' as const,
31
+ text: `Warehousing provider not found for ID: ${warehousingProviderId}`,
32
+ },
33
+ ],
34
+ };
35
+ }
36
+
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text' as const,
41
+ text: JSON.stringify({ provider }),
42
+ },
43
+ ],
44
+ };
45
+ } catch (error) {
46
+ return {
47
+ content: [
48
+ {
49
+ type: 'text' as const,
50
+ text: `Error fetching warehousing provider: ${(error as Error).message}`,
51
+ },
52
+ ],
53
+ };
54
+ }
55
+ }
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../../context.js';
3
+ import { log } from '@unchainedshop/logger';
4
+
5
+ const WarehousingProviderTypeEnum = z
6
+ .enum(['PHYSICAL', 'VIRTUAL'])
7
+ .describe('Warehousing provider type');
8
+
9
+ export const WarehousingProvidersCountSchema = {
10
+ type: WarehousingProviderTypeEnum.optional(),
11
+ };
12
+
13
+ export const WarehousingProvidersCountZodSchema = z.object(WarehousingProvidersCountSchema);
14
+ export type WarehousingProvidersCountParams = z.infer<typeof WarehousingProvidersCountZodSchema>;
15
+
16
+ export async function warehousingProvidersCountHandler(
17
+ context: Context,
18
+ params: WarehousingProvidersCountParams,
19
+ ) {
20
+ const { modules, userId } = context;
21
+ const { type } = params;
22
+
23
+ try {
24
+ log('handler warehousingProvidersCountHandler', { userId, type });
25
+
26
+ const count = await modules.warehousing.count(params as any);
27
+
28
+ return {
29
+ content: [
30
+ {
31
+ type: 'text' as const,
32
+ text: JSON.stringify({ count }),
33
+ },
34
+ ],
35
+ };
36
+ } catch (error) {
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text' as const,
41
+ text: `Error counting warehousing providers: ${(error as Error).message}`,
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ }
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { Context } from '../../../context.js';
3
+ import { log } from '@unchainedshop/logger';
4
+
5
+ const WarehousingProviderTypeEnum = z
6
+ .enum(['PHYSICAL', 'VIRTUAL'])
7
+ .describe('Warehousing provider type');
8
+
9
+ export const WarehousingProvidersListSchema = {
10
+ type: WarehousingProviderTypeEnum.optional().describe('Optional filter by provider type'),
11
+ queryString: z.string().min(1).optional().describe('Search by _id or adapterKey (partial match)'),
12
+ };
13
+
14
+ export const WarehousingProvidersListZodSchema = z.object(WarehousingProvidersListSchema);
15
+ export type WarehousingProvidersListParams = z.infer<typeof WarehousingProvidersListZodSchema>;
16
+
17
+ export async function warehousingProvidersListHandler(
18
+ context: Context,
19
+ params: WarehousingProvidersListParams,
20
+ ) {
21
+ const { modules, userId } = context;
22
+ const { type, queryString } = params;
23
+
24
+ try {
25
+ log('handler warehousingProvidersListHandler', { userId, type, queryString });
26
+
27
+ const selector: Record<string, any> = {};
28
+ if (type) selector.type = type;
29
+
30
+ if (queryString) {
31
+ const regex = new RegExp(queryString, 'i');
32
+ selector.$or = [{ _id: regex }, { adapterKey: regex }];
33
+ }
34
+
35
+ const providers = await modules.warehousing.findProviders(selector);
36
+
37
+ return {
38
+ content: [
39
+ {
40
+ type: 'text' as const,
41
+ text: JSON.stringify({ providers }),
42
+ },
43
+ ],
44
+ };
45
+ } catch (error) {
46
+ return {
47
+ content: [
48
+ {
49
+ type: 'text' as const,
50
+ text: `Error fetching warehousing providers: ${(error as Error).message}`,
51
+ },
52
+ ],
53
+ };
54
+ }
55
+ }
@@ -0,0 +1,52 @@
1
+ import { Context } from '../../context.js';
2
+
3
+ export const resolveOrderFilters = async (
4
+ modules: Context['modules'],
5
+ {
6
+ paymentProviderIds,
7
+ deliveryProviderIds,
8
+ }: {
9
+ paymentProviderIds?: string[];
10
+ deliveryProviderIds?: string[];
11
+ },
12
+ ) => {
13
+ const [orderPayments, orderDeliveries] = await Promise.all([
14
+ paymentProviderIds?.length
15
+ ? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
16
+ : [],
17
+ deliveryProviderIds?.length
18
+ ? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
19
+ : [],
20
+ ]);
21
+
22
+ if (
23
+ (paymentProviderIds?.length && !orderPayments.length) ||
24
+ (deliveryProviderIds?.length && !orderDeliveries.length)
25
+ ) {
26
+ return null;
27
+ }
28
+
29
+ return {
30
+ paymentIds: orderPayments.map((p) => p._id),
31
+ deliveryIds: orderDeliveries.map((d) => d._id),
32
+ };
33
+ };
34
+
35
+ export const formatSummaryMap = (
36
+ map: Map<string, { sales: number; orders: number }>,
37
+ ): { date: string; sales: number; orders: number; avgOrderValue: number }[] => {
38
+ return Array.from(map.entries())
39
+ .reverse()
40
+ .map(([date, { sales, orders }]) => ({
41
+ date,
42
+ sales: Number(sales.toFixed(2)),
43
+ orders,
44
+ avgOrderValue: orders > 0 ? Math.round(sales / orders) : 0,
45
+ }));
46
+ };
47
+
48
+ export const resolveDateRange = (from?: string, to?: string, fallbackDays = 30) => {
49
+ const endDate = to ? new Date(to) : new Date();
50
+ const startDate = from ? new Date(from) : new Date(endDate.getTime() - (fallbackDays - 1) * 86400000);
51
+ return { startDate, endDate };
52
+ };
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+
3
+ export const OrderFilterSchema = {
4
+ paymentProviderIds: z.array(z.string()).optional(),
5
+ deliveryProviderIds: z.array(z.string()).optional(),
6
+ status: z.array(z.enum(['PENDING', 'CONFIRMED', 'SHIPPED', 'DELIVERED', 'CANCELLED'])).optional(),
7
+ };
8
+
9
+ export const DateRangeSchema = {
10
+ from: z.string().datetime().optional(),
11
+ to: z.string().datetime().optional(),
12
+ };
@@ -2,17 +2,58 @@ import { log } from '@unchainedshop/logger';
2
2
  import { SortOption } from '@unchainedshop/utils';
3
3
  import { OrderQuery } from '@unchainedshop/core-orders';
4
4
  import { Context } from '../../../context.js';
5
+ import { PaymentProviderType } from '@unchainedshop/core-payment';
6
+ import { DeliveryProviderType } from '@unchainedshop/core-delivery';
5
7
 
6
8
  export default async function orders(
7
9
  root: never,
8
10
  params: OrderQuery & { limit?: number; offset?: number; sort?: SortOption[] },
9
11
  { modules, userId }: Context,
10
12
  ) {
11
- const { includeCarts, limit, offset, queryString } = params;
13
+ const { limit, offset, paymentProviderTypes, deliveryProviderTypes, ...restParams } = params;
14
+ log(`query orders: ${limit} ${offset} ${restParams?.queryString || ''}`, { userId });
12
15
 
13
- log(`query orders: ${limit} ${offset} ${includeCarts} ${queryString}`, {
14
- userId,
15
- });
16
+ const promises: Promise<any>[] = [];
17
+
18
+ let paymentProviderIds: string[] | undefined;
19
+ let deliveryProviderIds: string[] | undefined;
20
+
21
+ if (paymentProviderTypes?.length) {
22
+ promises.push(
23
+ modules.payment.paymentProviders
24
+ .findProviders({ type: { $in: paymentProviderTypes as PaymentProviderType[] } })
25
+ .then((providers) => (paymentProviderIds = providers.map((p) => p._id))),
26
+ );
27
+ }
16
28
 
17
- return modules.orders.findOrders(params);
29
+ if (deliveryProviderTypes?.length) {
30
+ promises.push(
31
+ modules.delivery
32
+ .findProviders({ type: { $in: deliveryProviderTypes as DeliveryProviderType[] } })
33
+ .then((providers) => (deliveryProviderIds = providers.map((p) => p._id))),
34
+ );
35
+ }
36
+
37
+ await Promise.all(promises);
38
+ const [orderPayments, orderDeliveries] = await Promise.all([
39
+ paymentProviderIds
40
+ ? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
41
+ : [],
42
+ deliveryProviderIds
43
+ ? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
44
+ : [],
45
+ ]);
46
+ if (
47
+ (paymentProviderTypes?.length && !orderPayments.length) ||
48
+ (deliveryProviderTypes?.length && !orderDeliveries.length)
49
+ )
50
+ return [];
51
+ const paymentIds = orderPayments.map((p) => p._id);
52
+ const deliveryIds = orderDeliveries.map((d) => d._id);
53
+
54
+ return modules.orders.findOrders({
55
+ ...restParams,
56
+ paymentIds,
57
+ deliveryIds,
58
+ });
18
59
  }
@@ -1,13 +1,54 @@
1
1
  import { log } from '@unchainedshop/logger';
2
2
  import { OrderQuery } from '@unchainedshop/core-orders';
3
3
  import { Context } from '../../../context.js';
4
+ import { PaymentProviderType } from '@unchainedshop/core-payment';
5
+ import { DeliveryProviderType } from '@unchainedshop/core-delivery';
4
6
 
5
7
  export default async function ordersCount(
6
8
  root: never,
7
9
  params: OrderQuery,
8
10
  { modules, userId }: Context,
9
11
  ) {
12
+ const { paymentProviderTypes, deliveryProviderTypes, ...restParams } = params;
10
13
  log(`query ordersCount: ${params.includeCarts ? 'includeCart' : ''}`, { userId });
11
14
 
12
- return modules.orders.count(params);
15
+ const promises: Promise<any>[] = [];
16
+
17
+ let paymentProviderIds: string[] | undefined;
18
+ let deliveryProviderIds: string[] | undefined;
19
+
20
+ if (paymentProviderTypes?.length) {
21
+ promises.push(
22
+ modules.payment.paymentProviders
23
+ .findProviders({ type: { $in: paymentProviderTypes as PaymentProviderType[] } })
24
+ .then((providers) => (paymentProviderIds = providers.map((p) => p._id))),
25
+ );
26
+ }
27
+
28
+ if (deliveryProviderTypes?.length) {
29
+ promises.push(
30
+ modules.delivery
31
+ .findProviders({ type: { $in: deliveryProviderTypes as DeliveryProviderType[] } })
32
+ .then((providers) => (deliveryProviderIds = providers.map((p) => p._id))),
33
+ );
34
+ }
35
+
36
+ await Promise.all(promises);
37
+ const [orderPayments, orderDeliveries] = await Promise.all([
38
+ paymentProviderIds
39
+ ? modules.orders.payments.findOrderPaymentsByProviderIds({ paymentProviderIds })
40
+ : [],
41
+ deliveryProviderIds
42
+ ? modules.orders.deliveries.findDeliveryByProvidersId({ deliveryProviderIds })
43
+ : [],
44
+ ]);
45
+ if (
46
+ (paymentProviderTypes?.length && !orderPayments.length) ||
47
+ (deliveryProviderTypes && !orderDeliveries.length)
48
+ )
49
+ return 0;
50
+ const paymentIds = orderPayments.map((p) => p._id);
51
+ const deliveryIds = orderDeliveries.map((d) => d._id);
52
+
53
+ return modules.orders.count({ ...restParams, paymentIds, deliveryIds });
13
54
  }
@@ -248,7 +248,14 @@ export default [
248
248
  """
249
249
  Returns total number of orders
250
250
  """
251
- ordersCount(includeCarts: Boolean = false, queryString: String): Int!
251
+ ordersCount(
252
+ includeCarts: Boolean = false
253
+ queryString: String
254
+ paymentProviderTypes: [PaymentProviderType!]
255
+ deliveryProviderTypes: [DeliveryProviderType!]
256
+ dateRange: DateFilterInput
257
+ status: [OrderStatus!]
258
+ ): Int!
252
259
 
253
260
  """
254
261
  Get all orders, by default sorted by creation date (descending)
@@ -260,6 +267,9 @@ export default [
260
267
  queryString: String
261
268
  status: [OrderStatus!]
262
269
  sort: [SortOptionInput!]
270
+ paymentProviderTypes: [PaymentProviderType!]
271
+ deliveryProviderTypes: [DeliveryProviderType!]
272
+ dateRange: DateFilterInput
263
273
  ): [Order!]!
264
274
 
265
275
  """