order stats
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user