From 3fefb029219e522ebcce7397f70f4eb14c9c4476 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Mon, 15 Dec 2025 15:53:41 +0330 Subject: [PATCH] order --- src/modules/orders/providers/orders.service.ts | 11 +++++------ .../payments/controllers/payments.controller.ts | 13 +++++++++++++ src/modules/payments/services/payments.service.ts | 12 ++++++++---- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/modules/orders/providers/orders.service.ts b/src/modules/orders/providers/orders.service.ts index a7e41cc..917ce6f 100644 --- a/src/modules/orders/providers/orders.service.ts +++ b/src/modules/orders/providers/orders.service.ts @@ -35,16 +35,15 @@ export class OrdersService { ) {} async checkout(userId: string, restaurantId: string) { - console.log('Order created event emitted 000'); const cart = await this.cartService.findOneOrFail(userId, restaurantId); const { order } = await this.createOrder(userId, restaurantId, cart); - if (!order.paymentMethod) { - throw new BadRequestException('Payment method is required for checkout'); - } + // if (!order.paymentMethod) { + // throw new BadRequestException('Payment method is required for checkout'); + // } - const { paymentUrl } = await this.paymentsService.startPayment(order.id); + // const { paymentUrl } = await this.paymentsService.startPayment(order.id); await this.cartService.clearCart(userId, restaurantId); @@ -57,7 +56,7 @@ export class OrdersService { // new OrderPaymentSuccessEvent(restaurantId, order.user.id, order.id, order.total), // ); console.log('Order created event emitted 111'); - return { order, paymentUrl }; + return { order }; } async createOrder(userId: string, restaurantId: string, cart: Cart) { diff --git a/src/modules/payments/controllers/payments.controller.ts b/src/modules/payments/controllers/payments.controller.ts index 61944ce..3e9c9ad 100644 --- a/src/modules/payments/controllers/payments.controller.ts +++ b/src/modules/payments/controllers/payments.controller.ts @@ -57,6 +57,19 @@ export class PaymentsController { findAllByRestaurant(@UserId() userId: string, @RestId() restId: string) { return this.paymentsService.findAllByRestaurantId(restId, userId); } + + @UseGuards(AuthGuard) + @ApiBearerAuth() + @Get('public/payments/pay-order/:orderId') + @ApiOperation({ summary: 'Pay for an order' }) + @ApiParam({ name: 'orderId', type: 'string', description: 'Order ID' }) + @ApiHeader({ + name: 'X-Slug', + required: true, + }) + payAnOrder(@Param('orderId') orderId: string, @RestId() restId: string) { + return this.paymentsService.startPayment(orderId, restId); + } // @UseGuards(AdminAuthGuard) // @ApiBearerAuth() // @Get('admin/payments/:id') diff --git a/src/modules/payments/services/payments.service.ts b/src/modules/payments/services/payments.service.ts index b32317a..d056d9e 100644 --- a/src/modules/payments/services/payments.service.ts +++ b/src/modules/payments/services/payments.service.ts @@ -57,8 +57,8 @@ export class PaymentsService { // return { paymentUrl }; // } - async startPayment(orderId: string): Promise<{ paymentUrl: string | null }> { - const { amount, method, restaurantDomain, gateway, merchantId, user } = await this.validateOrder(orderId); + async startPayment(orderId: string, restId: string): Promise<{ paymentUrl: string | null }> { + const { amount, method, restaurantDomain, gateway, merchantId, user } = await this.validateOrder(orderId, restId); // Handle Wallet payment immediately // if (method === PaymentMethodEnum.Wallet) { @@ -86,8 +86,12 @@ export class PaymentsService { return { paymentUrl }; } - private async validateOrder(orderId: string) { - const order = await this.em.findOne(Order, { id: orderId }, { populate: ['user', 'paymentMethod'] }); + private async validateOrder(orderId: string, restId: string) { + const order = await this.em.findOne( + Order, + { id: orderId, restaurant: { id: restId } }, + { populate: ['user', 'paymentMethod'] }, + ); if (!order) { throw new NotFoundException('Order not found'); }