feat(medusa): request order transfer storefront API (#10156)

**What**
- add an endpoint for order transfer requests from the storefront

---

CLOSES CMRC-702
This commit is contained in:
Frane Polić
2024-11-19 17:42:25 +00:00
committed by GitHub
parent b43febda54
commit 79088c8a3b
5 changed files with 207 additions and 32 deletions
@@ -0,0 +1,36 @@
import {
getOrderDetailWorkflow,
requestOrderTransferWorkflow,
} from "@medusajs/core-flows"
import {
AuthenticatedMedusaRequest,
MedusaResponse,
} from "@medusajs/framework/http"
import { HttpTypes } from "@medusajs/framework/types"
import { StoreRequestOrderTransferType } from "../../../validators"
export const POST = async (
req: AuthenticatedMedusaRequest<StoreRequestOrderTransferType>,
res: MedusaResponse<HttpTypes.StoreOrderResponse>
) => {
const orderId = req.params.id
const customerId = req.auth_context.actor_id
await requestOrderTransferWorkflow(req.scope).run({
input: {
order_id: orderId,
customer_id: customerId,
logged_in_user: customerId,
description: req.validatedBody.description,
},
})
const { result } = await getOrderDetailWorkflow(req.scope).run({
input: {
fields: req.remoteQueryConfig.fields,
order_id: orderId,
},
})
res.status(200).json({ order: result as HttpTypes.StoreOrder })
}
@@ -9,6 +9,7 @@ import {
StoreGetOrderParams,
StoreGetOrdersParams,
StoreAcceptOrderTransfer,
StoreRequestOrderTransfer,
} from "./validators"
export const storeOrderRoutesMiddlewares: MiddlewareRoute[] = [
@@ -33,6 +34,18 @@ export const storeOrderRoutesMiddlewares: MiddlewareRoute[] = [
),
],
},
{
method: ["POST"],
matcher: "/store/orders/:id/transfer/request",
middlewares: [
authenticate("customer", ["session", "bearer"]),
validateAndTransformBody(StoreRequestOrderTransfer),
validateAndTransformQuery(
StoreGetOrderParams,
QueryConfig.retrieveTransformQueryConfig
),
],
},
{
method: ["POST"],
matcher: "/store/orders/:id/transfer/accept",
@@ -26,3 +26,10 @@ export const StoreAcceptOrderTransfer = z.object({
export type StoreAcceptOrderTransferType = z.infer<
typeof StoreAcceptOrderTransfer
>
export type StoreRequestOrderTransferType = z.infer<
typeof StoreRequestOrderTransfer
>
export const StoreRequestOrderTransfer = z.object({
description: z.string().optional(),
})