chore: get customers

This commit is contained in:
Matin
2025-02-18 14:44:26 +03:30
parent ce3e97003b
commit dece70a133
3 changed files with 35 additions and 6 deletions
@@ -1,10 +1,17 @@
import { ApiPropertyOptional } from "@nestjs/swagger";
import { Type } from "class-transformer";
import { IsOptional, IsString } from "class-validator";
import { PaginationDto } from "../../../common/DTO/pagination.dto";
import { FinancialMessage } from "../../../common/enums/message.enum";
export class SearchCustomersDto extends PaginationDto {
@IsOptional()
@Type(() => Number)
// @IsBoolean({ message: CategoryMessage.IS_ACTIVE_SHOULD_BE_BOOLEAN })
@ApiPropertyOptional({ description: "Category status", example: 1 })
isActive?: number;
@IsOptional()
@IsString({ message: FinancialMessage.SEARCH_QUERY_MUST_BE_A_STRING })
@ApiPropertyOptional({ description: "search query", example: "search query" })
+4 -5
View File
@@ -329,13 +329,13 @@ export class UsersService {
const queryBuilder = this.userRepository
.createQueryBuilder("user")
.leftJoin("user.role", "role")
.leftJoin("user.roles", "role")
.where("role.name = :roleName", { roleName: RoleEnum.USER })
.leftJoin("user.groups", "groups")
.addSelect(["groups.id", "groups.name"])
.leftJoinAndSelect("user.invoices", "invoices")
.leftJoinAndSelect("user.subscriptions", "subscriptions")
.leftJoinAndSelect("user.tickets", "tickets");
.loadRelationCountAndMap("user.invoicesCount", "user.invoices")
.loadRelationCountAndMap("user.subscriptionsCount", "user.subscriptions")
.loadRelationCountAndMap("user.ticketsCount", "user.tickets");
if (queryDto.q) {
queryBuilder
@@ -422,7 +422,6 @@ export class UsersService {
name: RoleEnum.USER,
},
},
relations: ["tickets", "subscriptions", "invoices"],
});
return { customer };
+24 -1
View File
@@ -1,4 +1,4 @@
import { Body, Controller, Get, HttpCode, HttpStatus, Patch, Post, Query, Res } from "@nestjs/common";
import { Body, Controller, Get, HttpCode, HttpStatus, Param, Patch, Post, Query, Res } from "@nestjs/common";
import { ApiOperation, ApiTags } from "@nestjs/swagger";
import { FastifyReply } from "fastify";
@@ -20,6 +20,7 @@ import { UsersService } from "./providers/users.service";
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
import { PermissionsDec } from "../../common/decorators/permission.decorator";
import { UserDec } from "../../common/decorators/user.decorator";
import { ParamDto } from "../../common/DTO/param.dto";
@Controller("users")
@ApiTags("users")
@@ -107,6 +108,8 @@ export class UsersController {
return this.usersService.findAllUsers();
}
/************************************************************ */
@ApiOperation({ summary: "get all customers ==> admin route" })
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@AuthGuards()
@@ -115,6 +118,18 @@ export class UsersController {
return this.usersService.findAllCustomers(queryDto);
}
/************************************************************ */
@ApiOperation({ summary: "get all customers ==> admin route" })
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@AuthGuards()
@Get("customers/:id")
customer(@Param() paramDto: ParamDto) {
return this.usersService.findOneCustomer(paramDto.id);
}
/************************************************************ */
@ApiOperation({ summary: "get all admins ==> admin route" })
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@AuthGuards()
@@ -123,6 +138,8 @@ export class UsersController {
return this.usersService.getAdmins(queryDto);
}
/************************************************************ */
@ApiOperation({ summary: "create admin ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@@ -131,6 +148,8 @@ export class UsersController {
return this.usersService.createAdmin(createDto);
}
/************************************************************ */
@ApiOperation({ summary: "get all permissions ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@@ -139,6 +158,8 @@ export class UsersController {
return this.usersService.getPermissions();
}
/************************************************************ */
@ApiOperation({ summary: "get all roles ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)
@@ -147,6 +168,8 @@ export class UsersController {
return this.usersService.getRoles(queryDto);
}
/************************************************************ */
@ApiOperation({ summary: "create role ==> admin route" })
@AuthGuards()
@PermissionsDec(PermissionEnum.ADMINS, PermissionEnum.CUSTOMERS)