76 lines
2.6 KiB
TypeScript
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);
|
|
}
|
|
}
|