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 = { getLastInvoiceNumber: function () { return new Promise((resolve, reject) => { let query = "select invoice_number from invoices order by id desc limit 1 "; pool.query(query, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results[0]); else return resolve(false); } } catch (err) { log.info( "[INVOICES], [MODEL], [getLastInvoiceNumber], [error], [" + err + "]" ); return reject(err); } }); }); }, getInvoicesDB: function () { return new Promise((resolve, reject) => { let query = "select i.id, i.user_id, i.requested_by, i.approved_by, i.status, i.notes, i.due_date, i.created_at, i.updated_at, i.file_name, i.invoice_number, i.invoice_type, i.invoice_date, i.total_price, u.name from invoices as i Inner Join users as u on i.user_id = u.id order by i.id desc"; 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( "[INVOICES], [MODEL], [getInvoicesDB], [error], [" + err + "]" ); return reject(err); } }); }); }, createInvoiceDB: function ( user, invoiceType, invoiceDate, dueDate, requestedBy, approvedBy, notes = "", totalPrice, invoiceNo, fileUrl ) { return new Promise((resolve, reject) => { let query = "Insert into invoices (user_id, requested_by, approved_by, status, notes, due_date, created_at, updated_at, file_name, invoice_number, invoice_type, invoice_date, total_price) values(?, ?, ?, ?, ?, ?, now(), now(), ?, ?, ?, ?, ? ) "; const data = [ user, requestedBy, approvedBy, 1, notes, dueDate, fileUrl, invoiceNo, invoiceType, invoiceDate, totalPrice, ]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results[0]); else return resolve(false); } } catch (err) { log.info( "[INVOICES], [MODEL], [getLastInvoiceNumber], [error], [" + err + "]" ); return reject(err); } }); }); }, getTodaysInvoices: function (status) { return new Promise((resolve, reject) => { let data = [status]; let query = "select count(*) as total from invoices where date(created_at)=curdate() and status =?"; pool.query(query, data, (err, results, fields) => { if (err) { log.info( `[INVOICES], [MODEL], [getTodaysInvoices], [error], [${err}]` ); return reject(err); } else { return resolve(results[0]); } }); }); }, getCampaignEmailReport: function (campaignId) { return new Promise((resolve, reject) => { let data = [campaignId]; let query = "select first_name, last_name, campaign_id, email,campaign_id, group_name, email_Sender_id, email,msisdn, subject, status, content, created_at from campaign_email_report where campaign_id= ? order by id desc"; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results); else return resolve(false); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getUserGroupList], [error], [" + err + "]" ); return reject(err); } }); }); }, createEmailCampaignReport: function ( userId, firstName, lastName, email, campaignId, groupName, type, senderId, template, msisdn, content, status = 1, subject, ) { return new Promise((resolve, reject) => { let data = [ userId, firstName, lastName, email, campaignId, groupName, type, senderId, template, msisdn, content, status, subject, ]; let query = `Insert into campaign_email_report (user_id, first_name, last_name, email, campaign_id, group_name, type, email_Sender_id, template, msisdn, content, status, created_at, updated_at, subject) values(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, now(), now(), ?)`; pool.query(query, data, (err, results, fields) => { try { if (err) { log.info( "[CAMPAIGN Email REPORT], [MODEL], [createCampaignReport], [error], [" + err + "]" ); throw err; } else { return resolve(true); } } catch (err) { log.info( "[CAMPAIGN Email REPORT], [MODEL], [createCampaignReport], [error], [" + err + "]" ); return reject(err); } }); }); }, updateEmailstatus: function (status, email) { return new Promise((resolve, reject) => { let query = "UPDATE campaign_email_report set status=?, updated_at=now() where email=? "; let data = [status, email]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info( `[CAMPAIGN Email REPORT], [MODEL], [updateEmailstatus], [error], [${err}]` ); reject(err); } }); }); }, setCampaignCount: function (campaignId) { return new Promise((resolve, reject) => { const query = "update campaigns set success=success+1 where id =? "; let data = [campaignId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(true); } } catch (err) { log.info( `[CAMPAIGN Email REPORT], [MODEL], [setCampaigncount], [error], [${err}]` ); reject(err); } }); }); }, getCampaignEmailReport: function (campaignId) { return new Promise((resolve, reject) => { let data = [campaignId]; let query = "select first_name, last_name, campaign_id, template, email, group_name, email_Sender_id as sender_id, msisdn, content,subject, status, created_at, updated_at from campaign_email_report where campaign_id= ? order by id desc"; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results); else return resolve(false); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getUserGroupList], [error], [" + err + "]" ); return reject(err); } }); }); }, };