menu count
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-23 19:39:39 +03:30
parent 9ccddbde11
commit bf203a579d
4 changed files with 26 additions and 11 deletions
@@ -51,10 +51,10 @@ export class AdminController {
return this.adminService.updateMe(adminId, dto);
}
@Get('admin/dashboard/counts')
@ApiOperation({ summary: 'Get dashboard entity counts for admin panel' })
getDashboardCounts() {
return this.adminService.getDashboardCounts();
@Get('admin/menu/counts')
@ApiOperation({ summary: 'Get metrics for admin panel' })
getDashboardCounts(@AdminId() adminId: string) {
return this.adminService.getDashboardCounts(adminId);
}
@Get('admin/home/stats')
+17 -3
View File
@@ -165,11 +165,25 @@ export class AdminService {
return permissionNames.filter((name) => adminPermissionNames.has(name))
}
async getDashboardCounts() {
async getDashboardCounts(adminId: string) {
const permissions = await this.ownedPermissions(adminId, [
PermissionEnum.VIEW_ORDERS,
PermissionEnum.VIEW_ASSIGNED_ORDERS,
]);
const canViewAnyOrder = permissions.includes(PermissionEnum.VIEW_ORDERS);
const canViewAssignedOrder = permissions.includes(PermissionEnum.VIEW_ASSIGNED_ORDERS);
const ordersCountPromise = canViewAnyOrder
? this.em.count(Order)
: canViewAssignedOrder
? this.em.count(Order, { designers: { designer: { id: adminId } } })
: Promise.resolve(0);
const [requestsCount, invoicesCount, ordersCount, paymentsCount] = await Promise.all([
this.em.count(Request),
this.em.count(Invoice),
this.em.count(Order),
this.em.count(Invoice, { status: { $nin: [InvoiceConfirmStatusEnum.ARCHIVED] } }),
ordersCountPromise,
this.em.count(Payment),
]);
@@ -39,9 +39,9 @@ export class UsersController {
return user;
}
@Get('public/dashboard/counts')
@Get('public/menu/counts')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Get dashboard entity counts for user panel' })
@ApiOperation({ summary: 'Get metrics for user panel' })
getDashboardCounts(@UserId() userId: string) {
return this.userService.getDashboardCounts(userId);
}
+2 -1
View File
@@ -13,6 +13,7 @@ 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';
import { InvoiceConfirmStatusEnum } from 'src/modules/invoice/enum/invoice-confirm-status.enum';
@Injectable()
export class UserService {
@@ -125,7 +126,7 @@ export class UserService {
async getDashboardCounts(userId: string) {
const [requestsCount, invoicesCount, ordersCount, paymentsCount] = await Promise.all([
this.em.count(Request, { user: { id: userId } }),
this.em.count(Invoice, { user: { id: userId } }),
this.em.count(Invoice, { user: { id: userId }, status: { $nin: [InvoiceConfirmStatusEnum.ARCHIVED] } }),
this.em.count(Order, { user: { id: userId } }),
this.em.count(Payment, { invoice: { user: { id: userId } } }),
]);