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 cookieParser from "cookie-parser"; | ||||||
| import * as Sentry from "@sentry/node"; | import * as Sentry from "@sentry/node"; | ||||||
| 
 | 
 | ||||||
| console.log('dddddddddddddddddddddddddddd') |  | ||||||
| 
 |  | ||||||
| import "./database"; | import "./database"; | ||||||
| import uploadConfig from "./config/upload"; | import uploadConfig from "./config/upload"; | ||||||
| import AppError from "./errors/AppError"; | import AppError from "./errors/AppError"; | ||||||
|  | @ -41,5 +39,6 @@ app.use(async (err: Error, req: Request, res: Response, _: NextFunction) => { | ||||||
|   logger.error(err); |   logger.error(err); | ||||||
|   return res.status(500).json({ error: "Internal server error" }); |   return res.status(500).json({ error: "Internal server error" }); | ||||||
| }); | }); | ||||||
|  |   | ||||||
| 
 | 
 | ||||||
| export default app; | 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 CreateTicketService from "../services/TicketServices/CreateTicketService"; | ||||||
| import DeleteTicketService from "../services/TicketServices/DeleteTicketService"; | 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 ShowTicketService from "../services/TicketServices/ShowTicketService"; | ||||||
| import UpdateTicketService from "../services/TicketServices/UpdateTicketService"; | import UpdateTicketService from "../services/TicketServices/UpdateTicketService"; | ||||||
| import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage"; | 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); |   return res.status(200).json(ticket); | ||||||
| }; | }; | ||||||
|  |   | ||||||
| 
 | 
 | ||||||
| export const show = async (req: Request, res: Response): Promise<Response> => { | export const show = async (req: Request, res: Response): Promise<Response> => { | ||||||
|   const { ticketId } = req.params; |   const { ticketId } = req.params; | ||||||
| 
 | 
 | ||||||
|   const contact = await ShowTicketService(ticketId); |   const contact = await ShowTicketService(ticketId); | ||||||
| 
 | 
 | ||||||
|  |   //console.log('------- contact: ',JSON.stringify(contact))
 | ||||||
|  | 
 | ||||||
|   return res.status(200).json(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'){ |       if(user.profile!=='master'){ | ||||||
|         auxUsers.push(user) |         auxUsers.push(user) | ||||||
|       }  |       }  | ||||||
|     }   |     }    | ||||||
| 
 |      | ||||||
|     return res.json({ users: auxUsers, count, hasMore });  |     return res.json({ users: auxUsers, count, hasMore });  | ||||||
|  }  |  }  | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,26 +4,29 @@ import userRoutes from "./userRoutes"; | ||||||
| import authRoutes from "./authRoutes"; | import authRoutes from "./authRoutes"; | ||||||
| import settingRoutes from "./settingRoutes"; | import settingRoutes from "./settingRoutes"; | ||||||
| import contactRoutes from "./contactRoutes"; | import contactRoutes from "./contactRoutes"; | ||||||
| import ticketRoutes from "./ticketRoutes"; | import ticketRoutes from "./ticketRoutes";   | ||||||
| import whatsappRoutes from "./whatsappRoutes"; | import whatsappRoutes from "./whatsappRoutes"; | ||||||
| import messageRoutes from "./messageRoutes"; | import messageRoutes from "./messageRoutes"; | ||||||
| import whatsappSessionRoutes from "./whatsappSessionRoutes"; | import whatsappSessionRoutes from "./whatsappSessionRoutes"; | ||||||
| import queueRoutes from "./queueRoutes"; | import queueRoutes from "./queueRoutes"; | ||||||
| import quickAnswerRoutes from "./quickAnswerRoutes"; | import quickAnswerRoutes from "./quickAnswerRoutes"; | ||||||
|  | import reportRoutes from "./reportRoutes"; | ||||||
| 
 | 
 | ||||||
| const routes = Router(); | const routes = Router();     | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| routes.use(userRoutes); | routes.use(userRoutes); | ||||||
| routes.use("/auth", authRoutes); | routes.use("/auth", authRoutes); | ||||||
| routes.use(settingRoutes); | routes.use(settingRoutes); | ||||||
| routes.use(contactRoutes); | routes.use(contactRoutes);  | ||||||
| routes.use(ticketRoutes); | routes.use(ticketRoutes);   | ||||||
| routes.use(whatsappRoutes); | routes.use(whatsappRoutes); | ||||||
| routes.use(messageRoutes); | routes.use(messageRoutes); | ||||||
| routes.use(whatsappSessionRoutes); | routes.use(whatsappSessionRoutes); | ||||||
| routes.use(queueRoutes); | routes.use(queueRoutes); | ||||||
| routes.use(quickAnswerRoutes); | routes.use(quickAnswerRoutes); | ||||||
| 
 | 
 | ||||||
|  | routes.use(reportRoutes); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| export default routes; | 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"; | 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); | 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