update prepare time
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-07-01 14:05:39 +03:30
parent bd084e2e63
commit 18f200df9f
6 changed files with 96 additions and 0 deletions
@@ -26,6 +26,7 @@ import { EventEmitter2 } from '@nestjs/event-emitter';
import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events';
import { OrderMessage } from 'src/common/enums/message.enum';
import { AdminCreateOrderDto } from '../dto/admin-create-order.dto';
import { AdminUpdateOrderFeesDto } from '../dto/admin-update-order-fees.dto';
import { FoodOrderReportDto, FoodOrderReportSortBy } from '../dto/food-order-report.dto';
import { DailyOrderReportDto, DailyOrderReportSortBy } from '../dto/daily-order-report.dto';
type OrderItemData = { food: Food; quantity: number; unitPrice: number; discount: number };
@@ -243,6 +244,46 @@ export class OrdersService {
return order;
}
async updateOrderFees(orderId: string, restId: string, dto: AdminUpdateOrderFeesDto): Promise<Order> {
if (dto.deliveryFee === undefined && dto.packingFee === undefined && dto.prepareTime === undefined) {
throw new BadRequestException(OrderMessage.NO_FIELDS_TO_UPDATE);
}
const order = await this.getOrderOrFail(orderId, restId);
if ([OrderStatus.CANCELED, OrderStatus.COMPLETED].includes(order.status)) {
throw new BadRequestException(OrderMessage.CANNOT_UPDATE_CANCELED_OR_COMPLETED_ORDER);
}
const feesChanged = dto.deliveryFee !== undefined || dto.packingFee !== undefined;
if (dto.deliveryFee !== undefined) {
order.deliveryFee = dto.deliveryFee;
}
if (dto.packingFee !== undefined) {
order.packingFee = dto.packingFee;
}
if (dto.prepareTime !== undefined) {
order.prepareTime = dto.prepareTime;
}
if (feesChanged) {
order.total = order.subTotal - order.totalDiscount + order.deliveryFee + order.packingFee + order.tax;
const pendingPayment = await this.em.findOne(Payment, {
order: { id: orderId },
status: PaymentStatusEnum.Pending,
});
if (pendingPayment) {
pendingPayment.amount = order.total;
}
}
await this.em.persistAndFlush(order);
return order;
}
/**
* Validates cart and prepares all required data for order creation
*/