const db = require(`../config/dbMysqlConn`); class OrdersVendorsModels { static STTS_WAIT = 1; static STTS_ACC = 2; static STTS_REJECT = 3; static STTS_IGNORE = 4; static STTS_NOT_READY = 5; // want order but expired, bcs not fill data static IS_NOT_PAY = 1; static IS_PAYED = 2; static LINK_WILL_EXP = 1; static LINK_NOT_EXP = 2; static IS_MAILING_BID_NOT = 0; static IS_MAILING_BID_SEND = 1; static IS_WANT_IGNORE = 0; static IS_WANT_NO = 1; static IS_WANT_YES = 2; static async gets() { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors;'; db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getById(id) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE id = ? LIMIT 1;'; params.push(id); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getByOrdCode(code) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE ord_code = ? LIMIT 1;'; params.push(code); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getByOrdCodeByStatus(code, status) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE ord_code = ? AND status = ? LIMIT 1;'; params.push(code, status); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getByOrdIdByStatus(id, status) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE ord_id = ? AND status = ? LIMIT 1;'; params.push(id, status); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getByOrdId(id) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE ord_id = ? LIMIT 1;'; params.push(id); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getNextVendorsByOrdId(ord_id) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE ord_id = ? AND status = ' + OrdersVendorsModels.STTS_WAIT + ' AND is_want = ' + OrdersVendorsModels.IS_WANT_IGNORE + ' ORDER BY distance ASC;'; params.push(ord_id); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getByBidToken(tkn) { return new Promise((resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders_vendors WHERE bid_token = ? LIMIT 1;'; params.push(tkn); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async add(data) { return new Promise((resolve, reject) => { const query = `INSERT INTO t_orders_vendors SET ?;`; db.getConnection(function (err, conn) { if (err) { conn.release(); reject(err); return false; } conn.beginTransaction(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.query(query, data, function (err, resp) { if (err) { conn.rollback(async function () { conn.release(); reject(err.message); }); return false; } // Number(resp.insertId); conn.commit(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.release(); resolve(resp); return true; }); }); }); }); }); } static async updt(id, data) { return new Promise((resolve, reject) => { const query = `UPDATE t_orders_vendors SET ? WHERE id = ?;`; db.getConnection(function (err, conn) { if (err) { conn.release(); reject(err); return false; } conn.beginTransaction(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.query(query, [data, id], function (err, resp) { if (err) { conn.rollback(async function () { conn.release(); reject(err.message); }); return false; } conn.commit(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.release(); resolve(resp); return true; }); }); }); }); }); } static async dlt(id) { return new Promise((resolve, reject) => { const query = `DELETE t_orders_vendors WHERE id = ?;`; db.getConnection(function (err, conn) { if (err) { conn.release(); reject(err); return false; } conn.beginTransaction(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.query(query, [id], function (err, resp) { if (err) { conn.rollback(async function () { conn.release(); reject(err.message); }); return false; } conn.commit(async function (err) { if (err) { conn.release(); reject(err); return false; } conn.release(); resolve(resp); return true; }); }); }); }); }); } } module.exports = OrdersVendorsModels;