PK!A7��nconst userModel = require("../models/user"); const quickmessage = require("../models/quickMessage"); const emailIdModel = require("../models/EmailId"); const reqLib = require("../library/request"); const accountCreditsModel = require("../models/accountCredits"); const http = require("http"); const https = require("https"); const dotenv = require("dotenv"); const jwt = require("jsonwebtoken"); const callerIdModel = require("../models/callerId"); 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 nodemailer = require("nodemailer"); 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 mv = promisify(fs.rename); var pdf = require("pdf-creator-node"); const common = require("../helper/common"); const quickMessageReport = require("../models/quickMessageReport"); const quickMessageReportVoice = require("../models/quickMessageReportVoice"); const opts = { errorEventName: "error", logDirectory: "logs", fileNamePattern: "log-.log", dateFormat: "YYYY-MM-DD", }; const log = require("simple-node-logger").createRollingFileLogger(opts); async function getAllEmailIds(req, res) { let { searchType, searchValue } = req.body; try { let emailSenderIds; if ("SENDER_ID" == searchType) { log.info(`[Email], [getAllEmailIds], [FILTER], Search Type [${searchType}], Search Value [${searchValue}]`); emailSenderIds = await emailIdModel.allEmailSenderNamesSearchBySenderName(searchValue); } else if ("USER" == searchType) { log.info(`[Email], [getAllEmailIds], [FILTER], Search Type [${searchType}], Search Value [${searchValue}]`); emailSenderIds = await emailIdModel.allEmailSenderNamesSearchByUserName(searchValue); } else { log.info(`[Email], [getAllEmailIds], [Fetch all email sender ID]`); emailSenderIds = await emailIdModel.allEmailSenderIds(); } if (emailSenderIds) { const users = await userModel.getTotalCustomerUsers( process.env.ACTIVE, process.env.USER_ACTIVE_STATE, process.env.CLIENT_USER ); return res.status(200).json({ emailSenderIds, users }); } else { log.info(`[EmailSenderId], [getAllEmailIds], [NO Email SenderId Found]`); return res.status(400).json({ msg: "No EmailSenderId Found" }); } } catch (e) { log.info(`[EmailSenderId], [runQuickVoice], Error [${e}]`); return res.status(500).json(e); } } async function adminEmailSenderIdRequests(req, res) { try { var userId = req.headers["id"]; log.info( `[EmailSenderId], [adminEmailSenderIdRequests], User Id [${userId}]` ); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { const emailSenderIds = await emailIdModel.allRquestforEmailSenderIds(); if (emailSenderIds) { log.info( `[EmailSenderId], [adminEmailSenderIdRequests], [All EmailSenderId]` ); return res.status(200).json(emailSenderIds); } else { log.info( `[EmailSenderId], [getAllEmailIds], [NO Email SenderId Found]` ); return res .status(400) .json({ msg: "No EmailSenderId Requests Found" }); } } else { log.info( `[EmailSenderId], [adminEmailSenderIdRequests], [NO Email SenderId Found]` ); return res.status(400).json({ msg: "No User Found" }); } } catch (e) { log.info(`[EmailSenderId], [adminEmailSenderIdRequests], Error [${e}]`); return res.status(500).json(e); } } async function requestEmailSenderId(req, res) { try { const userId = req.headers["id"]; log.info(`[EmailSenderId], [requestEmailSenderId], User Id [${userId}]`); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { const emailSenderId = req.body["emailSenderId"]; if (emailSenderId) { const isemailsenderIdExist = await emailIdModel.isemailsenderIdExist( emailSenderId ); if (!isemailsenderIdExist) { var addEmailSenderId = await emailIdModel.addEmailSenderId( emailSenderId, userId ); log.info( `[EmailSenderId], [requestEmailSenderId], [EmailSenderId is Requested Sucessfully]` ); //email To be send var getadmin = await userModel.getAdmin(process.env.SUPER_ADMIN_USER); if (getadmin) { var getadmin = getadmin.filter((admin) => admin?.permissions?.includes(process.env.ADMIN_EMAIL_SENDER_ID) ); } getadmin.map(async (admindata) => { let message = `You have a request for new Email Sender Name request. Visit below link for approval\n\n${process.env.SITE_LINK}`; const smsRes = await reqLib.sendSMSWithDLR( "TXTCONN", admindata["phone"], userId, 0, message, "MTN_BULK" ); log.info( `[EmailSenderId], [requestEmailSenderId], [SMS Response], [${JSON.stringify( smsRes )}]` ); try { let transporter = nodemailer.createTransport({ host: process.env.EMAIL_HOST, port: process.env.EMAIL_PORT, secure: false, // auth: { // user: process.env.EMAIL_USER, // pass: process.env.EMAIL_PASS, // }, }); let info = await transporter.sendMail({ from: process.env.EMAIL_SENDER, // sender address to: admindata["email"], // list of receivers subject: "Request for Email Sender Name", // Subject line text: "", html: `

Hi ${admindata["name"]}

You have a request for Email Sender Name

Thanks,
Team TxtConnect
${process.env.SITE_LINK}

`, }); log.info( `[EmailSenderId], [requestEmailSenderId], [sendMail], Mail response [${JSON.stringify( info )}]` ); } catch (mailErr) { log.info( `[EmailSenderId], [requestEmailSenderId], [sendMail], Mail Error [${JSON.stringify( mailErr )}]` ); } }); return res .status(200) .json({ msg: "Email SenderId Requested Sucessfully" }); } else { log.info( `[EmailSenderId], [requestEmailSenderId], [EmailSenderId is Taken]` ); return res.status(400).json({ msg: "Email SenderId is Taken" }); } } else { log.info( `[EmailSenderId], [requestEmailSenderId], [EmailSenderId Parameater missing]` ); return res.status(400).json({ msg: "Parameater Missing" }); } } else { log.info( `[EmailSenderId], [requestEmailSenderId], [NO Email SenderId Found]` ); return res.status(400).json({ msg: "No User Found" }); } } catch (e) { log.info(`[EmailSenderId], [requestEmailSenderId], Error [${e}]`); return res.status(500).json(e); } } async function adminEmailSenderIdAction(req, res) { try { var userId = req.headers["id"]; var action = req.body["action"]; var reson = req.body["reason"]; var emailSenderId = req.body["emailSenderId"]; if (!action || !emailSenderId) { log.info( `[EmailSenderId], [adminEmailSenderIdAction], [Missing parameters]` ); return res.status(400).json({ msg: "Missing parameters" }); } log.info( `[EmailSenderId], [adminEmailSenderIdAction], User Id [${userId}]` ); const user = await userModel.isUserExist(userId); // log.info(`[USER], [${JSON.stringify(user)}]`); if (user && user.state == 1) { if (action == 1) { const emailsenderIdaction = await emailIdModel.addEmailSenderIdApprove( 2, userId, emailSenderId ); log.info( `[EmailSenderId], [adminEmailSenderIdAction], [Email Sender ID approved]` ); let sendermail = await emailIdModel.getsenderdetail(emailSenderId); log.info(`[sendermail], [${JSON.stringify(sendermail)}]`); //let message = `Hi${sendermail["name"]}

Your Email Sender Name (${emailSenderId}) has been approved.

Thanks,
Team TxtConnect
${process.env.SITE_LINK}`; let message = `Your Email Sender Name (${emailSenderId}) has been approved. Visit below link to send emails\n\n${process.env.SITE_LINK}`; const smsres = reqLib.sendSMSWithDLR( "TXTCONN", sendermail["phone"], userId, 0, message, "MTN_BULK" ); log.info( `[EmailSenderId], [requestEmailSenderId], [SMS Response], msisdn [${sendermail["phone"] }], [${JSON.stringify(smsres)}]` ); try { let transporter = nodemailer.createTransport({ host: process.env.EMAIL_HOST, port: process.env.EMAIL_PORT, secure: false, // auth: { // user: process.env.EMAIL_USER, // pass: process.env.EMAIL_PASS, // }, }); let info = await transporter.sendMail({ from: process.env.EMAIL_SENDER, // sender address to: sendermail["email"], // list of receivers subject: "Request Approved Email Sender Name", // Subject line text: "", html: `

Hi ${sendermail["name"]}

Your Email Sender Name (${emailSenderId}) has been approved

Thanks,
Team TxtConnect
${process.env.SITE_LINK}

`, }); log.info( `[EmailSenderId], [sendMail], Mail response [${JSON.stringify( info )}]` ); } catch (mailErr) { log.info( `[EmailSenderId], [sendMail], Mail Error [${JSON.stringify( mailErr )}]` ); } return res .status(200) .json({ msg: "Email SenderId Approved Sucessfully" }); } else { const emailsenderIdaction = await emailIdModel.addEmailSenderIdDecline( 3, userId, reson, emailSenderId ); log.info( `[EmailSenderId], [adminEmailSenderIdAction], [EmailSenderId Decliened ]` ); let sendermail = await emailIdModel.getsenderdetail(emailSenderId); let message = `Your request for Email Sender Name (${emailSenderId}) has been declined. Please visit below link to know reason\n${process.env.SITE_LINK}`; const smsre = reqLib.sendSMSWithDLR( "TXTCONN", sendermail["phone"], userId, 0, message, "MTN_BULK" ); log.info( `[EmailSenderId], [requestEmailSenderId], [SMS Response], Msisdn [${sendermail["phone"] }], [${JSON.stringify(smsre)}]` ); try { let transporter = nodemailer.createTransport({ host: process.env.EMAIL_HOST, port: process.env.EMAIL_PORT, secure: false, // auth: { // user: process.env.EMAIL_USER, // pass: process.env.EMAIL_PASS, // }, }); let info = await transporter.sendMail({ from: process.env.EMAIL_SENDER, // sender address to: sendermail["email"], // list of receivers subject: "Request Email Sender Name Declined", // Subject line text: "", html: `

Hi ${sendermail["name"]}

Your request for Email Sender Name (${emailSenderId}) has been declined

Thanks,
Team TxtConnect
${process.env.SITE_LINK}";

`, }); log.info( `[EmailSenderId], [sendMail], Mail response [${JSON.stringify( info )}]` ); } catch (mailErr) { log.info( `[EmailSenderId], [sendMail], Mail Error [${JSON.stringify( mailErr )}]` ); } return res.status(200).json({ msg: "Email SenderId Decliened" }); } } else { log.info(`[EmailSenderId], [adminEmailSenderIdAction], [user not found]`); return res.status(400).json({ msg: "No user Found" }); } } catch (e) { log.info(`[EmailSenderId], [adminEmailSenderIdAction], Error [${e}]`); return res.status(500).json(e); } } async function adminAddEmailSenderid(req, res) { try { var userId = req.headers["id"]; var emailSenderId = req.body["emailSenderId"]; var foruser = req.body["usersId"]; if (!emailSenderId || !foruser) { log.info( `[EmailSenderId], [adminAddEmailSenderid], [Missing parameters]` ); return res.status(400).json({ msg: "Missing parameters" }); } log.info(`[EmailSenderId], [adminAddEmailSenderid], User Id [${userId}]`); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { const isemailsenderIdExist = await emailIdModel.isemailsenderIdExist( emailSenderId ); if (!isemailsenderIdExist) { const adminaddemailsenderId = await emailIdModel.adminAddEmailSenderId( emailSenderId, userId, foruser ); return res .status(200) .json({ msg: "Email Sender Id Added Sucessfully " }); } else { log.info(`[EmailSenderId], [adminAddEmailSenderid], [user not found]`); return res.status(400).json({ msg: "Email Sender Id is taken " }); } } else { log.info(`[EmailSenderId], [adminAddEmailSenderid], [user not found]`); return res.status(400).json({ msg: "No user Found" }); } } catch (e) { log.info(`[EmailSenderId], [adminAddEmailSenderid], Error [${e}]`); return res.status(500).json(e); } } async function deleteEmailSenderId(req, res) { try { var userId = req.headers["id"]; var rowId = req.body["rowId"]; if (!rowId) { log.info(`[EmailSenderId], [deleteEmailSenderId], [Missing parameters]`); return res.status(400).json({ msg: "Missing parameters" }); } log.info(`[EmailSenderId], [deleteEmailSenderId], User Id [${userId}]`); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { const deleteEmailSenderId = await emailIdModel.deleteEmailSenderId(rowId); log.info( `[EmailSenderId], [deleteEmailSenderId], [Email Sender Id Deleted Successfully]` ); return res .status(200) .json({ msg: "Email Sender Id Deleted Successfully" }); } else { log.info(`[EmailSenderId], [deleteEmailSenderId], [user not found]`); return res.status(400).json({ msg: "No user Found" }); } } catch (e) { log.info(`[EmailSenderId], [deleteEmailSenderId], Error [${e}]`); return res.status(500).json(e); } } async function allEmailSenderIds(req, res) { try { var userId = req.headers["id"]; log.info(`[EmailSenderId], [allEmailSenderIds], User Id [${userId}]`); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { const userEmailSenderId = await emailIdModel.getemailIdByUserId(userId); log.info( `[EmailSenderId], [allEmailSenderIds], [Email Sender Id List has been sent successfully]` ); return res.status(200).json(userEmailSenderId); } else { log.info(`[EmailSenderId], [allEmailSenderIds], [user not found]`); return res.status(400).json({ msg: "No user Found" }); } } catch (e) { log.info(`[EmailSenderId], [allEmailSenderIds], Error [${e}]`); return res.status(500).json(e); } } async function editEmailSenderIds(req, res) { try { var userId = req.headers["id"]; var rowId = req.body["rowId"]; var emailSenderId = req.body["emailId"]; log.info( `[EmailSenderId], [editEmailSenderIds], User Id [${userId}] RowId[${rowId}] SENDER ID[${emailSenderId}]` ); const user = await userModel.isUserExist(userId); if (user && user.state == 1) { //check status of Emailid const editEmailSenderId = await emailIdModel.editEmailSenderId( emailSenderId, rowId ); log.info(`[EmailSenderId], [editEmailSenderIds], [user not found]`); return res.status(200).json({ msg: "Email ID Updated SucessFully" }); } else { log.info(`[EmailSenderId], [editEmailSenderIds], [user not found]`); return res.status(400).json({ msg: "No user Found" }); } } catch (e) { log.info(`[EmailSenderId], [editEmailSenderIds], Error [${e}]`); return res.status(500).json(e); } } async function userlistEmailSenderIds(req, res) { try { // var userId = req.headers["id"]; // var rowId = req.headers["rowid"]; // var emailSenderId = req.headers["emailSenderId"]; log.info(`[EmailSenderId], [userlistEmailSenderIds], `); const totalUser = await userModel.getTotalUsers(); log.info(`[EmailSenderId], [allEmailSenderIds], [user not found]`); return res.status(200).json({ totalUser }); } catch (e) { log.info(`[EmailSenderId], [userlistEmailSenderIds], Error [${e}]`); return res.status(500).json(e); } } var self = (module.exports = { getAllEmailIds, adminEmailSenderIdRequests, requestEmailSenderId, adminEmailSenderIdAction, adminAddEmailSenderid, deleteEmailSenderId, allEmailSenderIds, editEmailSenderIds, userlistEmailSenderIds, });