import { Request, Response } from "express"; import { getIO } from "../libs/socket"; import { removeWbot } from "../libs/wbot"; import { StartWhatsAppSession } from "../services/WbotServices/StartWhatsAppSession"; import CreateWhatsAppService from "../services/WhatsappService/CreateWhatsAppService"; import DeleteWhatsAppService from "../services/WhatsappService/DeleteWhatsAppService"; import ListWhatsAppsService from "../services/WhatsappService/ListWhatsAppsService"; import ShowWhatsAppService from "../services/WhatsappService/ShowWhatsAppService"; import UpdateWhatsAppService from "../services/WhatsappService/UpdateWhatsAppService"; interface WhatsappData { name: string; queueIds: number[]; companyId: number; greetingMessage?: string; complationMessage?: string; outOfHoursMessage?: string; ratingMessage?: string; status?: string; isDefault?: boolean; token?: string; //sendIdQueue?: number; //timeSendQueue?: number; transferQueueId?: number; timeToTransfer?: number; promptId?: number; maxUseBotQueues?: number; timeUseBotQueues?: number; expiresTicket?: number; expiresInactiveMessage?: string; } interface QueryParams { session?: number | string; } export const index = async (req: Request, res: Response): Promise => { const { companyId } = req.user; const { session } = req.query as QueryParams; const whatsapps = await ListWhatsAppsService({ companyId, session }); return res.status(200).json(whatsapps); }; export const store = async (req: Request, res: Response): Promise => { const { name, status, isDefault, greetingMessage, complationMessage, outOfHoursMessage, queueIds, token, //timeSendQueue, //sendIdQueue, transferQueueId, timeToTransfer, promptId, maxUseBotQueues, timeUseBotQueues, expiresTicket, expiresInactiveMessage }: WhatsappData = req.body; const { companyId } = req.user; const { whatsapp, oldDefaultWhatsapp } = await CreateWhatsAppService({ name, status, isDefault, greetingMessage, complationMessage, outOfHoursMessage, queueIds, companyId, token, //timeSendQueue, //sendIdQueue, transferQueueId, timeToTransfer, promptId, maxUseBotQueues, timeUseBotQueues, expiresTicket, expiresInactiveMessage }); StartWhatsAppSession(whatsapp, companyId); const io = getIO(); io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-whatsapp`, { action: "update", whatsapp }); if (oldDefaultWhatsapp) { io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-whatsapp`, { action: "update", whatsapp: oldDefaultWhatsapp }); } return res.status(200).json(whatsapp); }; export const show = async (req: Request, res: Response): Promise => { const { whatsappId } = req.params; const { companyId } = req.user; const { session } = req.query; const whatsapp = await ShowWhatsAppService(whatsappId, companyId, session); return res.status(200).json(whatsapp); }; export const update = async ( req: Request, res: Response ): Promise => { const { whatsappId } = req.params; const whatsappData = req.body; const { companyId } = req.user; const { whatsapp, oldDefaultWhatsapp } = await UpdateWhatsAppService({ whatsappData, whatsappId, companyId }); const io = getIO(); io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-whatsapp`, { action: "update", whatsapp }); if (oldDefaultWhatsapp) { io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-whatsapp`, { action: "update", whatsapp: oldDefaultWhatsapp }); } return res.status(200).json(whatsapp); }; export const remove = async ( req: Request, res: Response ): Promise => { const { whatsappId } = req.params; const { companyId } = req.user; await ShowWhatsAppService(whatsappId, companyId); await DeleteWhatsAppService(whatsappId); removeWbot(+whatsappId); const io = getIO(); io.to(`company-${companyId}-mainchannel`).emit(`company-${companyId}-whatsapp`, { action: "delete", whatsappId: +whatsappId }); return res.status(200).json({ message: "Whatsapp deleted." }); };