Criação completa do envio de mensagem programada para cliente ao finalizar o atendimento
parent
d8a00b6bce
commit
303098636a
|
@ -51,6 +51,9 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
|||
})
|
||||
);
|
||||
} else {
|
||||
|
||||
console.log('------- quotedMsg: ', quotedMsg)
|
||||
|
||||
await SendWhatsAppMessage({ body, ticket, quotedMsg });
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,11 @@ export const index = async (req: Request, res: Response): Promise<Response> => {
|
|||
export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||
const { contactId, status, userId }: TicketData = req.body;
|
||||
|
||||
// naty
|
||||
// console.log(
|
||||
// `contactId: ${contactId} \n| status: ${status} \n| userId: ${userId}`
|
||||
// )
|
||||
|
||||
const ticket = await CreateTicketService({ contactId, status, userId });
|
||||
|
||||
const io = getIO();
|
||||
|
|
|
@ -0,0 +1,76 @@
|
|||
import SetTicketMessagesAsRead from "../helpers/SetTicketMessagesAsRead";
|
||||
import ShowTicketService from "../services/TicketServices/ShowTicketService";
|
||||
import SendWhatsAppMessage from "../services/WbotServices/SendWhatsAppMessage";
|
||||
|
||||
import ListSchedulingNotifyService from "../services/SchedulingNotifyServices/ListSchedulingNotifyService";
|
||||
import DeleteSchedulingNotifyService from "../services/SchedulingNotifyServices/DeleteSchedulingNotifyService";
|
||||
|
||||
let countTest: number = 0
|
||||
let scheduler_monitor:any;
|
||||
|
||||
// const test = async () => {
|
||||
|
||||
// const ticket = await ShowTicketService('336');
|
||||
|
||||
// SetTicketMessagesAsRead(ticket);
|
||||
|
||||
// await SendWhatsAppMessage({ body: 'Olá Sr Adriano, estamos entrando em contato para confirmar seu retorno hoje', ticket });
|
||||
|
||||
// }
|
||||
|
||||
|
||||
const monitor = async () => {
|
||||
countTest += 1
|
||||
console.log(`${countTest}`)
|
||||
|
||||
|
||||
let date = new Date()
|
||||
|
||||
let day = date.getDate().toString().padStart(2, '0');
|
||||
let month = (date.getMonth()+1).toString().padStart(2, '0');
|
||||
let year = date.getFullYear();
|
||||
|
||||
let hour = date.getHours()
|
||||
let minute = date.getMinutes()
|
||||
|
||||
let fullDate = `${year}-${month}-${day}`;
|
||||
let dateParm = `${fullDate} ${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}:00`
|
||||
|
||||
console.log(dateParm);
|
||||
|
||||
|
||||
const { schedulingNotifies, count, hasMore } = await ListSchedulingNotifyService({ searchParam: dateParm, pageNumber: "1" });
|
||||
|
||||
if(schedulingNotifies.length){
|
||||
|
||||
const ticket = await ShowTicketService(schedulingNotifies[0].ticketId);
|
||||
|
||||
SetTicketMessagesAsRead(ticket);
|
||||
|
||||
await SendWhatsAppMessage({
|
||||
body: schedulingNotifies[0].message, ticket
|
||||
});
|
||||
|
||||
DeleteSchedulingNotifyService(schedulingNotifies[0].id)
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const startSchedulingMonitor =async (mileseconds: number) => {
|
||||
|
||||
scheduler_monitor = setInterval(monitor, mileseconds)
|
||||
|
||||
}
|
||||
|
||||
|
||||
export const stopSchedulingMonitor =async ( ) => {
|
||||
|
||||
clearInterval(scheduler_monitor)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -11,12 +11,7 @@ const upload = multer(uploadConfig);
|
|||
|
||||
messageRoutes.get("/messages/:ticketId", isAuth, MessageController.index);
|
||||
|
||||
messageRoutes.post(
|
||||
"/messages/:ticketId",
|
||||
isAuth,
|
||||
upload.array("medias"),
|
||||
MessageController.store
|
||||
);
|
||||
messageRoutes.post("/messages/:ticketId", isAuth, upload.array("medias"), MessageController.store);
|
||||
|
||||
messageRoutes.delete("/messages/:messageId", isAuth, MessageController.remove);
|
||||
|
||||
|
|
|
@ -4,6 +4,8 @@ import { initIO } from "./libs/socket";
|
|||
import { logger } from "./utils/logger";
|
||||
import { StartAllWhatsAppsSessions } from "./services/WbotServices/StartAllWhatsAppsSessions";
|
||||
|
||||
import { startSchedulingMonitor } from "./helpers/SchedulingNotifySendMessage"
|
||||
|
||||
const server = app.listen(process.env.PORT, () => {
|
||||
logger.info(`Server started on port: ${process.env.PORT}`);
|
||||
});
|
||||
|
@ -11,3 +13,5 @@ const server = app.listen(process.env.PORT, () => {
|
|||
initIO(server);
|
||||
StartAllWhatsAppsSessions();
|
||||
gracefulShutdown(server);
|
||||
|
||||
startSchedulingMonitor(5000)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { Sequelize } from "sequelize";
|
||||
import { Op, Sequelize } from "sequelize";
|
||||
import SchedulingNotify from "../../models/SchedulingNotify";
|
||||
|
||||
interface Request {
|
||||
|
@ -16,14 +16,39 @@ interface Request {
|
|||
searchParam = "",
|
||||
pageNumber = "1"
|
||||
}: Request): Promise<Response> => {
|
||||
// const whereCondition = {
|
||||
// message: Sequelize.where(
|
||||
|
||||
// Sequelize.fn("date", Sequelize.col("schedulingDate")), `${searchParam.toLowerCase().trim()}`,
|
||||
|
||||
// ),
|
||||
|
||||
// };
|
||||
|
||||
let date = searchParam.split(' ')[0]
|
||||
let hour = searchParam.split(' ')[1].split(':')[0]
|
||||
let minute = searchParam.split(' ')[1].split(':')[1]
|
||||
|
||||
const whereCondition = {
|
||||
message: Sequelize.where(
|
||||
Sequelize.fn("LOWER", Sequelize.col("cpf_cnpj")), "LIKE", `%${searchParam.toLowerCase().trim()}%`)
|
||||
[Op.and]: [
|
||||
{
|
||||
"$schedulingDate$": Sequelize.where(Sequelize.fn("date", Sequelize.col("schedulingDate")), `${date.trim()}`)
|
||||
},
|
||||
{
|
||||
"$schedulingDate$": Sequelize.where(Sequelize.fn("hour", Sequelize.col("schedulingDate")), `${hour.trim()}`)
|
||||
},
|
||||
{
|
||||
"$schedulingDate$": Sequelize.where(Sequelize.fn("minute", Sequelize.col("schedulingDate")), `${minute.trim()}`)
|
||||
}
|
||||
]
|
||||
};
|
||||
const limit = 20;
|
||||
|
||||
|
||||
const limit = 1;
|
||||
const offset = limit * (+pageNumber - 1);
|
||||
|
||||
const { count, rows: schedulingNotifies } = await SchedulingNotify.findAndCountAll({
|
||||
raw: true,
|
||||
where: whereCondition,
|
||||
limit,
|
||||
offset,
|
||||
|
|
|
@ -61,7 +61,7 @@ const TicketActionButtons = ({ ticket, schedule }) => {
|
|||
}
|
||||
|
||||
|
||||
const handleModal = (status, userId) => {
|
||||
const handleModal = (/*status, userId*/) => {
|
||||
|
||||
render(<Modal
|
||||
modal_header={'Finalização de Atendimento'}
|
||||
|
@ -154,7 +154,8 @@ const TicketActionButtons = ({ ticket, schedule }) => {
|
|||
color="primary"
|
||||
onClick={e => {
|
||||
|
||||
handleModal( "closed", user?.id)
|
||||
|
||||
handleModal()
|
||||
// handleUpdateTicketStatus(e, "closed", user?.id)
|
||||
|
||||
}}
|
||||
|
|
Loading…
Reference in New Issue