table number

This commit is contained in:
2025-12-07 12:13:09 +03:30
parent 71a9cc5ef8
commit 6659a085f9
6 changed files with 68 additions and 0 deletions
@@ -11,10 +11,12 @@ import { SetAddressDto } from '../dto/set-address.dto';
import { SetPaymentMethodDto } from '../dto/set-payment-method.dto';
import { SetDeliveryMethodDto } from '../dto/set-delivery-method.dto';
import { SetDescriptionDto } from '../dto/set-description.dto';
import { SetTableNumberDto } from '../dto/set-table-number.dto';
import { UserAddress } from '../../users/entities/user-address.entity';
import { User } from '../../users/entities/user.entity';
import { PaymentMethod } from '../../payments/entities/payment-method.entity';
import { Delivery } from '../../delivery/entities/delivery.entity';
import { DeliveryMethodEnum } from '../../delivery/interface/delivery';
import { Cart, CartItem } from '../interfaces/cart.interface';
import { CouponService } from 'src/modules/coupons/providers/coupon.service';
import { OrderCouponDetail } from 'src/modules/orders/interface/order-status';
@@ -608,6 +610,38 @@ export class CartService {
return cart;
}
/**
* Set table number for cart
*/
async setTableNumber(
userId: string,
restaurantId: string,
setTableNumberDto: SetTableNumberDto,
): Promise<Cart> {
const cart = await this.findOneOrFail(userId, restaurantId);
// If delivery method is set, validate that table number is required for DineIn
if (cart.deliveryMethodId) {
const deliveryMethod = await this.em.findOne(Delivery, {
id: cart.deliveryMethodId,
restaurant: { id: restaurantId },
});
if (deliveryMethod && deliveryMethod.method === DeliveryMethodEnum.DineIn) {
if (!setTableNumberDto.tableNumber || setTableNumberDto.tableNumber.trim() === '') {
throw new BadRequestException('Table number is required when delivery method is DineIn');
}
}
}
cart.tableNumber = setTableNumberDto.tableNumber;
cart.updatedAt = new Date().toISOString();
await this.saveCart(cart);
return cart;
}
/**
* Recalculate cart totals (including coupon discount and tax)
*/