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 = { checkGroupName: function (groupName, userId) { return new Promise((resolve, reject) => { let data = [groupName.toUpperCase(), userId]; let query = "select name from contact_groups where UPPER(name) = ? and user_id=? and status !=3"; pool.query(query, data, (err, results, fields) => { try { if (err) { log.info( "[CONTACT GROUP], [MODEL], [checkGroupName], [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 GROUP], [MODEL], [checkGroupName], [error], [" + err + "]" ); return reject(err); } }); }); }, checkGroupId: function (groupId, userId) { return new Promise((resolve, reject) => { let data = [groupId, userId]; let query = "select name from contact_groups where id = ? and user_id=?"; pool.query(query, data, (err, results, fields) => { try { if (err) { log.info( "[CONTACT GROUP], [MODEL], [checkGroupId], [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 GROUP], [MODEL], [checkGroupId], [error], [" + err + "]" ); return reject(err); } }); }); }, getGroupList: function () { return new Promise((resolve, reject) => { let query = "select u.name as username, cg.name, cg.status, cg.id, cg.file_name, cg.created_at, (SELECT COUNT(group_id) FROM contacts where group_id = cg.id) as contact_count from contact_groups as cg INNER JOIN users as u on u.id=cg.user_id order by cg.id desc"; pool.query(query, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getGroupList], [error], [" + err + "]" ); return reject(err); } }); }); }, getUserGroupList: function (userId, startDate, endDate) { return new Promise((resolve, reject) => { let data = [userId, startDate, endDate]; let query = "select u.name as username, cg.name, cg.status, cg.id, cg.file_name, cg.created_at, (SELECT COUNT(group_id) FROM contacts where group_id = cg.id) as contact_count, (SELECT COUNT(mobile) FROM contacts where group_id = cg.id and LENGTH(mobile) = 12 ) as correct_count from contact_groups as cg INNER JOIN users as u on u.id=cg.user_id where cg.user_id=? and cg.status !=3 and date(cg.created_at) BETWEEN ? and ? order by cg.id desc"; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getUserGroupList], [error], [" + err + "]" ); return reject(err); } }); }); }, getUserGroupCount: function (userId) { return new Promise((resolve, reject) => { let data = [userId]; let query = "select name from contact_groups where user_id=? and status!=3 "; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.length); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getUserGroupCount], [error], [" + err + "]" ); return reject(err); } }); }); }, getUserCompletedGroupList: function (userId) { return new Promise((resolve, reject) => { let data = [userId]; let query = "select u.name as username, cg.name, cg.status, cg.id, cg.file_name, cg.created_at, (SELECT COUNT(group_id) FROM contacts where group_id = cg.id) as contact_count from contact_groups as cg INNER JOIN users as u on u.id=cg.user_id where cg.user_id=? and cg.status = 2 order by cg.id desc"; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results); } } catch (err) { log.info( "[CONTACT GROUP], [MODEL], [getUserGroupList], [error], [" + err + "]" ); return reject(err); } }); }); }, addContactGroup: function (userId, name, fileName) { return new Promise((resolve, reject) => { let query = "insert into contact_groups (user_id, name, file_name, status, created_at, updated_at) values(?, ?, ?, ?, now(), now())"; let data = [userId, name.toUpperCase(), fileName, 1]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info( `[CONTACT GROUP], [MODEL], [addContactGroup], [error], [${err}]` ); reject(err); } }); }); }, updateContactGroupState: function (fileName, status, groupId) { return new Promise((resolve, reject) => { let query = "UPDATE contact_groups set file_name=?, status=?, updated_at=now() where id=? limit 1"; let data = [fileName, status, groupId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info( `[CONTACT GROUP], [MODEL], [updateContactGroupState], [error], [${err}]` ); reject(err); } }); }); }, updateContactGroupName: function (name, groupId) { return new Promise((resolve, reject) => { let query = "UPDATE contact_groups set name=?, updated_at=now() where id=? limit 1"; let data = [name, groupId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info( `[CONTACT GROUP], [MODEL], [updateContactGroupName], [error], [${err}]` ); reject(err); } }); }); }, updateContactGroupStatus: function (groupId, status = 3) { return new Promise((resolve, reject) => { let query = "UPDATE contact_groups set status=?, updated_at=now() where id=? limit 1"; let data = [status, groupId]; pool.query(query, data, (err, results, fields) => { try { if (err) { throw err; } else { return resolve(results.insertId); } } catch (err) { log.info( `[CONTACT GROUP], [MODEL], [updateContactGroupStatus], [error], [${err}]` ); reject(err); } }); }); }, };