PK!A7��nvar sql = require("mysql"); var pool = require("../db"); const opts = { errorEventName: "error", logDirectory: "logs", fileNamePattern: "log-.log", dateFormat: "YYYY-MM-DD", }; const log = require("simple-node-logger").createRollingFileLogger(opts); module.exports = { addPayment: function ( userId, refrenceId, amount, msisdn, smsPlan, quantity, plan, operator ) { return new Promise((resolve, reject) => { let query = "insert into payments (user_id, reference_id, amount, msisdn, sms_qty,sms_plan,operator, status, created_at, updated_at) values(?, ?, ?,?,?,?,?,1, now(), now());"; const data = [ userId, refrenceId, amount, msisdn, smsPlan, quantity, plan, operator ]; pool.query(query, data, (err, results, fields) => { if (err) { log.info( "[Payment], [MODEL], [updateApiKeyDB], [error], [" + err + "]" ); return reject(err); } else { resolve(true); } }); }); }, updatePayment: function (userId, refrenceId, status) { return new Promise((resolve, reject) => { let query = "Update payments set status=?, updated_at=now() where user_id=? and reference_id=? limit 1"; const data = [status, userId, refrenceId]; pool.query(query, data, (err, results, fields) => { if (err) { log.info( "[Payment], [MODEL], [updateApiKeyDB], [error], [" + err + "]" ); return reject(err); } else { resolve(true); } }); }); }, addOTP: function (mobile, otp) { return new Promise((resolve, reject) => { let query = "Insert into otps (phone, otp, created_at, updated_at) values(?, ?, now(), now())"; const data = [mobile, otp]; pool.query(query, data, (err, results, fields) => { if (err) { log.info("[Payment], [MODEL], [addOTP], [error], [" + err + "]"); return reject(err); } else { resolve(true); } }); }); }, updateOTP: function (mobile, otp) { return new Promise((resolve, reject) => { let query = "Update otps set otp = ?, updated_at = now() where phone = ?"; const data = [otp, mobile]; pool.query(query, data, (err, results, fields) => { if (err) { log.info("[Payment], [MODEL], [updateOTP], [error], [" + err + "]"); return reject(err); } else { resolve(true); } }); }); }, validateOTP: function (mobile, otp) { return new Promise((resolve, reject) => { let query = "Select phone, otp from otps where phone = ? order by id desc limit 1"; const data = [mobile, otp]; pool.query(query, data, (err, results, fields) => { if (err) { log.info("[Payment], [MODEL], [validateOTP], [error], [" + err + "]"); return reject(err); } else { if (results.length > 0) { resolve(results[0]['otp']); } else { resolve(false); } } }); }); }, getPaymentListForAdmin: function (startDate, endDate) { return new Promise((resolve, reject) => { let query = "select U.name as userName, P.amount, P.operator, P.reference_id, P.msisdn, P.sms_plan, P.sms_qty, P.status, P.updated_at from payments as P Inner JOIN users as U on U.id=P.user_id where date(P.updated_at) BETWEEN ? and ? order by P.updated_at desc;"; const data = [startDate, endDate]; pool.query(query, data, (err, results, fields) => { if (err) { log.info( "[Payment], [MODEL], [getPaymentListForAdmin], [error], [" + err + "]" ); return reject(err); } else { var numRows = results.length; if (numRows > 0) { return resolve(results); } else { return resolve(false); } } }); }); }, getTodaysPayment: function (status) { return new Promise((resolve, reject) => { let data = [status]; let query = "select count(*) as total from payments where date(created_at)=curdate() and status =?"; pool.query(query, data, (err, results, fields) => { if (err) { log.info(`[Payment], [MODEL], [getTotalPatments], [error], [${err}]`); return reject(err); } else { return resolve(results[0]); } }); }); }, todaysCreditsDB: function (status) { return new Promise((resolve, reject) => { let data = [status]; let query = "select round(sum(amount), 2) as total from payments where date(created_at)=curdate() and status = ?"; pool.query(query, data, (err, results, fields) => { if (err) { log.info(`[Payment], [MODEL], [todaysCreditsDB], [error], [${err}]`); return reject(err); } else { return resolve(results[0]); } }); }); }, getAllRecentpayments: function () { return new Promise((resolve, reject) => { let query = " select U.name as userName, P.refrence_id, P.amount, P.msisdn, P.sms_plan, P.sms_quantity, P.email_plan, P.email_quantity, P.voice_plan, P.voice_quantity, P.status, P.updated_at from payments as P Inner JOIN users as U on U.id=P.user_id order by P.updated_at desc limit 10 "; pool.query(query, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results); else return resolve(false); } } catch (err) { log.info( "[AllRecentpayments], [MODEL], [getAllRecentpayments], [error], [" + err + "]" ); return reject(err); } }); }); }, getPaymentsByRefrenceId: function (transactionId) { return new Promise((resolve, reject) => { let data = [transactionId]; let query = "select * from payments where reference_id =? "; pool.query(query, data, (err, results, fields) => { if (err) { log.info(`[Payment], [MODEL], [todaysCreditsDB], [error], [${err}]`); return reject(err); } else { return resolve(results[0]); } }); }); }, getPaymentsByUSerid: function (userId, startDate, endDate) { return new Promise((resolve, reject) => { let data = [userId, startDate, endDate]; let query = "select U.name as userName, P.sms_qty, P.amount,P.operator, P.msisdn, P.reference_id, P.user_id, P.sms_plan, P.status, P.updated_at from payments as P Inner JOIN users as U on U.id=P.user_id where P.user_id = ? and date(P.updated_at) BETWEEN ? and ? order by P.updated_at desc" pool.query(query, data, (err, results, fields) => { if (err) { log.info(`[Payment], [MODEL], [todaysCreditsDB], [error], [${err}]`); return reject(err); } else { return resolve(results); } }); }); }, };