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]); } }); }); }, };