diff --git a/src/customer-support/tickets/dtos/ticket-list.dto.ts b/src/customer-support/tickets/dtos/ticket-list.dto.ts index 17112d8..3ee8451 100644 --- a/src/customer-support/tickets/dtos/ticket-list.dto.ts +++ b/src/customer-support/tickets/dtos/ticket-list.dto.ts @@ -3,12 +3,12 @@ import { IsInt, IsOptional, IsString } from "class-validator"; export class TicketList { @IsInt() id: number; @IsString() status: string; - @IsString() @IsOptional() assignedTo: string; + @IsString() @IsOptional() assignTo: string; @IsString() deliveryAddress: string; @IsString() subject: string; @IsString() department: string; @IsInt() @IsOptional() parentTicketId: number; - @IsString() dueDate: string;; + @IsString() dueDate: string; @IsString() updatedAt: string; - @IsString() completedAt: string; + @IsString() @IsOptional() completedAt: string; } \ No newline at end of file diff --git a/src/customer-support/tickets/ticket.controller.ts b/src/customer-support/tickets/ticket.controller.ts index b71203c..ec24471 100644 --- a/src/customer-support/tickets/ticket.controller.ts +++ b/src/customer-support/tickets/ticket.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Param, Query } from "@nestjs/common"; +import { Controller, Get, Param, ParseIntPipe, Query } from "@nestjs/common"; import { Access } from "src/common/decorators/module-access.decorators"; import { Result } from "src/common/errors/result-error.factory"; import { TicketList } from "src/customer-support/tickets/dtos/ticket-list.dto"; @@ -9,23 +9,26 @@ export class TicketController { constructor(private readonly getService: TicketService) { } - @Get(':status/:email') + @Get(':status') async findTicketByFilters( @Access('email') email: string, @Param('status') status: string, - @Param('email') filterEmail?: string, - @Query('sortOrder') sortOrder?: string, - @Query('sortTypes') sortTypes?: 'DESC' | 'ASC', - @Query('offset') offset?: number, - @Query('limit') limit?: number, + @Query('sortOrder') sortOrder: string, + @Query('sortType') sortType: 'DESC' | 'ASC', + @Query('email') filterEmail?: string, + @Query('offset', ParseIntPipe) offset?: number, + @Query('limit', ParseIntPipe) limit?: number, ): Promise> { - const statusFliters = status.split(','); - if (!filterEmail) { - filterEmail = email; - return await this.getService.getListOfAllTicketByFilters(statusFliters, offset, limit, sortOrder, sortTypes, filterEmail); - } else { - return await this.getService.getListOfAllTicketByFilters(statusFliters, offset, limit, sortOrder, sortTypes, filterEmail); - } - } + const statusFilters = status.split(','); + const queryEmail = filterEmail ?? email; + return await this.getService.getListOfAllTicketByFilters( + statusFilters, + offset, + limit, + sortOrder, + sortType, + queryEmail, + ); + } } \ No newline at end of file diff --git a/src/customer-support/tickets/ticket.service.ts b/src/customer-support/tickets/ticket.service.ts index cfcef03..f9dd5c4 100644 --- a/src/customer-support/tickets/ticket.service.ts +++ b/src/customer-support/tickets/ticket.service.ts @@ -11,10 +11,10 @@ export class TicketService { getListOfAllTicketByFilters = async ( status: string[], - offset: number = 1, + offset: number = 0, limit: number = 25, - sortOrder: string = 'last_update' as const, - sortType: 'DESC' | 'ASC' = 'DESC' as const, + sortOrder: string = 'last_update', + sortType: 'DESC' | 'ASC' = 'DESC', email?: string ): Promise> => { @@ -37,9 +37,13 @@ export class TicketService { t.subject AS subject, d.name AS department, t.parent AS parentTicketId, - t.due_date AS dueDate, - t.last_update AS updatedAt, - t.date_closed AS completedAt + DATE_FORMAT(FROM_UNIXTIME(t.due_date / 1000), '%d/%m/%y') AS dueDate, + DATE_FORMAT(FROM_UNIXTIME(t.last_update / 1000), '%d/%m/%y') AS updatedAt, + CASE + WHEN t.date_closed IS NOT NULL + THEN DATE_FORMAT(FROM_UNIXTIME(t.date_closed / 1000), '%d/%m/%y') + ELSE NULL + END AS completedAt FROM staff s LEFT JOIN ticket t ON t.assign_to = s.id LEFT JOIN account a ON t.account_id = a.id diff --git a/src/customer-support/tickets/ticket.test.http b/src/customer-support/tickets/ticket.test.http index bc91afe..cc409ac 100644 --- a/src/customer-support/tickets/ticket.test.http +++ b/src/customer-support/tickets/ticket.test.http @@ -1 +1 @@ -GET http://localhost:3000/tickets/open/gilles@targointernet.com?offset=1&limit=10 \ No newline at end of file +GET http://localhost:3000/tickets/OPEN?sortOrder=last_update&sortTypes=DESC&offset=0&limit=10&email=gilles@targointernet.com \ No newline at end of file