order stats

This commit is contained in:
2026-02-23 09:40:18 +03:30
parent 30c9e9e24a
commit 1e7ad2f72e
2 changed files with 29 additions and 2 deletions
@@ -36,7 +36,12 @@ export class OrderController {
return this.orderService.getOrderAsUser(userId, orderId);
}
@Get('public/orders/stats')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Get User Orders stats' })
getStats( @UserId() userId: string) {
return this.orderService.getStats(userId);
}
/*========================== Admin Routes =====================*/
@Post('admin/orders')
@@ -30,6 +30,8 @@ import { UpdateStatusDto } from '../dto/update-status.dto';
import { CreateOrderPrintDto } from '../dto/create-order-print.dto';
import { OrderPrint } from '../entities/print.entity';
import { OrderPrintRepository } from '../repositories/order-print.repository';
import { Request } from 'src/modules/request/entities/request.entity';
import { Invoice } from 'src/modules/invoice/entities/invoice.entity';
@Injectable()
export class OrderService {
@@ -273,4 +275,24 @@ export class OrderService {
}
return order;
}
async getStats(userId: string) {
const [requestsCount, invoicesCount, inProgressOrdersCount, completedOrdersCount] =
await Promise.all([
this.em.count(Request, { user: { id: userId } }),
this.em.count(Invoice, { user: { id: userId } }),
this.em.count(Order, {
user: { id: userId },
status: { $nin: [OrderStatusEnum.FINISHED, OrderStatusEnum.CANCELED] },
}),
this.em.count(Order, { user: { id: userId }, status: OrderStatusEnum.FINISHED }),
]);
return {
requestsCount,
invoicesCount,
inProgressOrdersCount,
completedOrdersCount,
};
}
}