This commit is contained in:
@@ -33,6 +33,7 @@ import { TicketStatus } from "../enums/ticket-status.enum";
|
|||||||
import { TicketCategoryRepository } from "../repositories/tickets-category.repository";
|
import { TicketCategoryRepository } from "../repositories/tickets-category.repository";
|
||||||
import { TicketMessagesRepository } from "../repositories/tickets-message.repository";
|
import { TicketMessagesRepository } from "../repositories/tickets-message.repository";
|
||||||
import { TicketsRepository } from "../repositories/tickets.repository";
|
import { TicketsRepository } from "../repositories/tickets.repository";
|
||||||
|
import { PermissionEnum } from "../../users/enums/permission.enum";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TicketsService implements OnModuleInit {
|
export class TicketsService implements OnModuleInit {
|
||||||
@@ -326,10 +327,10 @@ export class TicketsService implements OnModuleInit {
|
|||||||
return { tickets, count, paginate: true };
|
return { tickets, count, paginate: true };
|
||||||
}
|
}
|
||||||
//******************************** */
|
//******************************** */
|
||||||
async getTicketForAdmin(queryDto: SearchTicketQueryDto, adminId: string) {
|
async getTicketForAdmin(queryDto: SearchTicketQueryDto, adminPermissions: PermissionEnum[],adminId: string) {
|
||||||
const isSuperAdmin = await this.usersService.isSuperAdmin(adminId);
|
const canSeeAllTickets = adminPermissions.includes(PermissionEnum.TICKETS_READ);
|
||||||
|
|
||||||
const [tickets, count] = await this.ticketsRepository.findTicketsListForAdmin(queryDto, adminId, isSuperAdmin);
|
const [tickets, count] = await this.ticketsRepository.findTicketsListForAdmin(queryDto, adminId, canSeeAllTickets);
|
||||||
|
|
||||||
return { tickets, count, paginate: true };
|
return { tickets, count, paginate: true };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { PermissionsDec } from "../../common/decorators/permission.decorator";
|
|||||||
import { IUserIpAndHeaders, UserDec, UserIpAndHeaders } from "../../common/decorators/user.decorator";
|
import { IUserIpAndHeaders, UserDec, UserIpAndHeaders } from "../../common/decorators/user.decorator";
|
||||||
import { ParamDto } from "../../common/DTO/param.dto";
|
import { ParamDto } from "../../common/DTO/param.dto";
|
||||||
import { PermissionEnum } from "../users/enums/permission.enum";
|
import { PermissionEnum } from "../users/enums/permission.enum";
|
||||||
|
import { ITokenPayload } from "../auth/interfaces/IToken-payload";
|
||||||
@Controller("tickets")
|
@Controller("tickets")
|
||||||
@ApiTags("Tickets")
|
@ApiTags("Tickets")
|
||||||
@AuthGuards()
|
@AuthGuards()
|
||||||
@@ -88,10 +89,9 @@ export class TicketsController {
|
|||||||
|
|
||||||
@ApiOperation({ summary: "Get all tickets ==> admin route" })
|
@ApiOperation({ summary: "Get all tickets ==> admin route" })
|
||||||
@AdminRoute()
|
@AdminRoute()
|
||||||
@PermissionsDec(PermissionEnum.TICKETS_READ)
|
|
||||||
@Get("admin")
|
@Get("admin")
|
||||||
getAllTickets(@Query() queryDto: SearchTicketQueryDto, @UserDec("id") adminId: string) {
|
getAllTickets(@Query() queryDto: SearchTicketQueryDto, @UserDec() admin: ITokenPayload) {
|
||||||
return this.ticketsService.getTicketForAdmin(queryDto, adminId);
|
return this.ticketsService.getTicketForAdmin(queryDto, admin.permissions, admin.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation({ summary: "create ticket messages" })
|
@ApiOperation({ summary: "create ticket messages" })
|
||||||
|
|||||||
@@ -359,6 +359,7 @@ export class UsersService {
|
|||||||
async isSuperAdmin(adminId: string) {
|
async isSuperAdmin(adminId: string) {
|
||||||
const user = await this.userRepository.findOne({ where: { id: adminId }, relations: { roles: true } });
|
const user = await this.userRepository.findOne({ where: { id: adminId }, relations: { roles: true } });
|
||||||
if (!user) throw new BadRequestException(UserMessage.USER_NOT_FOUND);
|
if (!user) throw new BadRequestException(UserMessage.USER_NOT_FOUND);
|
||||||
|
console.log("user.roles", user.roles.map((role) => role.name));
|
||||||
return user.roles.some((role) => role.name === RoleEnum.SUPER_ADMIN);
|
return user.roles.some((role) => role.name === RoleEnum.SUPER_ADMIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user