chore: add create customer and update customer for admin

This commit is contained in:
mahyargdz
2025-03-06 09:35:59 +03:30
parent c1f21e75f2
commit b92a65c22c
20 changed files with 674 additions and 399 deletions
+47 -36
View File
@@ -5,6 +5,7 @@ import { FastifyReply } from "fastify";
import { ChangeEmailDto } from "./DTO/change-email.dto";
import { CheckValidityDTO } from "./DTO/check-validity.dto";
import { CreateAdminDto } from "./DTO/create-admin.dto";
import { CreateCustomerDto } from "./DTO/create-customer.dto";
import { CreateLegalUserDto } from "./DTO/create-legal-user.dto";
import { CreateRealUserDto } from "./DTO/create-real-user.dto";
import { CreateRoleDto } from "./DTO/create-role.dto";
@@ -15,6 +16,8 @@ import { UpdateProfileDto } from "./DTO/update-profile.dto";
import { CreateUserGroupDto } from "./DTO/user-group.dto";
import { EmailVerifyQueryDto } from "./DTO/verify-email-query.dto";
import { PermissionEnum } from "./enums/permission.enum";
import { AdminsService } from "./providers/admins.service";
import { CustomersService } from "./providers/customers.service";
import { UsersService } from "./providers/users.service";
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
import { PermissionsDec } from "../../common/decorators/permission.decorator";
@@ -26,9 +29,14 @@ import { VerifyOtpDto } from "../auth/DTO/verify-otp.dto";
@Controller("users")
@ApiTags("users")
export class UsersController {
constructor(private usersService: UsersService) {}
constructor(
private readonly usersService: UsersService,
private readonly adminsService: AdminsService,
private readonly customersService: CustomersService,
) {}
//----------------------- user -----------------------
//
@ApiOperation({ summary: "Get user profile" })
@AuthGuards()
@Get("me")
@@ -49,7 +57,21 @@ export class UsersController {
getRealUserData(@UserDec("id") userId: string) {
return this.usersService.getRealUserData(userId);
}
//
@ApiOperation({ summary: "Create real user data ==> user route" })
@AuthGuards()
@Post("real")
createRealUser(@Body() createDto: CreateRealUserDto, @UserDec("id") userId: string) {
return this.customersService.createRealUserData(createDto, userId);
}
@ApiOperation({ summary: "Create legal user data ==> user route" })
@AuthGuards()
@Post("legal")
createLegalUser(@Body() createDto: CreateLegalUserDto, @UserDec("id") userId: string) {
return this.customersService.createLegalUserData(createDto, userId);
}
//----------------------- profile -----------------------
@ApiOperation({ summary: "Update user profile" })
@AuthGuards()
@@ -114,32 +136,43 @@ export class UsersController {
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get()
Users() {
getUsers() {
return this.usersService.findAllUsers();
}
//----------------------- customer -----------------------
@ApiOperation({ summary: "get all customers ==> admin route" })
@ApiOperation({ summary: "Create customer" })
@AuthGuards()
@HttpCode(HttpStatus.CREATED)
@Post("customer")
createCustomer(@Body() createDto: CreateCustomerDto) {
return this.customersService.createCustomer(createDto);
}
@ApiOperation({ summary: "get customers ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get("customers")
getCustomers(@Query() queryDto: SearchCustomersDto) {
return this.usersService.getCustomers(queryDto);
return this.customersService.getCustomers(queryDto);
}
@ApiOperation({ summary: "get all customers ==> admin route" })
@ApiOperation({ summary: "get customers by id ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get("customers/:id")
customer(@Param() paramDto: ParamDto) {
return this.usersService.findOneCustomer(paramDto.id);
getCustomerById(@Param() paramDto: ParamDto) {
return this.customersService.getCustomerById(paramDto.id);
}
//----------------------- admin -----------------------
@ApiOperation({ summary: "get all admins ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get("admins")
getAdmins(@Query() queryDto: SearchAdminQueryDto) {
return this.usersService.getAdmins(queryDto);
return this.adminsService.getAdmins(queryDto);
}
@ApiOperation({ summary: "create admin ==> admin route" })
@@ -147,7 +180,7 @@ export class UsersController {
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Post("admins")
createAdmin(@Body() createDto: CreateAdminDto) {
return this.usersService.createAdmin(createDto);
return this.adminsService.createAdmin(createDto);
}
@ApiOperation({ summary: "get all permissions ==> admin route" })
@@ -155,7 +188,7 @@ export class UsersController {
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get("permissions")
getPermissions() {
return this.usersService.getPermissions();
return this.adminsService.getPermissions();
}
@ApiOperation({ summary: "get all roles ==> admin route" })
@@ -163,7 +196,7 @@ export class UsersController {
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Get("roles")
getRoles(@Query() queryDto: SearchRolesQueryDto) {
return this.usersService.getRoles(queryDto);
return this.adminsService.getRoles(queryDto);
}
@ApiOperation({ summary: "create role ==> admin route" })
@@ -171,28 +204,6 @@ export class UsersController {
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@Post("roles")
createRole(@Body() createDto: CreateRoleDto) {
return this.usersService.createRole(createDto);
return this.adminsService.createRole(createDto);
}
@ApiOperation({ summary: "Create real user data ==> user route" })
@AuthGuards()
@Post("real")
createRealUser(@Body() createDto: CreateRealUserDto, @UserDec("id") userId: string) {
return this.usersService.createRealUserData(createDto, userId);
}
@ApiOperation({ summary: "Create legal user data ==> user route" })
@AuthGuards()
@Post("legal")
createLegalUser(@Body() createDto: CreateLegalUserDto, @UserDec("id") userId: string) {
return this.usersService.createLegalUserData(createDto, userId);
}
// @ApiOperation({ summary: "Create customer" })
// @AuthGuards()
// @HttpCode(HttpStatus.CREATED)
// @Post("customer")
// createCustomer(@Body() createDto: CreateCustomerDto) {
// return this.usersService.createCustomer(createDto);
// }
}