From 3c7ccf84558f8b798c5dd2c6c04d44c3986a01aa Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Sat, 27 Dec 2025 16:28:51 +0330 Subject: [PATCH] update : routes --- src/modules/dmenu/dmenu.controller.ts | 22 ++++++++++++-- .../dmenu/providers/restaurant.service.ts | 30 +++++++++++++++---- 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/modules/dmenu/dmenu.controller.ts b/src/modules/dmenu/dmenu.controller.ts index 73ddeb6..78e498e 100644 --- a/src/modules/dmenu/dmenu.controller.ts +++ b/src/modules/dmenu/dmenu.controller.ts @@ -1,10 +1,10 @@ import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from "@nestjs/common"; -import { ApiBearerAuth, ApiOperation, ApiParam, ApiTags } from "@nestjs/swagger"; +import { ApiBearerAuth, ApiOperation, ApiParam, ApiQuery, ApiTags } from "@nestjs/swagger"; import { ContactService } from "./providers/contact.service"; import { IconsService } from "./providers/icons.service"; import { RestaurantService } from "./providers/restaurant.service"; -import { CreateIconDto } from "./DTO/create-icon.dto"; + import { CreateIconDto } from "./DTO/create-icon.dto"; import { UpdateIconDto } from "./DTO/update-icon.dto"; import { CreateGroupDto } from "./DTO/create-group.dto"; import { UpdateGroupDto } from "./DTO/update-group.dto"; @@ -123,6 +123,24 @@ export class DmenuController { findAllRestaurant(@Query() queryDto: FindRestaurantsDto) { return this.restaurantService.findAll(queryDto); } + + + @ApiBearerAuth() + @Get('super-admin/restaurants/sms-count') + @ApiOperation({ summary: 'Get SMS count for each restaurant with pagination' }) + @ApiQuery({ name: 'page', required: false, type: Number, description: 'Page number (default: 1)', minimum: 1 }) + @ApiQuery({ name: 'limit', required: false, type: Number, description: 'Items per page (default: 10)', minimum: 1 }) + async getSmsCount( + @Query('page') page?: number, + @Query('limit') limit?: number, + ) { + const parsedPage = page ? parseInt(page.toString(), 10) : 1; + const parsedLimit = limit ? parseInt(limit.toString(), 10) : 10; + return await this.restaurantService.getSmsCountByRestaurant(parsedPage, parsedLimit); + } + +//here + //User Endpoints @Post('dmenu/restaurants') @ApiOperation({ summary: "Create restaurant" }) diff --git a/src/modules/dmenu/providers/restaurant.service.ts b/src/modules/dmenu/providers/restaurant.service.ts index 6d902d4..a3018c6 100644 --- a/src/modules/dmenu/providers/restaurant.service.ts +++ b/src/modules/dmenu/providers/restaurant.service.ts @@ -85,16 +85,14 @@ export class RestaurantService { phone: dto.phone, plan, subscriptionId: dto.userSubscriptionId, - subscriptionEndDate: userSubscription.endDate, - subscriptionStartDate: userSubscription.startDate, + subscriptionEndDate: userSubscription.endDate.toISOString(), + subscriptionStartDate: userSubscription.startDate.toISOString(), }; try { const { data } = await firstValueFrom( this.httpService - .post(`${this.config.baseUrl}/super-admin/restaurants`, { - setupRestaurantDto - }, { + .post(`${this.config.baseUrl}/super-admin/restaurants`, setupRestaurantDto, { headers: this.getHeaders(), }) .pipe( @@ -125,5 +123,27 @@ export class RestaurantService { // Add actual data structure based on your requirements }; } + + async getSmsCountByRestaurant(page: number, limit: number) { + try { + const { data } = await firstValueFrom( + this.httpService + .get('super-admin/notifications/sms-count', { + params: { page, limit }, + }) + .pipe( + catchError((err: AxiosError) => { + this.logger.error("error in getting SMS count by restaurant", err); + throw new BadRequestException("Failed to fetch SMS count data"); + }), + ), + ); + + return data; + } catch (error) { + this.logger.error("error in getSmsCountByRestaurant", error); + throw error; + } + } }