Files
dmenu-api/src/modules/users/controllers/user-groups.controller.ts
T
morteza ab3394a703
deploy to danak / build_and_deploy (push) Has been cancelled
user group
2026-07-01 15:20:06 +03:30

76 lines
2.6 KiB
TypeScript

import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
import {
ApiTags,
ApiOperation,
ApiParam,
ApiBody,
ApiBearerAuth,
} from '@nestjs/swagger';
import { UserGroupService } from '../providers/user-group.service';
import { CreateUserGroupDto } from '../dto/create-user-group.dto';
import { UpdateUserGroupDto } from '../dto/update-user-group.dto';
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
import { RestId } from 'src/common/decorators/rest-id.decorator';
import { Permission } from 'src/common/enums/permission.enum';
import { Permissions } from 'src/common/decorators/permissions.decorator';
@ApiTags('User Groups')
@Controller()
export class UserGroupsController {
constructor(private readonly userGroupService: UserGroupService) {}
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_USERS)
@Post('admin/user-groups')
@ApiOperation({ summary: 'Create a user group for the restaurant' })
@ApiBody({ type: CreateUserGroupDto })
create(@Body() dto: CreateUserGroupDto, @RestId() restId: string) {
return this.userGroupService.create(restId, dto);
}
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_USERS)
@Get('admin/user-groups')
@ApiOperation({ summary: 'Get all user groups for the restaurant' })
findAll(@RestId() restId: string) {
return this.userGroupService.findByRestaurantId(restId);
}
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_USERS)
@Get('admin/user-groups/:groupId')
@ApiOperation({ summary: 'Get a user group by ID' })
@ApiParam({ name: 'groupId', description: 'User group ID' })
findOne(@Param('groupId') groupId: string, @RestId() restId: string) {
return this.userGroupService.findOneOrFail(restId, groupId);
}
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_USERS)
@Patch('admin/user-groups/:groupId')
@ApiOperation({ summary: 'Update a user group' })
@ApiParam({ name: 'groupId', description: 'User group ID' })
@ApiBody({ type: UpdateUserGroupDto })
update(
@Param('groupId') groupId: string,
@Body() dto: UpdateUserGroupDto,
@RestId() restId: string,
) {
return this.userGroupService.update(restId, groupId, dto);
}
@UseGuards(AdminAuthGuard)
@ApiBearerAuth()
@Permissions(Permission.MANAGE_USERS)
@Delete('admin/user-groups/:groupId')
@ApiOperation({ summary: 'Delete a user group' })
@ApiParam({ name: 'groupId', description: 'User group ID' })
remove(@Param('groupId') groupId: string, @RestId() restId: string) {
return this.userGroupService.remove(restId, groupId);
}
}