diff --git a/src/modules/order/controllers/order.controller.ts b/src/modules/order/controllers/order.controller.ts index ccc9b00..62905e2 100644 --- a/src/modules/order/controllers/order.controller.ts +++ b/src/modules/order/controllers/order.controller.ts @@ -87,9 +87,9 @@ export class OrderController { @Delete('admin/orders/:orderId') @UseGuards(AdminAuthGuard) @Permissions(PermissionEnum.DELETE_ORDER) - @ApiOperation({ summary: 'Soft Delete Order ' }) - softDeleteOrder(@Param('orderId') orderId: string) { - return this.orderService.softDeleteOrder(orderId); + @ApiOperation({ summary: 'Delete Order' }) + deleteOrder(@Param('orderId') orderId: string) { + return this.orderService.deleteOrder(orderId); } diff --git a/src/modules/order/providers/order.service.ts b/src/modules/order/providers/order.service.ts index 0b668b6..3abc78d 100644 --- a/src/modules/order/providers/order.service.ts +++ b/src/modules/order/providers/order.service.ts @@ -277,10 +277,25 @@ export class OrderService { return order; } - async softDeleteOrder(orderId: string): Promise { - const order = await this.findOrderOrFail(orderId); - order.deletedAt = new Date(); - await this.em.flush(); + async deleteOrder(orderId: string): Promise { + await this.em.transactional(async (em) => { + const order = await em.findOne(Order, { id: orderId }, { populate: ['print'] }); + if (!order) { + throw new NotFoundException(`Order with ID ${orderId} not found.`); + } + + await this.chatService.deleteChatsByRefId(orderId, em); + await em.nativeDelete(OrderDesigner, { order: { id: orderId } }); + + const printId = order.print?.id; + if (printId) { + await em.nativeUpdate(Order, { id: orderId }, { print: null }); + await em.nativeDelete(OrderPrintValue, { orderPrint: { id: printId } }); + await em.nativeDelete(OrderPrint, { id: printId }); + } + + await em.nativeDelete(Order, { id: orderId }); + }); }