const db = require(`../config/dbMysqlConn`); class VhcModels { static STTS_ACTIVE = 1; static STTS_INACTIVE = 2; static IN_ORD_YES = 1; static IN_ORD_NO = 2; static async getVhcByDeviceId(device_id) { return new Promise((resolve, reject) => { let params = []; let query = "SELECT"; query += " v.id as vid,v.nopol1,v.nopol2,v.nopol3,v.sum_milleage,vd.speed_limit"; query += " ,da.fullname as da_name,da.phone as da_phone,da.phone_code as da_phone_code"; query += " FROM t_vehicles AS v"; query += " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid"; query += " LEFT JOIN t_drivers AS da ON v.a_did = da.id"; query += " WHERE v.dlt is null AND v.status = ? AND v.device_id = ?"; params.push(VhcModels.STTS_ACTIVE, device_id); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async getVhcById(id) { return new Promise((resolve, reject) => { let params = []; let query = "SELECT"; query += " v.id as vid,v.nopol1,v.nopol2,v.nopol3,v.sum_milleage,vd.speed_limit"; query += " ,da.fullname as da_name,da.phone as da_phone,da.phone_code as da_phone_code"; query += " ,v.is_in_ord,v.ord_id,v.ord_code,v.ord_ids"; query += " FROM t_vehicles AS v"; query += " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid"; query += " LEFT JOIN t_drivers AS da ON v.a_did = da.id"; // query += ' WHERE v.dlt is null AND v.status = ? AND v.id = ?'; query += " WHERE v.dlt is null AND v.id = ?"; query += " LIMIT 1"; params.push(id); db.query(query, params, function (err, resp) { if (err) { reject(err); return false; } resolve(resp); return true; }); }); } static async update(id, data) { return new Promise((resolve, reject) => { const query = `UPDATE t_vehicles 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 incrementMileage(vhc_id, add_km) { return new Promise((resolve, reject) => { const query = ` UPDATE t_vehicles SET sum_milleage = COALESCE(sum_milleage, 0) + ? WHERE id = ? AND dlt IS NULL `; db.query(query, [add_km, vhc_id], (err, result) => { if (err) return reject(err); resolve(result); }); }); } } module.exports = VhcModels;