124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import gracefulShutdown from "http-graceful-shutdown";
 | |
| import app from "./app";
 | |
| import { initIO, getIO } from "./libs/socket";
 | |
| import { logger } from "./utils/logger";
 | |
| import { StartAllWhatsAppsSessions } from "./services/WbotServices/StartAllWhatsAppsSessions";
 | |
| import User from "./models/User";
 | |
| import Whatsapp from "./models/Whatsapp";
 | |
| import endPointQuery from "./helpers/old_EndPointQuery";
 | |
| import { cacheSize, flushCache, loadTicketsCache } from "./helpers/TicketCache";
 | |
| import { loadContactsCache } from "./helpers/ContactsCache";
 | |
|  
 | |
| import "./helpers/CloseBotTickets";
 | |
| import { loadSchedulesCache } from "./helpers/SchedulingNotifyCache";
 | |
| import { delRestoreControllFile } from "./helpers/RestoreControll";
 | |
| import "./helpers/AutoCloseTickets";
 | |
| 
 | |
| import "./helpers/SchedulingNotifySendMessage";
 | |
| import axios from "axios";
 | |
| import os from "os";
 | |
| import Setting from "./models/Setting";
 | |
| 
 | |
| import fs from "fs";
 | |
| import dir from "path";
 | |
| import { getSettingValue } from "./helpers/WhaticketSettings";
 | |
| import loadSettings from "./helpers/LoadSettings";
 | |
| 
 | |
| const server = app.listen(process.env.PORT, () => {
 | |
|   logger.info(`Server started on port: ${process.env.PORT}`);
 | |
| });
 | |
| 
 | |
| // if (global.gc) {
 | |
| //   console.log(">> Starting Garbage Collector...");
 | |
| //   global.gc();
 | |
| // } else {
 | |
| //   console.warn('No GC hook! Start your program as `node --expose-gc file.js`.');
 | |
| // }
 | |
| 
 | |
| initIO(server);
 | |
| 
 | |
| // StartAllWhatsAppsSessions();
 | |
| gracefulShutdown(server);
 | |
| 
 | |
| (async () => {
 | |
|   console.log("os.tmpdir(): ", os.tmpdir());
 | |
| 
 | |
|   loadSettings();
 | |
| 
 | |
|   let whatsapps: any = await Whatsapp.findAll({ attributes: ["id", "url"] });
 | |
| 
 | |
|   // console.log('whatsapps: ', whatsapps)
 | |
| 
 | |
|   if (whatsapps && whatsapps.length > 0) {
 | |
|     for (let i = 0; i < whatsapps.length; i++) {
 | |
|       try {
 | |
|         console.log(
 | |
|           `API URL: ${whatsapps[i].dataValues.url}/api/connection/status`
 | |
|         );
 | |
| 
 | |
|         const response = await axios.get(
 | |
|           `${whatsapps[i].dataValues.url}/api/connection/status`,
 | |
|           {}
 | |
|         );
 | |
| 
 | |
|         console.log(`-------> Response: ${response.data.data}`);
 | |
| 
 | |
|         if (!response) {
 | |
|           throw new Error("Response null");
 | |
|         }
 | |
| 
 | |
|         if (response.data.data && response.data.data == "CONNECTED") {
 | |
|           await whatsapps[i].update({ status: "CONNECTED" });
 | |
|         }
 | |
|       } catch (error: any) {
 | |
|         await whatsapps[i].update({ status: "OPENING" });
 | |
| 
 | |
|         console.log(
 | |
|           `There was an error on try acess the api sessions ${whatsapps[i].dataValues.url}`
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       await new Promise(f => setTimeout(f, 100));
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (process.env.CACHE) {
 | |
|     const cacheLength = await cacheSize();
 | |
| 
 | |
|     console.log("cacheSize: ", cacheLength);
 | |
| 
 | |
|     if (cacheLength == 0) {
 | |
|       console.log("Loading from cache...");
 | |
|       await flushCache();
 | |
|       await loadContactsCache();
 | |
|       await loadTicketsCache();
 | |
|     }
 | |
| 
 | |
|     await loadSchedulesCache();
 | |
|     // await loadWhatsappCache()
 | |
|   }
 | |
| 
 | |
|   delRestoreControllFile();
 | |
| })();
 | |
| 
 | |
| setTimeout(async () => {
 | |
|   const io = getIO();
 | |
| 
 | |
|   console.log("Triggered socket!");
 | |
| 
 | |
|   let users = await User.findAll({ raw: true, attributes: ["id"] });
 | |
| 
 | |
|   if (users && users.length > 0) {
 | |
|     for (let i = 0; i < users.length; i++) {
 | |
|       io.emit("reload_page", {
 | |
|         action: "update",
 | |
|         userId: users[i].id
 | |
|       });
 | |
| 
 | |
|       console.log("USER ID: ", users[i].id);
 | |
| 
 | |
|       await new Promise(f => setTimeout(f, 100));
 | |
|     }
 | |
|   }
 | |
| }, 5000);
 |