import { Request, Response } from "express"; import { getIO } from "../libs/socket"; import { removeWbot } from "../libs/wbot"; import { StartWhatsAppSession } from "../services/WbotServices/StartWhatsAppSession"; import { removeDir } from "../helpers/DeleteDirectory"; 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"; import AppError from "../errors/AppError"; import getNumberFromName from "../helpers/GetNumberSequence"; import phoneNumberStart from "../helpers/PhoneNumberStatusCode" import path from 'path'; import validatePhoneName from "../helpers/ValidatePhoneName"; import postData from "../helpers/AxiosPost"; import Whatsapp from "../models/Whatsapp"; interface WhatsappData { name: string; queueIds: number[]; url: string; urlApi: string; greetingMessage?: string; farewellMessage?: string; status?: string; isDefault?: boolean; } export const index = async (req: Request, res: Response): Promise => { const whatsapps = await ListWhatsAppsService(); return res.status(200).json(whatsapps); }; export const store = async (req: Request, res: Response): Promise => { const { name, status, isDefault, greetingMessage, farewellMessage, queueIds, url, urlApi }: WhatsappData = req.body; // console.log( name, // status, // isDefault, // greetingMessage, // farewellMessage, // queueIds, // url, // urlApi) // console.log('getNumberFromName: ', getNumberFromName(name)) // return res.status(200); if (req.user.profile !== "master") { throw new AppError("ERR_NO_PERMISSION", 403); } let validate = validatePhoneName(name) if (validate) { return res.status(200).json({ message: validate }); } const { whatsapp, oldDefaultWhatsapp } = await CreateWhatsAppService({ name, url, urlApi, status, isDefault, greetingMessage, farewellMessage, queueIds }); console.log('whatsapp.id: ', whatsapp.id) postData( `${whatsapp.urlApi}/api/session`, { "app_name": process.env.APP_NAME, "whatsappId": whatsapp.id, "number": getNumberFromName(name), "client_url": `${process.env.BACKEND_URL_RAW}:${process.env.PORT}` }) // StartWhatsAppSession(whatsapp); const io = getIO(); io.emit("whatsapp", { action: "update", whatsapp }); if (oldDefaultWhatsapp) { io.emit("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 whatsapp = await ShowWhatsAppService(whatsappId); return res.status(200).json(whatsapp); }; export const update = async ( req: Request, res: Response ): Promise => { const { whatsappId } = req.params; const whatsappData = req.body; let validate = validatePhoneName(whatsappData.name) console.log('validate', validate) if (validate) { return res.status(200).json({ message: validate }); } const { whatsapp, oldDefaultWhatsapp } = await UpdateWhatsAppService({ whatsappData, whatsappId }); postData( `${whatsapp.urlApi}/api/session`, { "app_name": process.env.APP_NAME, "whatsappId": whatsapp.id, "number": getNumberFromName(whatsapp.name), "client_url": `${process.env.BACKEND_URL_RAW}:${process.env.PORT}` }) const io = getIO(); io.emit("whatsapp", { action: "update", whatsapp }); if (oldDefaultWhatsapp) { io.emit("whatsapp", { action: "update", whatsapp: oldDefaultWhatsapp }); } return res.status(200).json(whatsapp); }; export const remove = async ( req: Request, res: Response ): Promise => { if (req.user.profile !== "master") { throw new AppError("ERR_NO_PERMISSION", 403); } const { whatsappId } = req.params; const whatsapp: any = await Whatsapp.findByPk(whatsappId, { raw: true }) postData( `${whatsapp.urlApi}/api/session/del`, { "app_name": process.env.APP_NAME, "whatsappId": whatsappId }) await DeleteWhatsAppService(whatsappId); removeDir(path.join(process.cwd(), '.wwebjs_auth', `session-bd_${whatsappId}`)) removeDir(path.join(process.cwd(), '.wwebjs_auth', 'sessions', `session-bd_${whatsappId}`)) removeWbot(+whatsappId); const io = getIO(); io.emit("whatsapp", { action: "delete", whatsappId: +whatsappId }); return res.status(200).json({ message: "Whatsapp deleted." }); };