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"; import { Op, where } from "sequelize"; import { Sequelize } from "sequelize"; import moment from 'moment'; import { startOfDay, endOfDay, parseISO, getDate} from "date-fns"; import { string } from "yup/lib/locale"; //Report by user, startDate, endDate const ShowTicketReport = async (id: string | number, startDate: string, endDate: string): Promise => { let where_clause = {} if(id=='0'){ where_clause = { createdAt: { [Op.gte]: startDate+' 00:00:00.000000', [Op.lte]: endDate +' 23:59:59.999999' }, } } else{ where_clause = { userid: id, createdAt: { [Op.gte]: startDate+' 00:00:00.000000', [Op.lte]: endDate +' 23:59:59.999999' }, } } const ticket = await Ticket.findAll({ where: where_clause , //attributes: ['id', 'status', 'createdAt', 'updatedAt'], attributes: ['id', 'status', [Sequelize.fn("DATE_FORMAT",Sequelize.col("Ticket.createdAt"),"%d/%m/%Y %H:%i:%s"),"createdAt"], [Sequelize.fn("DATE_FORMAT",Sequelize.col("Ticket.updatedAt"),"%d/%m/%Y %H:%i:%s"),"updatedAt"]], include: [ { model: Message, required:true, separate: true, // attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl','createdAt'], attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl', [Sequelize.fn("DATE_FORMAT",Sequelize.col("createdAt"),"%d/%m/%Y %H:%i:%s"),"createdAt"]], order: [ ['createdAt', 'ASC'] ] }, { model: Contact, attributes: ['name', 'number'] }, { model: User, attributes: ['name', 'email'] }, { model: Queue, attributes: ['name'] }, ], }); /*//Report by user const ShowTicketReport = async (id: string | number): Promise => { const ticket = await Ticket.findAll({ where: {userid: id} , attributes: ['id', 'status', 'createdAt', 'updatedAt'], include: [ { model: Message, required:true, separate: true, attributes: ['body', 'read', 'mediaType','fromMe', 'mediaUrl','createdAt'], order: [ ['createdAt', 'ASC'] ] }, { model: Contact, attributes: ['name', 'number'] }, { model: User, attributes: ['name', 'email'] }, { model: Queue, attributes: ['name'] }, ], }); */ if (!ticket) { throw new AppError("ERR_NO_TICKET_FOUND", 404); } return ticket; }; // Report all /*const ShowTicketReport = async (): Promise => { 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;