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 = { checkMobileGroupName: function (groupId, mobile) { return new Promise((resolve, reject) => { let data = [groupId, mobile]; let query = "select first_name from contacts where group_id = ? and mobile=?"; pool.query(query, data, (err, results, fields) => { try { if (err) { log.info( "[CONTACT], [MODEL], [checkMobileGroupName], [error], [" + err + "]" ); throw err; } else { var numRows = results.length; if (numRows > 0) { return resolve(results[0]); } else { return resolve(false); } } } catch (err) { log.info( "[CONTACT], [MODEL], [checkMobileGroupName], [error], [" + err + "]" ); return reject(err); } }); }); }, checkEmailGroupName: function (groupId, email) { return new Promise((resolve, reject) => { let data = [groupId, email]; let query = "select first_name from contacts where group_id = ? and email=?"; pool.query(query, data, (err, results, fields) => { try { if (err) { log.info( "[CONTACT], [MODEL], [checkEmailGroupName], [error], [" + err + "]" ); throw err; } else { var numRows = results.length; if (numRows > 0) { return resolve(results[0]); } else { return resolve(false); } } } catch (err) { log.info( "[CONTACT], [MODEL], [checkEmailGroupName], [error], [" + err + "]" ); return reject(err); } }); }); }, getContactList: function (contactGroupId) { return new Promise((resolve, reject) => { let query = "select u.name as username, cg.name, c.id, c.first_name, c.last_name, c.mobile, c.email, c.status, c.created_at from contacts as c INNER JOIN contact_groups as cg on c.group_id = cg.id INNER JOIN users as u on u.id=cg.user_id where cg.id = ? order by c.id desc "; const data = [contactGroupId]; 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 LIST], [MODEL], [getContactList], [error], [" + err + "]" ); return reject(err); } }); }); }, getCorrectContactList: function (contactGroupId) { return new Promise((resolve, reject) => { let query = "select u.name as username, cg.name, c.id, c.first_name, c.last_name, c.mobile, c.email, c.status, c.created_at from contacts as c INNER JOIN contact_groups as cg on c.group_id = cg.id INNER JOIN users as u on u.id=cg.user_id where cg.id = ? and LENGTH(c.mobile)=12 order by c.id desc;"; const data = [contactGroupId]; 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 LIST], [MODEL], [getCorrectContactList], [error], [" + err + "]" ); return reject(err); } }); }); }, getCorrectEmailContactList: function (contactGroupId) { return new Promise((resolve, reject) => { let query = "select u.name as username, cg.name, c.id, c.first_name, c.last_name, c.mobile, c.email, c.status, c.created_at from contacts as c INNER JOIN contact_groups as cg on c.group_id = cg.id INNER JOIN users as u on u.id=cg.user_id where cg.id = ? and LENGTH(c.email)>2 order by c.id desc;"; const data = [contactGroupId]; 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 LIST], [MODEL], [getCorrectEmailContactList], [error], [" + err + "]" ); return reject(err); } }); }); }, addContact: function (userId, groupId, firstName, lastName, mobile, email) { return new Promise((resolve, reject) => { let query = "insert into contacts (user_id, group_id, first_name, last_name, mobile, email, status, created_at, updated_at) values(?, ?, ?, ?, ?, ?, ?, now(), now());"; let data = [userId, groupId, firstName, lastName, mobile, email, 1]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info(`[CONTACT], [MODEL], [addContact], [error], [${err}]`); reject(err); } }); }); }, updateContact: function ( contactId, userId, groupId, firstName, lastName, mobile, email ) { return new Promise((resolve, reject) => { const query = "update contacts set first_name=?, last_name=?, mobile=?, email=?, updated_at=now() where group_id=? and id =?"; let data = [ firstName, lastName, mobile, email, groupId, contactId, userId, ]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info(`[CONTACT], [MODEL], [addContact], [error], [${err}]`); reject(err); } }); }); }, deleteContact: function (contactId, userId, groupId) { return new Promise((resolve, reject) => { const query = "delete from contacts where group_id=? and id =? "; let data = [groupId, contactId, userId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(true); } } catch (err) { log.info(`[CONTACT], [MODEL], [addContact], [error], [${err}]`); reject(err); } }); }); }, deleteContactByMsisdn: function (groupId, mobile) { return new Promise((resolve, reject) => { let query = "delete from contacts where group_id=? and mobile =?"; let data = [groupId, mobile]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(true); } } catch (err) { log.info(`[CONTACT], [MODEL], [deleteContactByMsisdn], [error], [${err}]`); reject(err); } }); }); }, getContactExcelPath: function (groupId) { return new Promise((resolve, reject) => { const query = "select file_name from contact_groups where id = ?"; let data = [groupId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { if (results.length > 0) return resolve(results[0]?.file_name); else return resolve(false); } } catch (err) { log.info( `[CONTACT], [MODEL], [getContactExcelPath], [error], [${err}]` ); reject(err); } }); }); }, };