From 1ce6ae1714790244dbb7b8bb625a7ffcc9525378 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Fri, 26 Jun 2026 16:00:57 +0330 Subject: [PATCH] up --- .../admin/controllers/admin.controller.ts | 6 ++++++ src/modules/admin/providers/admin.service.ts | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/modules/admin/controllers/admin.controller.ts b/src/modules/admin/controllers/admin.controller.ts index f526e9f..1eb7500 100644 --- a/src/modules/admin/controllers/admin.controller.ts +++ b/src/modules/admin/controllers/admin.controller.ts @@ -45,6 +45,12 @@ export class AdminController { return admin; } + @Get('admin/dashboard/counts') + @ApiOperation({ summary: 'Get dashboard entity counts for admin panel' }) + getDashboardCounts() { + return this.adminService.getDashboardCounts(); + } + @Patch('admin/admins/:adminId') @Permissions(PermissionEnum.MANAGE_ADMINS) diff --git a/src/modules/admin/providers/admin.service.ts b/src/modules/admin/providers/admin.service.ts index 74474bd..73f48e0 100644 --- a/src/modules/admin/providers/admin.service.ts +++ b/src/modules/admin/providers/admin.service.ts @@ -7,6 +7,10 @@ import { CreateAdminDto } from '../dto/create-admin.dto'; import { AdminRepository } from '../repositories/admin.repository'; import { RoleRepository } from 'src/modules/roles/respository/role.repository'; import { PermissionEnum } from 'src/common/enums/permission.enum'; +import { Request } from 'src/modules/request/entities/request.entity'; +import { Invoice } from 'src/modules/invoice/entities/invoice.entity'; +import { Order } from 'src/modules/order/entities/order.entity'; +import { Payment } from 'src/modules/payment/entities/payment.entity'; @Injectable() export class AdminService { @@ -148,4 +152,20 @@ export class AdminService { ) return permissionNames.filter((name) => adminPermissionNames.has(name)) } + + async getDashboardCounts() { + const [requestsCount, invoicesCount, ordersCount, paymentsCount] = await Promise.all([ + this.em.count(Request), + this.em.count(Invoice), + this.em.count(Order), + this.em.count(Payment), + ]); + + return { + requestsCount, + invoicesCount, + ordersCount, + paymentsCount, + }; + } }