From 1d008edc889e17221cb56ee967c62b6a0bb1e1fe Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 23 Feb 2026 15:53:02 +0330 Subject: [PATCH] admin stats --- .../order/controllers/order.controller.ts | 7 +++++++ src/modules/order/providers/order.service.ts | 19 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/modules/order/controllers/order.controller.ts b/src/modules/order/controllers/order.controller.ts index 0ee4c5d..6a5e4c4 100644 --- a/src/modules/order/controllers/order.controller.ts +++ b/src/modules/order/controllers/order.controller.ts @@ -116,4 +116,11 @@ export class OrderController { getPrint(@Param('orderId') orderId: string) { return this.orderService.getPrint(orderId); } + + @Get('admin/orders/stats') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: 'Get Admin Orders stats' }) + getAdminStats() { + return this.orderService.getAdminStats(); + } } diff --git a/src/modules/order/providers/order.service.ts b/src/modules/order/providers/order.service.ts index d696d9c..8c8cced 100644 --- a/src/modules/order/providers/order.service.ts +++ b/src/modules/order/providers/order.service.ts @@ -295,4 +295,23 @@ export class OrderService { completedOrdersCount, }; } + + async getAdminStats() { + const [requestsCount, invoicesCount, inProgressOrdersCount, completedOrdersCount] = + await Promise.all([ + this.em.count(Request), + this.em.count(Invoice), + this.em.count(Order, { + status: { $nin: [OrderStatusEnum.FINISHED, OrderStatusEnum.CANCELED] }, + }), + this.em.count(Order, { status: OrderStatusEnum.FINISHED }), + ]); + + return { + requestsCount, + invoicesCount, + inProgressOrdersCount, + completedOrdersCount, + }; + } } \ No newline at end of file