order-management 0.0.17 → 0.0.19

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 (48) hide show
  1. package/.medusa/server/src/admin/index.js +644 -11
  2. package/.medusa/server/src/admin/index.mjs +644 -11
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +74 -0
  4. package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +152 -0
  5. package/.medusa/server/src/api/admin/swaps/[id]/reject/route.js +43 -0
  6. package/.medusa/server/src/api/admin/swaps/[id]/route.js +70 -0
  7. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +45 -0
  8. package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +148 -0
  9. package/.medusa/server/src/api/admin/swaps/route.js +51 -0
  10. package/.medusa/server/src/api/admin/swaps/validators.js +22 -0
  11. package/.medusa/server/src/api/store/guest-orders/[id]/invoice/route.js +17 -5
  12. package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +17 -5
  13. package/.medusa/server/src/api/store/guest-orders/[id]/route.js +17 -5
  14. package/.medusa/server/src/api/store/guest-orders/route.js +17 -5
  15. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +107 -0
  16. package/.medusa/server/src/api/store/otp/request/route.js +12 -5
  17. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +64 -0
  18. package/.medusa/server/src/api/store/swaps/[id]/route.js +112 -0
  19. package/.medusa/server/src/api/store/swaps/route.js +117 -0
  20. package/.medusa/server/src/helpers/index.js +18 -0
  21. package/.medusa/server/src/helpers/swaps.js +88 -0
  22. package/.medusa/server/src/modules/swap/index.js +13 -0
  23. package/.medusa/server/src/modules/swap/migrations/Migration20260121164326.js +49 -0
  24. package/.medusa/server/src/modules/swap/models/swap.js +21 -0
  25. package/.medusa/server/src/modules/swap/service.js +224 -0
  26. package/.medusa/server/src/services/otp-service.js +16 -5
  27. package/.medusa/server/src/subscribers/send-order-email.js +27 -8
  28. package/.medusa/server/src/workflows/index.js +8 -2
  29. package/.medusa/server/src/workflows/steps/swap/calculate-difference-step.js +56 -0
  30. package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +71 -0
  31. package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +79 -0
  32. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +29 -0
  33. package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +102 -0
  34. package/.medusa/server/src/workflows/steps/swap/index.js +26 -0
  35. package/.medusa/server/src/workflows/steps/swap/retrieve-swap-step.js +26 -0
  36. package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +132 -0
  37. package/.medusa/server/src/workflows/steps/swap/update-swap-status-step.js +25 -0
  38. package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +25 -0
  39. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +69 -0
  40. package/.medusa/server/src/workflows/steps/swap/validate-swap-items-step.js +41 -0
  41. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +22 -0
  42. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +52 -0
  43. package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +36 -0
  44. package/.medusa/server/src/workflows/swaps/types.js +3 -0
  45. package/.medusa/server/src/workflows/swaps/update-swap-status-workflow.js +23 -0
  46. package/README.md +208 -0
  47. package/package.json +1 -1
  48. package/.medusa/server/src/utils/resolve-options.js +0 -101
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const approve_swap_workflow_1 = require("../../../../../workflows/swaps/approve-swap-workflow");
6
+ const execute_swap_workflow_1 = require("../../../../../workflows/swaps/execute-swap-workflow");
7
+ const POST = async (req, res) => {
8
+ const { id } = req.params;
9
+ if (!id) {
10
+ res.status(400).json({ message: "Swap ID is required" });
11
+ return;
12
+ }
13
+ // Type-safe access to auth_context
14
+ const authContext = req.auth_context;
15
+ const adminId = authContext?.actor_id || authContext?.user_id || "admin";
16
+ try {
17
+ // Step 1: Approve the swap
18
+ const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
19
+ input: {
20
+ swap_id: id,
21
+ admin_id: adminId,
22
+ },
23
+ });
24
+ // Step 2: Execute swap (create Medusa return and exchange)
25
+ try {
26
+ const { result: executionResult } = await (0, execute_swap_workflow_1.executeSwapWorkflow)(req.scope).run({
27
+ input: {
28
+ swap_id: id,
29
+ },
30
+ });
31
+ res.json({
32
+ ...approvalResult,
33
+ execution: executionResult,
34
+ });
35
+ }
36
+ catch (executionError) {
37
+ // If execution fails, still return approval result but log the error
38
+ // Admin can retry execution later
39
+ if (executionError instanceof utils_1.MedusaError) {
40
+ res.status(500).json({
41
+ ...approvalResult,
42
+ execution_error: {
43
+ message: executionError.message,
44
+ type: executionError.type,
45
+ },
46
+ warning: "Swap was approved but Medusa exchange creation failed. Please retry execution.",
47
+ });
48
+ return;
49
+ }
50
+ throw executionError;
51
+ }
52
+ }
53
+ catch (error) {
54
+ if (error instanceof utils_1.MedusaError) {
55
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
56
+ ? 404
57
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
58
+ ? 400
59
+ : 500;
60
+ res.status(statusCode).json({
61
+ message: error.message,
62
+ type: error.type,
63
+ });
64
+ return;
65
+ }
66
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
67
+ res.status(500).json({
68
+ message: "Failed to approve swap",
69
+ error: errorMessage,
70
+ });
71
+ }
72
+ };
73
+ exports.POST = POST;
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGdHQUEwRjtBQUVuRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFBO0lBRXhFLElBQUksQ0FBQztRQUNILDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUMzRSxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7YUFDRixDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLEdBQUcsY0FBYztnQkFDakIsU0FBUyxFQUFFLGVBQWU7YUFDM0IsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUFDLE9BQU8sY0FBYyxFQUFFLENBQUM7WUFDeEIscUVBQXFFO1lBQ3JFLGtDQUFrQztZQUNsQyxJQUFJLGNBQWMsWUFBWSxtQkFBVyxFQUFFLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixHQUFHLGNBQWM7b0JBQ2pCLGVBQWUsRUFBRTt3QkFDZixPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87d0JBQy9CLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLGdGQUFnRjtpQkFDMUYsQ0FBQyxDQUFBO2dCQUNGLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxjQUFjLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE5RVksUUFBQSxJQUFJLFFBOEVoQiJ9
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const zod_1 = require("zod");
6
+ const swap_1 = require("../../../../../modules/swap");
7
+ const ProcessPaymentSchema = zod_1.z.object({
8
+ action: zod_1.z.enum(["approve", "reject"]),
9
+ payment_intent_id: zod_1.z.string().optional(),
10
+ });
11
+ const POST = async (req, res) => {
12
+ const { id } = req.params;
13
+ if (!id) {
14
+ res.status(400).json({ message: "Swap ID is required" });
15
+ return;
16
+ }
17
+ // Type-safe access to auth_context
18
+ const authContext = req.auth_context;
19
+ const adminId = authContext?.actor_id || authContext?.user_id || "admin";
20
+ try {
21
+ const body = ProcessPaymentSchema.parse(req.body);
22
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
23
+ const swap = await swapService.retrieveSwap(id);
24
+ const swapData = swap;
25
+ if (swapData.payment_status !== "pending") {
26
+ res.status(400).json({
27
+ message: `Payment cannot be processed. Current status: ${swapData.payment_status}`,
28
+ });
29
+ return;
30
+ }
31
+ const differenceDue = swapData.difference_due || 0;
32
+ if (differenceDue <= 0) {
33
+ res.status(400).json({
34
+ message: "No payment required for this swap",
35
+ });
36
+ return;
37
+ }
38
+ const swapMetadata = swapData.metadata || {};
39
+ const medusaIntegration = swapMetadata.medusa_integration || {};
40
+ if (body.action === "approve") {
41
+ // Resolve payment service
42
+ const paymentService = req.scope.resolve("payment");
43
+ let paymentIntentId = body.payment_intent_id;
44
+ if (paymentService?.capturePayment && swapData.order_id) {
45
+ try {
46
+ const payment = await paymentService.capturePayment({
47
+ order_id: swapData.order_id,
48
+ amount: differenceDue,
49
+ payment_intent_id: paymentIntentId,
50
+ });
51
+ paymentIntentId = payment.id;
52
+ // Update swap with captured payment
53
+ await swapService.updateSwaps({
54
+ selector: { id },
55
+ data: {
56
+ payment_status: "captured",
57
+ metadata: {
58
+ ...swapMetadata,
59
+ medusa_integration: {
60
+ ...medusaIntegration,
61
+ payment_intent_id: paymentIntentId,
62
+ payment_captured_at: new Date().toISOString(),
63
+ payment_captured_by: adminId,
64
+ },
65
+ },
66
+ },
67
+ });
68
+ }
69
+ catch (error) {
70
+ res.status(500).json({
71
+ message: "Failed to capture payment",
72
+ error: error instanceof Error ? error.message : "Unknown error",
73
+ });
74
+ return;
75
+ }
76
+ }
77
+ else {
78
+ // Mark as manually processed if payment service not available
79
+ await swapService.updateSwaps({
80
+ selector: { id },
81
+ data: {
82
+ payment_status: "captured",
83
+ metadata: {
84
+ ...swapMetadata,
85
+ medusa_integration: {
86
+ ...medusaIntegration,
87
+ payment_manually_processed: true,
88
+ payment_captured_at: new Date().toISOString(),
89
+ payment_captured_by: adminId,
90
+ },
91
+ },
92
+ },
93
+ });
94
+ }
95
+ const updatedSwap = await swapService.retrieveSwap(id);
96
+ res.json({
97
+ swap: updatedSwap,
98
+ message: "Payment approved and captured",
99
+ });
100
+ }
101
+ else if (body.action === "reject") {
102
+ // Reject payment - cancel the swap or mark for manual review
103
+ await swapService.updateSwaps({
104
+ selector: { id },
105
+ data: {
106
+ payment_status: "rejected",
107
+ metadata: {
108
+ ...swapMetadata,
109
+ medusa_integration: {
110
+ ...medusaIntegration,
111
+ payment_rejected_at: new Date().toISOString(),
112
+ payment_rejected_by: adminId,
113
+ },
114
+ },
115
+ },
116
+ });
117
+ const updatedSwap = await swapService.retrieveSwap(id);
118
+ res.json({
119
+ swap: updatedSwap,
120
+ message: "Payment rejected",
121
+ });
122
+ }
123
+ }
124
+ catch (error) {
125
+ if (error instanceof zod_1.z.ZodError) {
126
+ res.status(400).json({
127
+ message: "Invalid request data",
128
+ errors: error.errors,
129
+ });
130
+ return;
131
+ }
132
+ if (error instanceof utils_1.MedusaError) {
133
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
134
+ ? 404
135
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
136
+ ? 400
137
+ : 500;
138
+ res.status(statusCode).json({
139
+ message: error.message,
140
+ type: error.type,
141
+ });
142
+ return;
143
+ }
144
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
145
+ res.status(500).json({
146
+ message: "Failed to process payment",
147
+ error: errorMessage,
148
+ });
149
+ }
150
+ };
151
+ exports.POST = POST;
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vcHJvY2Vzcy1wYXltZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCw2QkFBdUI7QUFDdkIsc0RBQXlEO0FBR3pELE1BQU0sb0JBQW9CLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxNQUFNLEVBQUUsT0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyQyxpQkFBaUIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ3pDLENBQUMsQ0FBQTtBQUVLLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUE7SUFFeEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7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
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const swap_1 = require("../../../../../modules/swap");
6
+ const validators_1 = require("../../validators");
7
+ const POST = async (req, res) => {
8
+ const { id } = req.params;
9
+ if (!id) {
10
+ res.status(400).json({ message: "Swap ID is required" });
11
+ return;
12
+ }
13
+ // Type-safe access to auth_context
14
+ const authContext = req.auth_context;
15
+ const adminId = authContext?.actor_id || authContext?.user_id || "admin";
16
+ try {
17
+ const body = validators_1.RejectSwapSchema.parse(req.body);
18
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
19
+ const swap = await swapService.rejectSwap(id, adminId, body.reason);
20
+ res.json({ swap });
21
+ }
22
+ catch (error) {
23
+ if (error instanceof utils_1.MedusaError) {
24
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
25
+ ? 404
26
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
27
+ ? 400
28
+ : 500;
29
+ res.status(statusCode).json({
30
+ message: error.message,
31
+ type: error.type,
32
+ });
33
+ return;
34
+ }
35
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
36
+ res.status(500).json({
37
+ message: "Failed to reject swap",
38
+ error: errorMessage,
39
+ });
40
+ }
41
+ };
42
+ exports.POST = POST;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vcmVqZWN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxzREFBeUQ7QUFFekQsaURBQW1EO0FBRTVDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUE7SUFFeEUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsNkJBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUU3QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRW5FLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3BCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUFoRFksUUFBQSxJQUFJLFFBZ0RoQiJ9
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const utils_2 = require("@medusajs/framework/utils");
6
+ const swap_1 = require("../../../../modules/swap");
7
+ const GET = async (req, res) => {
8
+ const { id } = req.params;
9
+ if (!id) {
10
+ res.status(400).json({ message: "Swap ID is required" });
11
+ return;
12
+ }
13
+ try {
14
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
15
+ const swap = await swapService.retrieveSwap(id);
16
+ const swapData = swap;
17
+ // Fetch order details for context
18
+ let order = null;
19
+ if (swapData.order_id) {
20
+ try {
21
+ const remoteQuery = req.scope.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
22
+ const queryObject = (0, utils_2.remoteQueryObjectFromString)({
23
+ entryPoint: "order",
24
+ fields: [
25
+ "id",
26
+ "display_id",
27
+ "email",
28
+ "customer_id",
29
+ "customer.*",
30
+ "items.*",
31
+ "total",
32
+ "currency_code",
33
+ "created_at",
34
+ ],
35
+ filters: {
36
+ id: [swapData.order_id],
37
+ },
38
+ });
39
+ const orders = await remoteQuery(queryObject);
40
+ const orderArray = Array.isArray(orders) ? orders : orders ? [orders] : [];
41
+ order = orderArray[0] || null;
42
+ }
43
+ catch (error) {
44
+ // Order fetch failed, but continue without order data
45
+ console.warn("Failed to fetch order for swap:", error);
46
+ }
47
+ }
48
+ res.json({
49
+ swap,
50
+ order,
51
+ });
52
+ }
53
+ catch (error) {
54
+ if (error instanceof utils_1.MedusaError) {
55
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND ? 404 : 400;
56
+ res.status(statusCode).json({
57
+ message: error.message,
58
+ type: error.type,
59
+ });
60
+ return;
61
+ }
62
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
63
+ res.status(500).json({
64
+ message: "Failed to retrieve swap",
65
+ error: errorMessage,
66
+ });
67
+ }
68
+ };
69
+ exports.GET = GET;
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELHFEQUFrRztBQUVsRyxtREFBc0Q7QUFHL0MsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWMsa0JBQVcsQ0FBQyxDQUFBO1FBRS9ELE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUE2QixDQUFBO1FBRTlDLGtDQUFrQztRQUNsQyxJQUFJLEtBQUssR0FBWSxJQUFJLENBQUE7UUFDekIsSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDO2dCQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7Z0JBRUQsTUFBTSxXQUFXLEdBQUcsSUFBQSxtQ0FBMkIsRUFBQztvQkFDOUMsVUFBVSxFQUFFLE9BQU87b0JBQ25CLE1BQU0sRUFBRTt3QkFDTixJQUFJO3dCQUNKLFlBQVk7d0JBQ1osT0FBTzt3QkFDUCxhQUFhO3dCQUNiLFlBQVk7d0JBQ1osU0FBUzt3QkFDVCxPQUFPO3dCQUNQLGVBQWU7d0JBQ2YsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztxQkFDeEI7aUJBQ0YsQ0FBQyxDQUFBO2dCQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUM3QyxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO2dCQUMxRSxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQTtZQUMvQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixzREFBc0Q7Z0JBQ3RELE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDeEQsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsSUFBSTtZQUNKLEtBQUs7U0FDTixDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUE7WUFFeEQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSx5QkFBeUI7WUFDbEMsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQTFFWSxRQUFBLEdBQUcsT0EwRWYifQ==
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const update_swap_status_workflow_1 = require("../../../../../workflows/swaps/update-swap-status-workflow");
6
+ const validators_1 = require("../../validators");
7
+ const POST = async (req, res) => {
8
+ const { id } = req.params;
9
+ if (!id) {
10
+ res.status(400).json({ message: "Swap ID is required" });
11
+ return;
12
+ }
13
+ try {
14
+ const body = validators_1.UpdateSwapStatusSchema.parse(req.body);
15
+ const { result } = await (0, update_swap_status_workflow_1.updateSwapStatusWorkflow)(req.scope).run({
16
+ input: {
17
+ swap_id: id,
18
+ status: body.status,
19
+ metadata: body.metadata,
20
+ },
21
+ });
22
+ res.json(result);
23
+ }
24
+ catch (error) {
25
+ if (error instanceof utils_1.MedusaError) {
26
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
27
+ ? 404
28
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
29
+ ? 400
30
+ : 500;
31
+ res.status(statusCode).json({
32
+ message: error.message,
33
+ type: error.type,
34
+ });
35
+ return;
36
+ }
37
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
38
+ res.status(500).json({
39
+ message: "Failed to update swap status",
40
+ error: errorMessage,
41
+ });
42
+ }
43
+ };
44
+ exports.POST = POST;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vc3RhdHVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCw0R0FBcUc7QUFDckcsaURBQXlEO0FBRWxELE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLG1DQUFzQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFbkQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxzREFBd0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQy9ELEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTthQUN4QjtTQUNGLENBQUMsQ0FBQTtRQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUN4QyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZO29CQUMvQyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsR0FBRyxDQUFBO1lBRVQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO1FBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsS0FBSyxFQUFFLFlBQVk7U0FDcEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQTdDWSxRQUFBLElBQUksUUE2Q2hCIn0=
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const swap_1 = require("../../../../../modules/swap");
6
+ const utils_2 = require("@medusajs/framework/utils");
7
+ const POST = async (req, res) => {
8
+ const { id } = req.params;
9
+ if (!id) {
10
+ res.status(400).json({ message: "Swap ID is required" });
11
+ return;
12
+ }
13
+ try {
14
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
15
+ const swap = await swapService.retrieveSwap(id);
16
+ const swapData = swap;
17
+ if (!swapData.exchange_id && !swapData.return_id) {
18
+ res.json({
19
+ swap,
20
+ status_synced: false,
21
+ });
22
+ return;
23
+ }
24
+ const remoteQuery = req.scope.resolve(utils_2.ContainerRegistrationKeys.REMOTE_QUERY);
25
+ let medusaStatus;
26
+ let updatedStatus;
27
+ // Query Medusa exchange status if exchange_id exists
28
+ if (swapData.exchange_id) {
29
+ try {
30
+ const exchangeQuery = (0, utils_2.remoteQueryObjectFromString)({
31
+ entryPoint: "exchange",
32
+ fields: ["id", "status"],
33
+ filters: {
34
+ id: [swapData.exchange_id],
35
+ },
36
+ });
37
+ const exchanges = await remoteQuery(exchangeQuery);
38
+ const exchangeArray = Array.isArray(exchanges) ? exchanges : exchanges ? [exchanges] : [];
39
+ const exchange = exchangeArray.find((e) => {
40
+ const eData = e;
41
+ return eData?.id === swapData.exchange_id;
42
+ });
43
+ if (exchange) {
44
+ const exchangeData = exchange;
45
+ medusaStatus = exchangeData.status;
46
+ const statusMap = {
47
+ requested: "return_started",
48
+ received: "return_received",
49
+ shipped: "new_items_shipped",
50
+ delivered: "completed",
51
+ cancelled: "cancelled",
52
+ };
53
+ updatedStatus = statusMap[medusaStatus || ""];
54
+ }
55
+ }
56
+ catch (error) {
57
+ // If exchange query fails, continue
58
+ }
59
+ }
60
+ // Query Medusa return status if return_id exists and exchange status not found
61
+ if (!medusaStatus && swapData.return_id) {
62
+ try {
63
+ const returnQuery = (0, utils_2.remoteQueryObjectFromString)({
64
+ entryPoint: "return",
65
+ fields: ["id", "status"],
66
+ filters: {
67
+ id: [swapData.return_id],
68
+ },
69
+ });
70
+ const returns = await remoteQuery(returnQuery);
71
+ const returnArray = Array.isArray(returns) ? returns : returns ? [returns] : [];
72
+ const returnData = returnArray.find((r) => {
73
+ const rData = r;
74
+ return rData?.id === swapData.return_id;
75
+ });
76
+ if (returnData) {
77
+ const returnDataTyped = returnData;
78
+ medusaStatus = returnDataTyped.status;
79
+ const statusMap = {
80
+ requested: "return_started",
81
+ received: "return_received",
82
+ cancelled: "cancelled",
83
+ };
84
+ if (!updatedStatus) {
85
+ updatedStatus = statusMap[medusaStatus || ""];
86
+ }
87
+ }
88
+ }
89
+ catch (error) {
90
+ // If return query fails, cannot sync
91
+ }
92
+ }
93
+ // Update swap status if it differs from Medusa status
94
+ let statusSynced = false;
95
+ if (updatedStatus && updatedStatus !== swapData.status) {
96
+ const swapMetadata = swapData.metadata || {};
97
+ const statusHistory = swapMetadata.status_history || [];
98
+ await swapService.updateSwaps({
99
+ selector: { id },
100
+ data: {
101
+ status: updatedStatus,
102
+ metadata: {
103
+ ...swapMetadata,
104
+ status_history: [
105
+ ...statusHistory,
106
+ {
107
+ status: updatedStatus,
108
+ timestamp: new Date().toISOString(),
109
+ synced_from_medusa: true,
110
+ medusa_status: medusaStatus,
111
+ },
112
+ ],
113
+ last_synced_at: new Date().toISOString(),
114
+ },
115
+ },
116
+ });
117
+ statusSynced = true;
118
+ }
119
+ // Retrieve the latest swap data
120
+ const finalSwap = await swapService.retrieveSwap(id);
121
+ res.json({
122
+ swap: finalSwap,
123
+ status_synced: statusSynced,
124
+ medusa_status: medusaStatus,
125
+ });
126
+ }
127
+ catch (error) {
128
+ if (error instanceof utils_1.MedusaError) {
129
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
130
+ ? 404
131
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
132
+ ? 400
133
+ : 500;
134
+ res.status(statusCode).json({
135
+ message: error.message,
136
+ type: error.type,
137
+ });
138
+ return;
139
+ }
140
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
141
+ res.status(500).json({
142
+ message: "Failed to sync swap status",
143
+ error: errorMessage,
144
+ });
145
+ }
146
+ };
147
+ exports.POST = POST;
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vc3luYy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsc0RBQXlEO0FBRXpELHFEQUFrRztBQUczRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFDL0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQy9DLE1BQU0sUUFBUSxHQUFHLElBS2hCLENBQUE7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqRCxHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLElBQUk7Z0JBQ0osYUFBYSxFQUFFLEtBQUs7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDbkMsaUNBQXlCLENBQUMsWUFBWSxDQUN2QyxDQUFBO1FBRUQsSUFBSSxZQUFnQyxDQUFBO1FBQ3BDLElBQUksYUFBaUMsQ0FBQTtRQUVyQyxx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
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const swap_1 = require("../../../modules/swap");
5
+ const GET = async (req, res) => {
6
+ try {
7
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
8
+ // Get query parameters
9
+ const status = req.query.status;
10
+ const orderId = req.query.order_id;
11
+ const customerId = req.query.customer_id;
12
+ const limit = req.query.limit ? parseInt(req.query.limit, 10) : 50;
13
+ const offset = req.query.offset ? parseInt(req.query.offset, 10) : 0;
14
+ const filters = {};
15
+ if (status) {
16
+ filters.status = status;
17
+ }
18
+ if (orderId) {
19
+ filters.order_id = orderId;
20
+ }
21
+ // Note: customer_id filtering would require joining with orders table
22
+ // For now, we'll filter client-side if needed
23
+ const swaps = await swapService.listSwaps(filters, {
24
+ take: limit,
25
+ skip: offset,
26
+ });
27
+ const swapArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
28
+ // Filter by customer_id if provided (would need order lookup in production)
29
+ let filteredSwaps = swapArray;
30
+ if (customerId) {
31
+ // In production, you'd want to join with orders table
32
+ // For now, we'll return all swaps
33
+ filteredSwaps = swapArray;
34
+ }
35
+ res.json({
36
+ swaps: filteredSwaps,
37
+ count: filteredSwaps.length,
38
+ limit,
39
+ offset,
40
+ });
41
+ }
42
+ catch (error) {
43
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
44
+ res.status(500).json({
45
+ message: "Failed to retrieve swaps",
46
+ error: errorMessage,
47
+ });
48
+ }
49
+ };
50
+ exports.GET = GET;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFtRDtBQUc1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBNEIsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFpQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDNUIsQ0FBQztRQUNELHNFQUFzRTtRQUN0RSw4Q0FBOEM7UUFFOUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVyRSw0RUFBNEU7UUFDNUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFBO1FBQzdCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixzREFBc0Q7WUFDdEQsa0NBQWtDO1lBQ2xDLGFBQWEsR0FBRyxTQUFTLENBQUE7UUFDM0IsQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxLQUFLLEVBQUUsYUFBYTtZQUNwQixLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDM0IsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUFwRFksUUFBQSxHQUFHLE9Bb0RmIn0=
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RejectSwapSchema = exports.UpdateSwapStatusSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.UpdateSwapStatusSchema = zod_1.z.object({
6
+ status: zod_1.z.enum([
7
+ "requested",
8
+ "approved",
9
+ "rejected",
10
+ "return_started",
11
+ "return_shipped",
12
+ "return_received",
13
+ "new_items_shipped",
14
+ "completed",
15
+ "cancelled",
16
+ ]),
17
+ metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
18
+ });
19
+ exports.RejectSwapSchema = zod_1.z.object({
20
+ reason: zod_1.z.string().optional(),
21
+ });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3dhcHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLHNCQUFzQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUM7UUFDYixXQUFXO1FBQ1gsVUFBVTtRQUNWLFVBQVU7UUFDVixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLFdBQVc7S0FDWixDQUFDO0lBQ0YsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQTtBQUVXLFFBQUEsZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDLENBQUEifQ==