feat(tickets): ajusted the query to return the correct Date format and ajusted the api call string to use query instead of param args
This commit is contained in:
parent
f3753ec53e
commit
37a4da7923
|
|
@ -3,12 +3,12 @@ import { IsInt, IsOptional, IsString } from "class-validator";
|
||||||
export class TicketList {
|
export class TicketList {
|
||||||
@IsInt() id: number;
|
@IsInt() id: number;
|
||||||
@IsString() status: string;
|
@IsString() status: string;
|
||||||
@IsString() @IsOptional() assignedTo: string;
|
@IsString() @IsOptional() assignTo: string;
|
||||||
@IsString() deliveryAddress: string;
|
@IsString() deliveryAddress: string;
|
||||||
@IsString() subject: string;
|
@IsString() subject: string;
|
||||||
@IsString() department: string;
|
@IsString() department: string;
|
||||||
@IsInt() @IsOptional() parentTicketId: number;
|
@IsInt() @IsOptional() parentTicketId: number;
|
||||||
@IsString() dueDate: string;;
|
@IsString() dueDate: string;
|
||||||
@IsString() updatedAt: string;
|
@IsString() updatedAt: string;
|
||||||
@IsString() completedAt: string;
|
@IsString() @IsOptional() completedAt: string;
|
||||||
}
|
}
|
||||||
|
|
@ -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 { Access } from "src/common/decorators/module-access.decorators";
|
||||||
import { Result } from "src/common/errors/result-error.factory";
|
import { Result } from "src/common/errors/result-error.factory";
|
||||||
import { TicketList } from "src/customer-support/tickets/dtos/ticket-list.dto";
|
import { TicketList } from "src/customer-support/tickets/dtos/ticket-list.dto";
|
||||||
|
|
@ -9,23 +9,26 @@ export class TicketController {
|
||||||
|
|
||||||
constructor(private readonly getService: TicketService) { }
|
constructor(private readonly getService: TicketService) { }
|
||||||
|
|
||||||
@Get(':status/:email')
|
@Get(':status')
|
||||||
async findTicketByFilters(
|
async findTicketByFilters(
|
||||||
@Access('email') email: string,
|
@Access('email') email: string,
|
||||||
@Param('status') status: string,
|
@Param('status') status: string,
|
||||||
@Param('email') filterEmail?: string,
|
@Query('sortOrder') sortOrder: string,
|
||||||
@Query('sortOrder') sortOrder?: string,
|
@Query('sortType') sortType: 'DESC' | 'ASC',
|
||||||
@Query('sortTypes') sortTypes?: 'DESC' | 'ASC',
|
@Query('email') filterEmail?: string,
|
||||||
@Query('offset') offset?: number,
|
@Query('offset', ParseIntPipe) offset?: number,
|
||||||
@Query('limit') limit?: number,
|
@Query('limit', ParseIntPipe) limit?: number,
|
||||||
): Promise<Result<TicketList[], string>> {
|
): Promise<Result<TicketList[], string>> {
|
||||||
const statusFliters = status.split(',');
|
const statusFilters = status.split(',');
|
||||||
if (!filterEmail) {
|
const queryEmail = filterEmail ?? email;
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
return await this.getService.getListOfAllTicketByFilters(
|
||||||
|
statusFilters,
|
||||||
|
offset,
|
||||||
|
limit,
|
||||||
|
sortOrder,
|
||||||
|
sortType,
|
||||||
|
queryEmail,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11,10 +11,10 @@ export class TicketService {
|
||||||
|
|
||||||
getListOfAllTicketByFilters = async (
|
getListOfAllTicketByFilters = async (
|
||||||
status: string[],
|
status: string[],
|
||||||
offset: number = 1,
|
offset: number = 0,
|
||||||
limit: number = 25,
|
limit: number = 25,
|
||||||
sortOrder: string = 'last_update' as const,
|
sortOrder: string = 'last_update',
|
||||||
sortType: 'DESC' | 'ASC' = 'DESC' as const,
|
sortType: 'DESC' | 'ASC' = 'DESC',
|
||||||
email?: string
|
email?: string
|
||||||
): Promise<Result<TicketList[], string>> => {
|
): Promise<Result<TicketList[], string>> => {
|
||||||
|
|
||||||
|
|
@ -37,9 +37,13 @@ export class TicketService {
|
||||||
t.subject AS subject,
|
t.subject AS subject,
|
||||||
d.name AS department,
|
d.name AS department,
|
||||||
t.parent AS parentTicketId,
|
t.parent AS parentTicketId,
|
||||||
t.due_date AS dueDate,
|
DATE_FORMAT(FROM_UNIXTIME(t.due_date / 1000), '%d/%m/%y') AS dueDate,
|
||||||
t.last_update AS updatedAt,
|
DATE_FORMAT(FROM_UNIXTIME(t.last_update / 1000), '%d/%m/%y') AS updatedAt,
|
||||||
t.date_closed AS completedAt
|
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
|
FROM staff s
|
||||||
LEFT JOIN ticket t ON t.assign_to = s.id
|
LEFT JOIN ticket t ON t.assign_to = s.id
|
||||||
LEFT JOIN account a ON t.account_id = a.id
|
LEFT JOIN account a ON t.account_id = a.id
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
GET http://localhost:3000/tickets/open/gilles@targointernet.com?offset=1&limit=10
|
GET http://localhost:3000/tickets/OPEN?sortOrder=last_update&sortTypes=DESC&offset=0&limit=10&email=gilles@targointernet.com
|
||||||
Loading…
Reference in New Issue
Block a user