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:
@@ -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(),
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user