get rest admina

This commit is contained in:
2025-12-29 15:20:00 +03:30
parent e8787be08e
commit cfc0366eca
2 changed files with 25 additions and 7 deletions
@@ -14,11 +14,11 @@ import { CreateMyRestaurantAdminDto } from '../dto/create-my-restaurant-admin.dt
@ApiBearerAuth() @ApiBearerAuth()
@ApiTags('admin') @ApiTags('admin')
@Controller('admin/admins') @Controller()
export class AdminController { export class AdminController {
constructor(private readonly adminService: AdminService) { } constructor(private readonly adminService: AdminService) { }
@Get() @Get('admin/admins')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@ApiOperation({ summary: 'admin' }) @ApiOperation({ summary: 'admin' })
@@ -27,7 +27,7 @@ export class AdminController {
return admin; return admin;
} }
@Get('profile') @Get('admin/admins/profile')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@ApiOperation({ summary: 'admin' }) @ApiOperation({ summary: 'admin' })
@@ -36,7 +36,7 @@ export class AdminController {
return admin; return admin;
} }
@Post() @Post('admin/admins')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@HttpCode(HttpStatus.CREATED) @HttpCode(HttpStatus.CREATED)
@@ -47,7 +47,7 @@ export class AdminController {
return admin; return admin;
} }
@Patch(':adminId') @Patch('admin/admins/:adminId')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@ApiOperation({ summary: 'Update an admin' }) @ApiOperation({ summary: 'Update an admin' })
@@ -57,7 +57,7 @@ export class AdminController {
return this.adminService.update(adminId, restId, dto); return this.adminService.update(adminId, restId, dto);
} }
@Get(':adminId') @Get('admin/admins/:adminId')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@ApiOperation({ summary: 'Get an admin by ID' }) @ApiOperation({ summary: 'Get an admin by ID' })
@@ -66,7 +66,7 @@ export class AdminController {
return this.adminService.findById(adminId, restId); return this.adminService.findById(adminId, restId);
} }
@Delete(':adminId') @Delete('admin/admins/:adminId')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(Permission.MANAGE_ADMINS) @Permissions(Permission.MANAGE_ADMINS)
@ApiOperation({ summary: 'Delete an admin by ID' }) @ApiOperation({ summary: 'Delete an admin by ID' })
@@ -76,6 +76,17 @@ export class AdminController {
} }
/** Super Admin Endpoints */ /** Super Admin Endpoints */
@UseGuards(SuperAdminAuthGuard)
@Get('super-admin/restaurants/:restaurantId/admins')
@ApiOperation({ summary: 'Get admins for a specific restaurant (Super Admin only)' })
@ApiParam({ name: 'restaurantId', description: 'Restaurant ID' })
getAdminForRestaurant(
@Param('restaurantId') restaurantId: string,
): Promise<Admin[]> {
return this.adminService.getAdminsForRestaurantBySuperAdmin(restaurantId);
}
@UseGuards(SuperAdminAuthGuard) @UseGuards(SuperAdminAuthGuard)
@Post('super-admin/restaurants/:restaurantId/admins') @Post('super-admin/restaurants/:restaurantId/admins')
@ApiOperation({ summary: 'Create admin for a specific restaurant (Super Admin only)' }) @ApiOperation({ summary: 'Create admin for a specific restaurant (Super Admin only)' })
@@ -119,6 +119,13 @@ export class AdminService {
return admin; return admin;
} }
async getAdminsForRestaurantBySuperAdmin(restId: string): Promise<Admin[]> {
const restaurant = await this.em.findOne(Restaurant, { id: restId });
if (!restaurant) throw new NotFoundException('Restaurant not found');
return this.adminRepository.find({ roles: { restaurant: restaurant } }, { populate: ['roles', 'roles.role'] });
}
async update(adminId: string, restId: string, dto: UpdateAdminDto): Promise<Admin> { async update(adminId: string, restId: string, dto: UpdateAdminDto): Promise<Admin> {
const admin = await this.adminRepository.findOne( const admin = await this.adminRepository.findOne(
{ id: adminId, roles: { restaurant: { id: restId } } }, { id: adminId, roles: { restaurant: { id: restId } } },