diff --git a/packages/medusa-js/src/resources/admin/draft-orders.ts b/packages/medusa-js/src/resources/admin/draft-orders.ts new file mode 100644 index 0000000000..2cf16c9703 --- /dev/null +++ b/packages/medusa-js/src/resources/admin/draft-orders.ts @@ -0,0 +1,116 @@ +import { + AdminDraftOrdersDeleteRes, + AdminDraftOrdersListRes, + AdminDraftOrdersRes, + AdminGetDraftOrdersParams, + AdminPostDraftOrdersDraftOrderLineItemsItemReq, + AdminPostDraftOrdersDraftOrderLineItemsReq, + AdminPostDraftOrdersDraftOrderRegisterPaymentRes, + AdminPostDraftOrdersDraftOrderReq, +} from "@medusajs/medusa" +import { ResponsePromise } from "../../typings" +import BaseResource from "../base" + +class AdminDraftOrdersResource extends BaseResource { + /** + * @description Creates a draft order + */ + create( + payload: AdminPostDraftOrdersDraftOrderReq + ): ResponsePromise { + const path = `/admin/draft-orders` + return this.client.request("POST", path, payload) + } + + /** + * @description Add line item to draft order + */ + addLineItem( + id: string, + payload: AdminPostDraftOrdersDraftOrderLineItemsReq + ): ResponsePromise { + const path = `/admin/draft-orders/${id}` + return this.client.request("POST", path, payload) + } + + /** + * @description Delete draft order + */ + delete(id: string): ResponsePromise { + const path = `/admin/draft-orders/${id}` + return this.client.request("DELETE", path) + } + + /** + * @description Remove line item + */ + removeLineItem( + id: string, + itemId: string + ): ResponsePromise { + const path = `/admin/draft-orders/${id}/line-items/${itemId}` + return this.client.request("DELETE", path) + } + + /** + * @description Retrieves a draft order + */ + retrieve(id: string): ResponsePromise { + const path = `/admin/draft-orders/${id}` + return this.client.request("GET", path) + } + + /** + * @description Lists draft orders + */ + list( + query: AdminGetDraftOrdersParams + ): ResponsePromise { + let path = `/admin/draft-orders` + + if (query) { + const queryString = Object.entries(query).map(([key, value]) => { + return `${key}=${value}` + }) + + path = `/admin/draft-orders?${queryString.join("&")}` + } + + return this.client.request("GET", path) + } + + /** + * @description Mark a draft order as paid + */ + markPaid( + id: string + ): ResponsePromise { + const path = `/admin/draft-orders/${id}/register-payment` + return this.client.request("POST", path, {}) + } + + /** + * @description Update draft order + */ + update( + id: string, + payload: AdminPostDraftOrdersDraftOrderReq + ): ResponsePromise { + const path = `/admin/draft-orders/${id}` + return this.client.request("POST", path, payload) + } + + /** + * @description Update draft order line item + */ + updateLineItem( + id: string, + itemId: string, + payload: AdminPostDraftOrdersDraftOrderLineItemsItemReq + ): ResponsePromise { + const path = `/admin/draft-orders/${id}/line-items/${itemId}` + return this.client.request("POST", path, payload) + } +} + +export default AdminDraftOrdersResource diff --git a/packages/medusa/src/api/index.js b/packages/medusa/src/api/index.js index 43372a0fc8..bdc7e62fcf 100644 --- a/packages/medusa/src/api/index.js +++ b/packages/medusa/src/api/index.js @@ -17,6 +17,7 @@ export default (container, config) => { export * from "./routes/admin/auth" export * from "./routes/admin/customers" +export * from "./routes/admin/draft-orders" export * from "./routes/admin/discounts" export * from "./routes/admin/notifications" export * from "./routes/admin/store" diff --git a/packages/medusa/src/api/routes/admin/draft-orders/index.ts b/packages/medusa/src/api/routes/admin/draft-orders/index.ts index 146bff1127..8b2a2345a8 100644 --- a/packages/medusa/src/api/routes/admin/draft-orders/index.ts +++ b/packages/medusa/src/api/routes/admin/draft-orders/index.ts @@ -1,7 +1,7 @@ import { Router } from "express" -import { DraftOrder, Order, Cart } from "../../../.." -import middlewares from "../../../middlewares" +import { Cart, DraftOrder, Order } from "../../../.." import { DeleteResponse, PaginatedResponse } from "../../../../types/common" +import middlewares from "../../../middlewares" const route = Router()