702 lines
27 KiB
JavaScript
702 lines
27 KiB
JavaScript
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; |