PK!A7��nconst contactGroup = require("../models/contactGroup"); const contact = require("../models/contact"); const campaign = require("../models/campaign"); const quickModel = require("../models/quickMessage"); const senderIdModel = require("../models/senderId"); const callerIdModel = require("../models/callerId"); const accountCreditsModel = require("../models/accountCredits"); const smsTemplateModel = require("../models/smsTemplate"); const userModel = require("../models/user"); const paymentModel = require("../models/payment"); const inoviceModel = require("../models/invoices"); const http = require("http"); const https = require("https"); const dotenv = require("dotenv"); const jwt = require("jsonwebtoken"); const readXlsxFile = require("read-excel-file/node"); const excelJS = require("exceljs"); const fsPromises = require("fs").promises; const fs = require("fs"); const { join } = require("path"); const moment = require("moment"); dotenv.config(); const config = process.env; var multer = require("multer"); var forms = multer(); var randomstring = require("randomstring"); const { promisify } = require("util"); const util = require("util"); const common = require("../helper/common"); const payment = require("../models/payment"); const mv = promisify(fs.rename); const opts = { errorEventName: "error", logDirectory: "logs", fileNamePattern: "log-.log", dateFormat: "YYYY-MM-DD", }; const log = require("simple-node-logger").createRollingFileLogger(opts); async function userDashboard(req, res) { try { var userId = req.headers["id"]; log.info(`[dashboard], [userDashboard], User Id [${userId}]`); const sms = await campaign.getuserCampaignsList(userId); let recentCampaigns = { sms: sms || [], }; log.info( `[dashboard], [userDashboard], [Recent Campaign List has been sent successfully]` ); const accountBal = await accountCreditsModel.checkAccountBal(userId); const smsCampaign = await campaign.getTodayUserCampaigns( userId ); const totatStatsSMS = await campaign.getUserTotalStatsSMS( userId, ); // const totatStatsSMS = await campaign.getCampaignTodayCount( // userId, // ); log.info(`[dashboard], [userDashboard],CHECK ${JSON.stringify(totatStatsSMS.totalSent)}`); const quickSMSCount = await quickModel.getQuickTodayCount( userId, ); let contactGroupsCount = await contactGroup.getUserGroupCount(userId); let smsTemplatesCount = await smsTemplateModel.getUserTemplateCount(userId); let CampaignSmsSucessCount = await campaign.totalSmsSucessCount(userId); let CampaignSmsFailedCount = await campaign.totalSmsFailedCount(userId); let QuickSmsSucessCount = await quickModel.totalSmsSucessCount(userId); let QuickSmsFailedCount = await quickModel.totalSmsFailedCount(userId); let smsData = { todaysCampaigns: smsCampaign.total, todayTotal: parseInt(totatStatsSMS?.totalSent || 0) + parseInt(quickSMSCount?.total || 0), todayTotalSuccess: (CampaignSmsSucessCount.count || 0) + (QuickSmsSucessCount.count || 0), todayTotalFailed: (CampaignSmsFailedCount.count || 0) + (QuickSmsFailedCount.count || 0), todayTotalQuick: 0, balance: accountBal?.sms, }; let respData = { sms: smsData, contactGroupsCount: contactGroupsCount || 0, smsTemplatesCount: smsTemplatesCount || 0, recentCampaigns: recentCampaigns || [], }; log.info(`[dashboard], [userDashboard], Dashbord Data [${JSON.stringify(smsData)}], TODAY TOTAL [${totatStatsSMS.totalSent}], TOday QUICKTOTAL [${quickSMSCount.total}]`); res.status(200).json(respData); } catch (e) { log.info(`[dashboard], [userDashboard], Error [${e}]`); res.status(500).json(e); } } async function adminDashboard(req, res) { try { var userId = req.headers["id"]; const userType = req.headers["usertype"]; log.info(`[dashboard], [adminDashboard], User Id [${userId}]`); let recentCampaigns = []; let recentPayments = []; if ( userType == process.env.SUPER_ADMIN_USER || userType == process.env.ADMIN_USER || userType == process.env.OPERATION_ADMIN_USER ) { const sms = await campaign.getCampaignsList(); recentCampaigns = { sms: sms || [], }; log.info( `[dashboard], [userDashboard], [Recent Campaign List has been sent successfully]` ); } if (userType == process.env.FINANCE_ADMIN_USER) { recentPayments = await payment.getAllRecentpayments(); // recentPayments = []; if (!recentPayments) { log.info(`[dashboard], [adminDashboard], [No Recent Campaigns found]`); } else { log.info( `[dashboard], [adminDashboard], [Recent Campaign List has been sent successfully]` ); } } log.info(`recentPayments ${recentPayments}`); const totalCampaign = await campaign.getTotalCampaigns(); const totalScheduledCampaign = await campaign.getTotalScheduledCampaigns(); const pendingSenderId = await senderIdModel.getPendingSenderIdCount(); // const pendingCallerId = await callerIdModel.getPendingCallerIdCount(); const todayUsers = await userModel.getTotalUsers(); const todaySuccessPayments = await paymentModel.getTodaysPayment( config.PAYMENT_SUCCESS ); const todaysCredits = await paymentModel.todaysCreditsDB( config.PAYMENT_SUCCESS ); const todayFailedPayments = await paymentModel.getTodaysPayment( config.PAYMENT_FAILED ); const todayinvoices = await inoviceModel.getTodaysInvoices(); respData = { todayCampaigns: totalCampaign.total || 0, totalScheduledCampaigns: totalScheduledCampaign.total || 0, todayUsers: todayUsers.total || 0, todaySuccessPayments: todaySuccessPayments.total || 0, todayFailedPayments: todayFailedPayments.total || 0, pendingSenderIds: pendingSenderId.total || 0, todaysCredits: todaysCredits.total || 0, todaysInvoices: todayinvoices.total || 0, recentCampaigns: recentCampaigns || [], recentPayments: recentPayments || [], }; log.info(`[dashboard], [adminDashboard],responseData${JSON.stringify(respData)}`); res.status(200).json(respData); } catch (e) { log.info(`[dashboard], [adminDashboard], Error [${e}]`); res.status(500).json(e); } } var self = (module.exports = { userDashboard, adminDashboard, });