Criação dos arquivos reportRoutes.ts, ReportController.ts, ShowTicketReport.ts no backend para geração de relatórios de atendimento. Estádo parcial do relatóri
parent
2eed62f753
commit
a9d48b543d
|
@ -6,8 +6,6 @@ import cors from "cors";
|
|||
import cookieParser from "cookie-parser";
|
||||
import * as Sentry from "@sentry/node";
|
||||
|
||||
console.log('dddddddddddddddddddddddddddd')
|
||||
|
||||
import "./database";
|
||||
import uploadConfig from "./config/upload";
|
||||
import AppError from "./errors/AppError";
|
||||
|
@ -41,5 +39,6 @@ app.use(async (err: Error, req: Request, res: Response, _: NextFunction) => {
|
|||
logger.error(err);
|
||||
return res.status(500).json({ error: "Internal server error" });
|
||||
});
|
||||
|
||||
|
||||
export default app;
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
//relatorio
|
||||
|
||||
import { Request, Response } from "express";
|
||||
import AppError from "../errors/AppError";
|
||||
import ShowTicketReport from "../services/TicketServices/ShowTicketReport";
|
||||
|
||||
|
||||
export const reportUser = async (req: Request, res: Response): Promise<Response> => {
|
||||
|
||||
const { userId } = req.params;
|
||||
|
||||
console.log('******* Estrou no report: ', userId)
|
||||
|
||||
const test = await ShowTicketReport(userId);
|
||||
|
||||
return res.status(200).json(test);
|
||||
|
||||
};
|
||||
|
||||
/*export const reportAll = async (req: Request, res: Response): Promise<Response> => {
|
||||
|
||||
const test = await ShowTicketReport();
|
||||
|
||||
return res.status(200).json(test);
|
||||
|
||||
};*/
|
||||
|
||||
|
||||
|
||||
|
|
@ -3,7 +3,7 @@ import { getIO } from "../libs/socket";
|
|||
|
||||
import CreateTicketService from "../services/TicketServices/CreateTicketService";
|
||||
import DeleteTicketService from "../services/TicketServices/DeleteTicketService";
|
||||
import ListTicketsService from "../services/TicketServices/ListTicketsService";
|
||||
import ListTicketsService from "../services/TicketServices/ListTicketsService";
|
||||
import ShowTicketService from "../services/TicketServices/ShowTicketService";
|
||||
import UpdateTicketService from "../services/TicketServices/UpdateTicketService";
|
||||
import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage";
|
||||
|
@ -76,12 +76,15 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
|||
|
||||
return res.status(200).json(ticket);
|
||||
};
|
||||
|
||||
|
||||
export const show = async (req: Request, res: Response): Promise<Response> => {
|
||||
const { ticketId } = req.params;
|
||||
|
||||
const contact = await ShowTicketService(ticketId);
|
||||
|
||||
//console.log('------- contact: ',JSON.stringify(contact))
|
||||
|
||||
return res.status(200).json(contact);
|
||||
};
|
||||
|
||||
|
|
|
@ -31,8 +31,8 @@ export const index = async (req: Request, res: Response): Promise<Response> => {
|
|||
if(user.profile!=='master'){
|
||||
auxUsers.push(user)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return res.json({ users: auxUsers, count, hasMore });
|
||||
}
|
||||
|
||||
|
|
|
@ -4,26 +4,29 @@ import userRoutes from "./userRoutes";
|
|||
import authRoutes from "./authRoutes";
|
||||
import settingRoutes from "./settingRoutes";
|
||||
import contactRoutes from "./contactRoutes";
|
||||
import ticketRoutes from "./ticketRoutes";
|
||||
import ticketRoutes from "./ticketRoutes";
|
||||
import whatsappRoutes from "./whatsappRoutes";
|
||||
import messageRoutes from "./messageRoutes";
|
||||
import whatsappSessionRoutes from "./whatsappSessionRoutes";
|
||||
import queueRoutes from "./queueRoutes";
|
||||
import quickAnswerRoutes from "./quickAnswerRoutes";
|
||||
import reportRoutes from "./reportRoutes";
|
||||
|
||||
const routes = Router();
|
||||
|
||||
const routes = Router();
|
||||
|
||||
|
||||
routes.use(userRoutes);
|
||||
routes.use("/auth", authRoutes);
|
||||
routes.use(settingRoutes);
|
||||
routes.use(contactRoutes);
|
||||
routes.use(ticketRoutes);
|
||||
routes.use(contactRoutes);
|
||||
routes.use(ticketRoutes);
|
||||
routes.use(whatsappRoutes);
|
||||
routes.use(messageRoutes);
|
||||
routes.use(whatsappSessionRoutes);
|
||||
routes.use(queueRoutes);
|
||||
routes.use(quickAnswerRoutes);
|
||||
|
||||
routes.use(reportRoutes);
|
||||
|
||||
|
||||
export default routes;
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
//relatorio
|
||||
import express from "express";
|
||||
|
||||
import isAuth from "../middleware/isAuth";
|
||||
|
||||
import * as ReportController from "../controllers/ReportController";
|
||||
|
||||
const reportRoutes = express.Router();
|
||||
|
||||
reportRoutes.get("/reports/:userId", /*isAuth,*/ ReportController.reportUser);
|
||||
|
||||
//reportRoutes.get("/reports", /*isAuth,*/ ReportController.reportAll);
|
||||
|
||||
export default reportRoutes;
|
|
@ -3,11 +3,10 @@ import isAuth from "../middleware/isAuth";
|
|||
|
||||
import * as TicketController from "../controllers/TicketController";
|
||||
|
||||
const ticketRoutes = express.Router();
|
||||
|
||||
const ticketRoutes = express.Router();
|
||||
|
||||
|
||||
ticketRoutes.get("/tickets", isAuth, TicketController.index);
|
||||
ticketRoutes.get("/tickets", isAuth, TicketController.index);
|
||||
|
||||
ticketRoutes.get("/tickets/:ticketId", isAuth, TicketController.show);
|
||||
|
||||
|
|
|
@ -0,0 +1,133 @@
|
|||
import Ticket from "../../models/Ticket";
|
||||
import AppError from "../../errors/AppError";
|
||||
import Contact from "../../models/Contact";
|
||||
import User from "../../models/User";
|
||||
import Queue from "../../models/Queue";
|
||||
|
||||
import Message from "../../models/Message";
|
||||
import { userInfo } from "os";
|
||||
|
||||
//Report by user
|
||||
const ShowTicketReport = async (id: string | number): Promise<Ticket[]> => {
|
||||
|
||||
|
||||
|
||||
const ticket = await Ticket.findAll({
|
||||
where: {userid: id} ,
|
||||
attributes: ['id', 'status', 'createdAt', 'updatedAt'],
|
||||
include: [
|
||||
{
|
||||
model: Message,
|
||||
required:true,
|
||||
separate: true,
|
||||
attributes: ['body', 'read', 'mediaType', 'mediaUrl','createdAt'],
|
||||
order: [
|
||||
['createdAt', 'ASC']
|
||||
]
|
||||
},
|
||||
{
|
||||
model: Contact,
|
||||
required:true,
|
||||
attributes: ['name', 'number']
|
||||
},
|
||||
{
|
||||
model: User,
|
||||
required:true,
|
||||
attributes: ['name', 'email']
|
||||
},
|
||||
{
|
||||
model: Queue,
|
||||
required:true,
|
||||
attributes: ['name']
|
||||
},
|
||||
|
||||
],
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*const ticket = await Message.findAll({
|
||||
//raw: true,
|
||||
where:{''},
|
||||
attributes: ['body', 'createdAt', 'ticketId'],
|
||||
include: [
|
||||
{
|
||||
model: Ticket,
|
||||
attributes: ['contactid', 'userid', 'queueid', 'status'],
|
||||
include:[
|
||||
{
|
||||
model: Contact,
|
||||
attributes: ['name', 'number']
|
||||
},
|
||||
{
|
||||
model: User,
|
||||
attributes: ['name', 'email']
|
||||
},
|
||||
{
|
||||
model: Queue,
|
||||
attributes: ['name']
|
||||
}
|
||||
],
|
||||
},
|
||||
|
||||
],
|
||||
order:
|
||||
['ticketId', 'createdAt']
|
||||
|
||||
}); */
|
||||
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
return ticket;
|
||||
};
|
||||
|
||||
|
||||
// Report all
|
||||
/*const ShowTicketReport = async (): Promise<Message[]> => {
|
||||
|
||||
const ticket = await Message.findAll({
|
||||
//raw: true,
|
||||
attributes: ['body', 'createdAt', 'ticketId'],
|
||||
include: [
|
||||
{
|
||||
model: Ticket,
|
||||
attributes: ['contactid', 'userid', 'queueid', 'status'],
|
||||
include:[
|
||||
{
|
||||
model: Contact,
|
||||
attributes: ['name', 'number']
|
||||
},
|
||||
{
|
||||
model: User,
|
||||
attributes: ['name', 'email']
|
||||
},
|
||||
{
|
||||
model: Queue,
|
||||
attributes: ['name']
|
||||
}
|
||||
],
|
||||
},
|
||||
|
||||
],
|
||||
order:
|
||||
['ticketId', 'createdAt']
|
||||
|
||||
});
|
||||
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
return ticket;
|
||||
};*/
|
||||
|
||||
export default ShowTicketReport;
|
Loading…
Reference in New Issue