Feat: admin return reason list (#8482)

* feat: add missing endpoints to return reason sdk

* add return reason list route

* add return reason query hooks

* fix update return reasons in order modules service

* fix store/return-reasons middleware

* add missing tests for /return-resasons/:id
This commit is contained in:
Christian
2024-08-08 16:24:13 +02:00
committed by GitHub
parent f9989e1659
commit d4c5f6593d
36 changed files with 724 additions and 90 deletions
@@ -2,15 +2,18 @@ import {
BigNumberInput,
Context,
DAL,
FilterableOrderReturnReasonProps,
FindConfig,
InternalModuleDeclaration,
IOrderModuleService,
ModulesSdkTypes,
OrderDTO,
OrderReturnReasonDTO,
OrderTypes,
RestoreReturn,
SoftDeleteReturn,
UpdateOrderItemWithSelectorDTO,
UpdateOrderReturnReasonDTO,
} from "@medusajs/types"
import {
BigNumber,
@@ -68,6 +71,7 @@ import {
UpdateOrderLineItemTaxLineDTO,
UpdateOrderShippingMethodTaxLineDTO,
} from "@types"
import { UpdateReturnReasonDTO } from "src/types/return-reason"
import {
applyChangesToOrder,
ApplyOrderChangeDTO,
@@ -3250,6 +3254,56 @@ export default class OrderModuleService<
)
}
// @ts-ignore
updateReturnReasons(
id: string,
data: UpdateOrderReturnReasonDTO,
sharedContext?: Context
): Promise<OrderReturnReasonDTO>
updateReturnReasons(
selector: FilterableOrderReturnReasonProps,
data: Partial<UpdateOrderReturnReasonDTO>,
sharedContext?: Context
): Promise<OrderReturnReasonDTO[]>
@InjectManager("baseRepository_")
async updateReturnReasons(
idOrSelector: string | FilterableOrderReturnReasonProps,
data: UpdateOrderReturnReasonDTO,
@MedusaContext() sharedContext: Context = {}
): Promise<OrderReturnReasonDTO[] | OrderReturnReasonDTO> {
let normalizedInput: UpdateReturnReasonDTO[] = []
if (isString(idOrSelector)) {
// Check if the return reason exists in the first place
await this.returnReasonService_.retrieve(idOrSelector, {}, sharedContext)
normalizedInput = [{ id: idOrSelector, ...data }]
} else {
const reasons = await this.returnReasonService_.list(
idOrSelector,
{},
sharedContext
)
normalizedInput = reasons.map((reason) => ({
id: reason.id,
...data,
}))
}
const reasons = await this.returnReasonService_.update(
normalizedInput,
sharedContext
)
const updatedReturnReasons = await this.baseRepository_.serialize<
OrderReturnReasonDTO[]
>(reasons)
return isString(idOrSelector)
? updatedReturnReasons[0]
: updatedReturnReasons
}
@InjectTransactionManager("baseRepository_")
async createExchange_(
data: OrderTypes.CreateOrderExchangeDTO,
@@ -0,0 +1,5 @@
import { UpdateOrderReturnReasonDTO } from "@medusajs/types"
export type UpdateReturnReasonDTO = UpdateOrderReturnReasonDTO & {
id: string
}