PK!A7��nconst userModel = require("../models/user"); const payment = require("../models/payment"); const accountCredit = require("../models/accountCredits"); 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 mv = promisify(fs.rename); var pdf = require("pdf-creator-node"); const requestLib = require("../library/request"); const opts = { errorEventName: "error", logDirectory: "logs", fileNamePattern: "log-.log", dateFormat: "YYYY-MM-DD", }; const log = require("simple-node-logger").createRollingFileLogger(opts); async function addPayment(req, res) { try { var userId = req.headers["id"]; let { refrenceId, amount, msisdn, smsPlan, smsQuantity, emailPlan, emailQuantity, voicePlan, voiceQuantity, } = req.body; log.info( `[PAYMENT], [addPayment], User Id [${userId}], refrenceId [${refrenceId}], amount [${amount}], msisdn [${msisdn}]], smsPlan [${smsPlan}], smsQuantity [${smsQuantity}], emailPlan [${emailPlan}], emailQuantity [${emailQuantity}], voicePlan [${voicePlan}], voiceQuantity [${voiceQuantity}]` ); if ( !refrenceId || !amount || !msisdn || !smsPlan) { log.info(`[PAYMENT], [addPayment], [Missing Parameters]`); return res.status(400).json({ msg: "Missing Parameters" }); } // const isValidate = await payment.validateOTP(msisdn, otp); // if (!isValidate) { // log.info(`[PAYMENT], [addPayment], Error [Incorrect OTP]`); // return res.status(200).json({ msg: "Incorrect OTP", isValidated: false }); // } await payment.addPayment( userId, refrenceId, amount, msisdn, smsPlan ); log.info(`[PAYMENT], [addPayment], [Payment added successfully]`); return res.status(200).json({ msg: "Success" }); } catch (e) { log.info(`[PAYMENT], [addPayment], Error [${e}]`); res.status(400).json({ msg: "Failed" }); } } async function validateOTP(req, res) { try { var userId = req.headers["id"]; let { msisdn, otp } = req.body; log.info( `[PAYMENT], [validateOTP], User Id [${userId}], mobileNumber [${msisdn}], isResend [${otp}]` ); if (!msisdn || !otp) { log.info(`[PAYMENT], [validateOTP], [Missing Parameters]`); return res.status(400).json({ msg: "Missing Parameters" }); } const isValidate = await payment.validateOTP(msisdn, otp); if (isValidate == otp) { log.info(`[PAYMENT], [validateOTP], [DEB], [Otp Matched]`); return res.status(200).json({ msg: "success", isValidated: true }); } else { log.info(`[PAYMENT], [validateOTP], [ERR], [Incorrect OTP]`); return res.status(200).json({ msg: "Incorrect OTP", isValidated: false }); } } catch (e) { log.info(`[PAYMENT], [getOtp], Error [${e}]`); res.status(500).json({ msg: "Failed" }); } } async function getOtp(req, res) { try { var userId = req.headers["id"]; let { mobileNumber, isResend } = req.body; log.info( `[PAYMENT], [getOtp], User Id [${userId}], mobileNumber [${mobileNumber}], isResend [${isResend}]` ); if (!mobileNumber) { log.info(`[PAYMENT], [getOtp], [Missing Parameters]`); return res.status(400).json({ msg: "Missing Parameters" }); } const otp = Math.round(Math.random() * 4458 * Math.random() * 2579) .toString() .slice(0, 4); requestLib.sendSMS( mobileNumber, `${otp} is your Txtconnect TopUp OTP. Do not share with anyone` ); if (isResend) { await payment.updateOTP(mobileNumber, otp); log.info( `[PAYMENT], [getOtp], [OTP has been re-sent successfully] [${otp}]` ); return res.status(200).json({ msg: "OTP has been successfully re-sent to your phone number", }); } else { await payment.addOTP(mobileNumber, otp); log.info( `[PAYMENT], [getOtp], [OTP has been sent successfully] [${otp}]` ); return res .status(200) .json({ msg: "OTP has been successfully sent to your phone number" }); } } catch (e) { log.info(`[PAYMENT], [getOtp], Error [${e}]`); res.status(400).json({ msg: "Failed" }); } } async function updatePayment(req, res) { try { var userId = req.headers["id"]; let { refrenceId, amount, msisdn, smsPlan, smsQuantity, emailPlan, emailQuantity, voicePlan, voiceQuantity, status, } = req.body; log.info( `[PAYMENT], [updatePayment], User Id [${userId}], refrenceId [${refrenceId}], amount [${amount}], msisdn [${msisdn}], smsPlan [${smsPlan}], smsQuantity [${smsQuantity}], emailPlan [${emailPlan}], emailQuantity [${emailQuantity}], voicePlan [${voicePlan}], voiceQuantity [${voiceQuantity}] status [${status}]` ); if ( !refrenceId || !amount || !msisdn || !smsPlan || !status ) { log.info(`[PAYMENT], [updatePayment], [Missing Parameters]`); return res.status(400).json({ msg: "Missing Parameters" }); } await payment.updatePayment(userId, refrenceId, status); if (status == config.PAYMENT_SUCCESS) { //if ("na" != smsPlan) { await accountCredit.addUserCredits(userId, smsQuantity, "sms"); log.info( `[PAYMENT], [updatePayment], [SUCCESS], [Adding] [Adding SMS Balance] [${smsQuantity}]` ); } else { log.info( `[PAYMENT], [updatePayment], [Payment Declined], [Payment Updated Successfully]` ); } return res.status(200).json({ msg: "Success" }); } catch (e) { log.info(`[PAYMENT], [updatePayment], Error [${e}]`); res.status(400).json({ msg: "Failed" }); } } async function getPaymentList4Admin(req, res) { try { var userId = req.headers["id"]; const startDate = req.body.startDate; const endDate = req.body.endDate; log.info( `[PAYMENT], [getPaymentList4Admin], User Id [${userId}], StartDate [${startDate}], EndDate [${endDate}] ` ); const list = await payment.getPaymentListForAdmin(startDate, endDate); if (!list) { log.info(`[PAYMENT], [getPaymentList4Admin], [No Payment Found]`); return res.status(200).json([]); } log.info( `[INVOICES], [getPaymentList4Admin], [Invoice List has been sent successfully]` ); return res.status(200).json(list); } catch (e) { log.info(`[PAYMENT], [getPaymentList4Admin], Error [${e}]`); res.status(400).json({ msg: "No Payment Found" }); } } var self = (module.exports = { addPayment, getOtp, updatePayment, getPaymentList4Admin, validateOTP, });