const db = require(`../config/dbMysqlConn`); const MysqlHelpers = require(`../library/LibMysqlHelper`); const OrdersVendors = require('./OrdersVendorsModels'); const UsersModels = require('./UsersModels'); class OrdersModels { static ONE_KG_ONE_CBM = 1328; static TYPE_FCL = 1; static TYPE_LCL = 2; static STTS_WAIT = 1; static STTS_CONFIRM = 21; static STTS_HAVE_GET_VHC = 22; static STTS_PCK = 2; static STTS_GO = 3; static STTS_ARV = 4; static STTS_DROP = 5; static STTS_CLIENT_PAY = 6; static STTS_VENDOR_PAYED = 8; static STTS_CLOSE = 10; static STTS_CANCEL = 11; static IS_FIX_PRICE_NO = 0; static IS_FIX_PRICE_YES = 1; static IS_INACTIVE = 0; static IS_ACTIVE = 1; static IS_ACCIDENT = 1; static CANCEL_TYPE_IGNORE = 1; static CANCEL_TYPE_CLIENT = 2; static CANCEL_TYPE_VDR_NOT_READY = 3; static listOrders(filter = {}) { return new Promise(async (resolve, reject) => { let params = [], select_order = '', where_order = '', join_order = '', order_by = '', group_by = ''; if (filter['ord_id']) { where_order += ' AND ord.id = ?'; params.push(filter['ord_id']); } if (filter['pck_id']) { where_order += ' AND ord_pck.id = ?'; params.push(filter['pck_id']); } if (filter['drop_id']) { where_order += ' AND ord_drop.id = ?'; params.push(filter['drop_id']); } if (filter['did']) { where_order += ' AND ord_drv.drv_id = ?'; params.push(filter['did']); } if (filter['is_active']) { where_order += ' AND ord.is_active = ?'; params.push(filter['is_active']); } if (filter['order_status'] && filter['order_status'].length > 0) { where_order += ' AND ord.status IN ('; for (const order_status of filter['order_status']) { where_order += '?,'; params.push(order_status); } where_order = where_order.slice(0, -1) + ')'; } if (filter['delivery_statuses'] && filter['delivery_statuses'].length > 0) { where_order += ' AND ord_pck_drop.stts IN ('; for (const delivery_statuses of filter['delivery_statuses']) { where_order += '?,'; params.push(delivery_statuses); } where_order = where_order.slice(0, -1) + ')'; } if (filter['center_pck']) { select_order += ',ST_AsText(ST_Centroid(pck_points)) as pck_center'; } if (filter['get_prefer_type_truck']) { select_order += ',tt.name as prefer_truck_type_name'; join_order += ' LEFT JOIN t_vehicles_types as tt ON ord_c.prefer_truck_type = tt.id'; } if (filter['get_pic_zone']) { select_order += ',ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail'; select_order += ',ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail'; } if (filter['get_client_pt']) { select_order += ',ord_c.c_pt_id,ord_c.c_pt_name,ord_c.c_pt_phone_code,ord_c.c_pt_phone_val,ord_c.c_pt_mail,ord_c.c_pt_addr'; select_order += ',ord_c.c_pt_pic_name,ord_c.c_pt_pic_phone_code,ord_c.c_pt_pic_phone_val,ord_c.c_pt_pic_mail,ord_c.c_pt_pic_addr'; } if (filter['get_exp_vendor']) { select_order += ',ord_vdr.is_exp as vdr_is_exp,ord_vdr.exp_at as vdr_exp_at'; } if (filter['vdr_id']) { select_order += ',ord_vdr.find_vhcs'; where_order += ' AND ord_vdr.vdr_id = ?'; params.push(filter['vdr_id']); join_order += " LEFT JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id"; } else { // join_order += ` // LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = ${OrdersVendors.STTS_ACC} GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id) // LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at) // `; } if (filter['get_drv_bank']) { select += ',ord_drv.drv_bank_id,ord_drv.drv_bank_code,ord_drv.drv_bank_name,ord_drv.drv_bank_short_name,ord_drv.drv_bank_branch_name,ord_drv.drv_bank_acc_number,ord_drv.drv_bank_acc_name'; } if (filter['couple_pck_drop']) { select_order += ' ,ord_pck_drop.id as ord_pck_drop_id,ord_pck_drop.stts as stts_delivery,ord_pck_drop.is_aprv_pck,ord_pck_drop.aprv_pck_by,ord_pck_drop.aprv_pck_at,ord_pck_drop.drv_app_lock_menu_otw_drop_at'; join_order += " INNER JOIN t_orders_pck_drop as ord_pck_drop ON ord.id = ord_pck_drop.ord_id"; join_order += " INNER JOIN t_orders_pickups as ord_pck ON ord_pck_drop.pck_id = ord_pck.id"; join_order += " INNER JOIN t_orders_drops as ord_drop ON ord_pck_drop.drop_id = ord_drop.id"; } else { join_order += " INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id"; join_order += " INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id"; } if (filter['ord_pck_drop_id']) { where_order += ' AND ord_pck_drop.id = ?'; params.push(filter['ord_pck_drop_id']); } if (filter['get_stts_checker']) { select_order += ' ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts'; select_order += ' ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts'; } if (filter['chk_id']) { if (filter['chk_type'] == UsersModels.CHK_TYPE_PICKUP) { where_order += ' AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) '; params.push(filter['chk_id']); } else if (filter['chk_type'] == UsersModels.CHK_TYPE_DROP) { where_order += ' AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) '; params.push(filter['chk_id']); } } if (filter['get_bid_info']) { select_order += ' ,ord_vdr.is_mailing_bid,ord_vdr.is_mailing_bid_at,ord_vdr.is_want,ord_vdr.is_want_at'; } if (filter['inner_join_phone_devices']) { select_order += ' ,phn_drv.device_id as drv_device_id,phn_drv.fcm_token as drv_fcm_token'; join_order += ' INNER JOIN t_phone_devices as phn_drv ON phn_drv.did = ord_drv.drv_id'; } if (filter['phone_devices_is_login']) { where_order += ' AND phn_drv.is_login = ?'; params.push(filter['phone_devices_is_login']); } if (filter['last_tracks_phone_drv']) { // get last updated row from many rows select_order += ' ,tr.id as tr_id,tr.device_id as tr_device_id,tr.latitude as tr_latitude,tr.longitude as tr_longitude,tr.speed as tr_speed,tr.drv_id as tr_drv_id,tr.crt as tr_crt,tr.crt_d as tr_crt_d'; join_order += ' LEFT JOIN ( SELECT MAX(crt) max_crt, device_id, drv_id FROM t_gps_tracks WHERE latitude is not null AND longitude is not null GROUP BY drv_id ORDER BY crt DESC ) AS tr1 ON (ord_drv.drv_id = tr1.drv_id)'; join_order += ' LEFT JOIN t_gps_tracks AS tr ON (tr.crt = tr1.max_crt)'; } if (filter['group_by']) { group_by = filter['group_by']; } if (filter['order_by']) { order_by = filter['order_by']; } let query = `SELECT ord.* ,ord.id as ord_id,ord.code as ord_code ,ord_pck.id as ord_pck_id,ord_pck.pck_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at ,ord_drop.id as ord_drop_id,ord_drop.drop_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at ,ord_c.id as ord_client_id,ord_c.c_id,ord_c.c_name,ord_c.c_phone_code,ord_c.c_phone_val,ord_c.c_mail,ord_c.prefer_truck_type ,ord_vdr.id as ord_vdr_id,ord_vdr.vdr_id,ord_vdr.vdr_name,ord_vdr.vdr_phone_code,ord_vdr.vdr_phone_val,ord_vdr.vdr_mail,ord_vdr.vdr_addr,ord_vdr.status as vdr_status,ord_vdr.respond_at as vdr_respond_at,ord_vdr.crt as vdr_crt ,ord_drv.drv_id,ord_drv.drv_name,ord_drv.drv_phone_code,ord_drv.drv_phone_val,ord_drv.drv_mail,ord_drv.drv_addr ,ord_drv.drv_name2,ord_drv.drv_phone2_code,ord_drv.drv_phone2_val ,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3 ${select_order} FROM t_orders as ord INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = ${OrdersVendors.STTS_ACC} GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id) LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at) LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id ${join_order} WHERE ord.dlt is null ${where_order} ${group_by} ORDER BY ord.id ASC ;`; try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static listActiveOrdVhc(filter = {}) { return new Promise(async (resolve, reject) => { let params = [], select_order = '', where_order = '', join_order = ''; if (filter['did']) { where_order += ' AND ord_drv.drv_id = ?'; params.push(filter['did']); } if (filter['order_status'] && filter['order_status'].length > 0) { where_order += ' AND ord.status IN ('; for (const order_status of filter['order_status']) { where_order += '?,'; params.push(order_status); } where_order = where_order.slice(0, -1) + ')'; } let query = `SELECT ord.* ,ord.id as ord_id,ord.code as ord_code ,ord_vdr.id as ord_vdr_id,ord_vdr.vdr_id,ord_vdr.vdr_name,ord_vdr.vdr_phone_code,ord_vdr.vdr_phone_val,ord_vdr.vdr_mail,ord_vdr.vdr_addr,ord_vdr.status as vdr_status,ord_vdr.respond_at as vdr_respond_at,ord_vdr.crt as vdr_crt ,ord_drv.drv_id,ord_drv.drv_name,ord_drv.drv_phone_code,ord_drv.drv_phone_val,ord_drv.drv_mail,ord_drv.drv_addr ,ord_drv.drv_name2,ord_drv.drv_phone2_code,ord_drv.drv_phone2_val ,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3 ${select_order} FROM t_orders as ord LEFT JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id ${join_order} WHERE ord.dlt is null AND ord.is_active = 1 ${where_order} ORDER BY ord.id ASC ;`; try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static showOrder(filter) { return new Promise(async (resolve, reject) => { try { let params = [], select_order = '', where_order = '', join_order = ''; if (filter['id']) { where_order += ' AND ord.id = ? '; params.push(filter['id']); } else if (filter['code']) { where_order += ' AND ord.code = ? '; params.push(filter['code']); } else { reject(false); return false; } if (filter['is_active']) { where_order += ' AND ord.is_active = ?'; params.push(filter['is_active']); } if (filter['center_pck']) { select_order += ',ST_AsText(ST_Centroid(pck_points)) as pck_center'; } if (filter['get_prefer_type_truck']) { select_order += ',tt.name as prefer_truck_type_name'; join_order += ' LEFT JOIN t_vehicles_types as tt ON ord_c.prefer_truck_type = tt.id'; } if (filter['get_pic_zone']) { select_order += ',ord_pck.pic_name as pck_pic_name,ord_pck.pic_phone_code as pck_pic_phone_code,ord_pck.pic_phone_val as pck_pic_phone_val,ord_pck.pic_mail as pck_pic_mail'; select_order += ',ord_drop.pic_name as drop_pic_name,ord_drop.pic_phone_code as drop_pic_phone_code,ord_drop.pic_phone_val as drop_pic_phone_val,ord_drop.pic_mail as drop_pic_mail'; } if (filter['get_client_pt']) { select_order += ',ord_c.c_pt_id,ord_c.c_pt_name,ord_c.c_pt_phone_code,ord_c.c_pt_phone_val,ord_c.c_pt_mail,ord_c.c_pt_addr'; select_order += ',ord_c.c_pt_pic_name,ord_c.c_pt_pic_phone_code,ord_c.c_pt_pic_phone_val,ord_c.c_pt_pic_mail,ord_c.c_pt_pic_addr'; } if (filter['get_exp_vendor']) { select_order += ',ord_vdr.is_exp as vdr_is_exp,ord_vdr.exp_at as vdr_exp_at'; } if (filter['vdr_id']) { select_order += ',ord_vdr.find_vhcs'; where_order += ' AND ord_vdr.vdr_id = ?'; params.push(filter['vdr_id']); join_order += " LEFT JOIN t_orders_vendors as ord_vdr ON ord.id = ord_vdr.ord_id"; } else { // join_order += ` // LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = ${OrdersVendors.STTS_ACC} GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id) // LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at) // `; } if (filter['get_stts_checker']) { select_order += ' ,ord_pck.chk_id as pck_chk_id,ord_pck.chk_at as pck_chk_at,ord_pck.chk_stts as pck_chk_stts'; select_order += ' ,ord_drop.chk_id as drop_chk_id,ord_drop.chk_at as drop_chk_at,ord_drop.chk_stts as drop_chk_stts'; } if (filter['chk_id']) { if (filter['chk_type'] == UsersModels.CHK_TYPE_PICKUP) { where_order += ' AND (ord_pck.chk_id = ? OR ord_pck.chk_id = 0) '; params.push(filter['chk_id']); } else if (filter['chk_type'] == UsersModels.CHK_TYPE_DROP) { where_order += ' AND (ord_drop.chk_id = ? OR ord_drop.chk_id = 0) '; params.push(filter['chk_id']); } } if (filter['get_bid_info']) { select_order += ' ,ord_vdr.is_mailing_bid,ord_vdr.is_mailing_bid_at,ord_vdr.is_want,ord_vdr.is_want_at'; } let query = `SELECT ord.* ,ord.id as ord_id,ord.code as ord_code ,ord_pck.id as ord_pck_id,ord_pck.pck_id,ord_pck.pck_name,ord_pck.pck_addr,ord_pck.set_pck_at,ord_pck.pck_at,ord_pck.pck_enter_at,ord_pck.pck_leave_at ,ord_drop.id as ord_drop_id,ord_drop.drop_id,ord_drop.drop_name,ord_drop.drop_addr,ord_drop.drop_at,ord_drop.drop_enter_at,ord_drop.drop_leave_at ,ord_c.id as ord_client_id,ord_c.c_id,ord_c.c_name,ord_c.c_phone_code,ord_c.c_phone_val,ord_c.c_mail,ord_c.prefer_truck_type ,ord_vdr.id as ord_vdr_id,ord_vdr.vdr_id,ord_vdr.vdr_name,ord_vdr.vdr_phone_code,ord_vdr.vdr_phone_val,ord_vdr.vdr_mail,ord_vdr.vdr_addr,ord_vdr.status as vdr_status,ord_vdr.respond_at as vdr_respond_at,ord_vdr.crt as vdr_crt ,ord_drv.drv_id,ord_drv.drv_name,ord_drv.drv_phone_code,ord_drv.drv_phone_val,ord_drv.drv_mail,ord_drv.drv_addr ,ord_vhc.vhc_id,ord_vhc.vhc_name,ord_vhc.vhc_nopol1,ord_vhc.vhc_nopol2,ord_vhc.vhc_nopol3 ${select_order} FROM t_orders as ord INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id INNER JOIN t_orders_pickups as ord_pck ON ord.id = ord_pck.ord_id INNER JOIN t_orders_drops as ord_drop ON ord.id = ord_drop.ord_id LEFT JOIN ( SELECT MIN(respond_at) as respond_at,ord_id,vdr_id FROM t_orders_vendors WHERE status = ${OrdersVendors.STTS_ACC} GROUP BY ord_id ) AS ord_vdr1 ON (ord.id = ord_vdr1.ord_id) LEFT JOIN t_orders_vendors as ord_vdr ON ( ord_vdr.respond_at = ord_vdr1.respond_at) LEFT JOIN t_orders_drivers as ord_drv ON ord.id = ord_drv.ord_id LEFT JOIN t_orders_vehicles as ord_vhc ON ord.id = ord_vhc.ord_id ${join_order} WHERE ord.dlt is null ${where_order} ;`; try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); } catch (e) { reject(err); return false; } }); } static gets() { return new Promise(async (resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders WHERE dlt is null;'; try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static getOrderById(ord_id) { return new Promise(async (resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders WHERE dlt is null AND id = ? LIMIT 1;'; params.push(ord_id); try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static getOrderByCode(ord_code) { return new Promise(async (resolve, reject) => { let params = []; let query = 'SELECT * FROM t_orders WHERE dlt is null AND code = ? LIMIT 1;'; params.push(ord_code); try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static getOrdersClientActive(client_id) { return new Promise(async (resolve, reject) => { let params = []; let stts = OrdersModels.STTS_WAIT + ',' + OrdersModels.STTS_CONFIRM + ',' + OrdersModels.STTS_HAVE_GET_VHC + ',' + OrdersModels.STTS_PCK + ',' + OrdersModels.STTS_GO + ',' + OrdersModels.STTS_ARV + ',' + OrdersModels.STTS_DROP; let query = `SELECT ord.*,ord_c.* ,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay FROM t_orders as ord INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id WHERE ord.dlt is null AND ord.status IN (?) AND ord_c.c_id = ? ;`; params.push(stts, client_id); try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static getOrdersByClient(client_id, limit = 1000) { return new Promise(async (resolve, reject) => { let params = []; let query = `SELECT ord.*,ord_c.* ,ord_c.pay_at as client_pay_at,ord_c.is_pay as client_is_pay FROM t_orders as ord INNER JOIN t_orders_clients as ord_c ON ord.id = ord_c.ord_id WHERE ord.dlt is null AND ord_c.c_id = ? LIMIT ? ;`; params.push(client_id, limit); try { const conn = await MysqlHelpers.createConnection(); const result = await MysqlHelpers.query(conn, query, params); await MysqlHelpers.releaseConnection(conn); resolve(result); } catch (e) { reject(e); } // db.query(query, params, function (err, resp) { // if (err) { // reject(err); // return false; // } // resolve(resp); // return true; // }); }); } static add(data) { return new Promise(async (resolve, reject) => { const query = `INSERT INTO t_orders 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 updt(id, data) { return new Promise(async (resolve, reject) => { const query = `UPDATE t_orders 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 dlt(id) { return new Promise(async (resolve, reject) => { const query = `DELETE t_orders 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; }); }); }); }); }); } static bundleInsDrvUploads (insUploads = [], updtOrd = {}, updtPck = {}, updtDrop = {}, updtPckDrop = {}) { return new Promise(async (resolve, reject) => { try { const conn = await MysqlHelpers.createConnection(); await MysqlHelpers.createTrx(conn); let result = undefined; for (const insUpload of insUploads) { await MysqlHelpers.queryTrx(conn, `INSERT INTO t_orders_drivers_uploads SET ?`, [insUpload]); } if (Object.keys(updtOrd).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders SET ? WHERE id = ?;`, [updtOrd, updtOrd.id]); if (Object.keys(updtPck).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_pickups SET ? WHERE id = ?;`, [updtPck, updtPck.id]); if (Object.keys(updtDrop).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_drops SET ? WHERE id = ?;`, [updtDrop, updtDrop.id]); if (Object.keys(updtPckDrop).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_pck_drop SET ? WHERE id = ?;`, [updtPckDrop, updtPckDrop.id]); await MysqlHelpers.commit(conn); resolve({ type: 'success', result, }) } catch (err) { reject(err); } }) } static bundleUpdtTrxDriverAps (updtOrd = {}, updtPck = {}, updtDrop = {}, updtOrdAcdnt = {}, updtPckDrop = {}) { return new Promise(async (resolve, reject) => { try { const conn = await MysqlHelpers.createConnection(); await MysqlHelpers.createTrx(conn); let result = undefined; if (Object.keys(updtOrd).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders SET ? WHERE id = ?;`, [updtOrd, updtOrd.id]); if (Object.keys(updtPck).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_pickups SET ? WHERE id = ?;`, [updtPck, updtPck.id]); if (Object.keys(updtDrop).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_drops SET ? WHERE id = ?;`, [updtDrop, updtDrop.id]); if (Object.keys(updtOrdAcdnt).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_accidents SET ? WHERE id = ?;`, [updtOrdAcdnt, updtOrdAcdnt.id]); if (Object.keys(updtPckDrop).length > 0) result = await MysqlHelpers.queryTrx(conn, `UPDATE t_orders_pck_drop SET ? WHERE id = ?;`, [updtPckDrop, updtPckDrop.id]); await MysqlHelpers.commit(conn); resolve({ type: 'success', result, }) } catch (err) { reject(err); } }) } } module.exports = OrdersModels;