update
This commit is contained in:
@ -24,19 +24,11 @@ class TrackController extends Controller
|
||||
$now = time();
|
||||
$input = [];
|
||||
$rulesInput = [];
|
||||
|
||||
// validasi input
|
||||
// $isValidInput = Validator::make($input, $rulesInput);
|
||||
// if (!$isValidInput->passes()) {
|
||||
// $apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
// return new Response($apiResp, $apiResp['meta']['code']);
|
||||
// }
|
||||
$filter = [
|
||||
"get_order_data" => 1,
|
||||
];
|
||||
if ($req->cptid) {
|
||||
$filter["company"] = $req->cptid;
|
||||
// $filter["company"] = 1;
|
||||
}
|
||||
|
||||
if ($req->auth->is_tracking === Users::IS_TRACK_VHC_YES) {
|
||||
@ -75,7 +67,6 @@ class TrackController extends Controller
|
||||
$filter["vids"][] = $v->vhc_id;
|
||||
}
|
||||
} elseif ($req->auth->role === Users::ROLE_SPECIAL_TRACKING) {
|
||||
// $filter['vid'] = 0;
|
||||
$filter["company"] = $req->auth->client_group_id;
|
||||
} else {
|
||||
$filter["vid"] = 0;
|
||||
@ -88,8 +79,7 @@ class TrackController extends Controller
|
||||
// dd($list);
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
// $list[$key]->mileage_km = '-';
|
||||
$list[$key]->track_schedule = $row->track_sch_h . "/" . $row->track_sch_d; // combine track_sch_h + track_sch_d
|
||||
|
||||
$list[$key]->is_track_holiday_text =
|
||||
$list[$key]->is_track_holiday == Vehicles::ENABLED_TRACK_HOLIDAY ? "Enabled" : "Disabled";
|
||||
$list[$key]->alert_zones = "-";
|
||||
|
||||
@ -454,24 +454,163 @@ class UsersController extends Controller
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
// if ($req->roles == Users::ROLE_VENDOR) {
|
||||
// if (!$req->bank_id) {
|
||||
// $apiResp = Responses::bad_request("bank wajib diisi");
|
||||
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
// }
|
||||
// if (!$req->bank_branch_name) {
|
||||
// $apiResp = Responses::bad_request("bank kcp wajib diisi");
|
||||
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
// }
|
||||
// if (!$req->bank_acc_number) {
|
||||
// $apiResp = Responses::bad_request("nomor rekening wajib diisi");
|
||||
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
// }
|
||||
// if (!$req->bank_acc_name) {
|
||||
// $apiResp = Responses::bad_request("nama pemilik rekening wajib diisi");
|
||||
// return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
// }
|
||||
// }
|
||||
$uniqEmail = Users::getUserByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqEmail as $key => $row) {
|
||||
if ($row->id == $req->uid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("email has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
$uniqPhone = Users::getUserByPhone($req->phone);
|
||||
if (count($uniqPhone) > 0) {
|
||||
$notSameUser = 1;
|
||||
foreach ($uniqPhone as $key => $row) {
|
||||
if ($row->id == $req->uid) {
|
||||
$notSameUser = 0;
|
||||
}
|
||||
}
|
||||
if ($notSameUser) {
|
||||
$apiResp = Responses::bad_request("phone has been used");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
$vhcs = null;
|
||||
if ($req->is_tracking == Users::IS_TRACK_VHC_YES) {
|
||||
if (!$req->vehicles) {
|
||||
$apiResp = Responses::bad_request("vehicles must be filled");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
foreach ($req->vehicles as $k => $v) {
|
||||
$vhcs .= $v . ",";
|
||||
}
|
||||
if ($vhcs) {
|
||||
if (substr($vhcs, -1) === ",") {
|
||||
$vhcs = substr($vhcs, 0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
$data["is_tracking"] = $req->is_tracking;
|
||||
$data["vhcs"] = $vhcs;
|
||||
|
||||
$data["updt"] = $now;
|
||||
$data["updt_by"] = $req->auth->uid;
|
||||
|
||||
$data["role"] = 2;
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Users::updateUser($req->uid, $data);
|
||||
|
||||
if ($req->roles) {
|
||||
DB::table("model_has_roles")
|
||||
->where("model_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
DB::table("model_has_roles")->insert([
|
||||
"role_id" => $req->roles,
|
||||
"model_type" => "App\\User",
|
||||
"model_id" => $req->uid,
|
||||
]);
|
||||
}
|
||||
|
||||
$apiResp = Responses::created("success update user");
|
||||
|
||||
DB::commit();
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
public function api_edit_user_profile(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
|
||||
$input = [
|
||||
"uid" => $req->uid,
|
||||
"is_tracking" => $req->is_tracking,
|
||||
"vehicles" => $req->vehicles,
|
||||
"bank_id" => $req->bank_id,
|
||||
"bank_code" => $req->bank_code,
|
||||
"bank_short" => $req->bank_short,
|
||||
"bank_name" => $req->bank_name,
|
||||
"bank_kcp" => $req->bank_branch_name,
|
||||
"bank_acc_number" => $req->bank_acc_number,
|
||||
"bank_acc_name" => $req->bank_acc_name,
|
||||
"is_vdr_bcng" => $req->is_vdr_bcng,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
"is_tracking" => "nullable|numeric",
|
||||
"vehicles" => "nullable|array",
|
||||
"bank_id" => "nullable|integer|not_in:0",
|
||||
"bank_code" => "nullable|numeric",
|
||||
"bank_short" => "nullable|string",
|
||||
"bank_name" => "nullable|string",
|
||||
"bank_kcp" => "nullable|string",
|
||||
"bank_acc_number" => "nullable|numeric",
|
||||
"bank_acc_name" => "nullable|string|max:255",
|
||||
"is_vdr_bcng" => "nullable|numeric",
|
||||
];
|
||||
$data = [
|
||||
"id" => $req->uid,
|
||||
];
|
||||
|
||||
if ($req->first_name) {
|
||||
$input["first_name"] = $req->first_name;
|
||||
$rulesInput["first_name"] = "required|string|max:125";
|
||||
$data["first_name"] = $req->first_name;
|
||||
}
|
||||
if ($req->last_name) {
|
||||
$input["last_name"] = $req->last_name;
|
||||
$rulesInput["last_name"] = "required|string|max:125";
|
||||
$data["last_name"] = $req->last_name ?? null;
|
||||
}
|
||||
if ($req->email) {
|
||||
$input["email"] = $req->email;
|
||||
$rulesInput["email"] = "required|email";
|
||||
$data["email"] = $req->email;
|
||||
}
|
||||
if ($req->phone) {
|
||||
$input["phone"] = $req->phone;
|
||||
$rulesInput["phone"] = "required|integer|not_in:0";
|
||||
$data["phone"] = $req->phone;
|
||||
$data["phone_code"] = Users::DEFAULT_PHONE_CODE;
|
||||
}
|
||||
if ($req->fulladdress) {
|
||||
$input["fulladdress"] = $req->fulladdress;
|
||||
$rulesInput["fulladdress"] = "required|string|min:45";
|
||||
$data["fulladdress"] = $req->fulladdress;
|
||||
}
|
||||
if ($req->password) {
|
||||
$input["password"] = $req->password;
|
||||
$rulesInput["password"] = "required|string";
|
||||
$data["password"] = Hash::make($req->password);
|
||||
}
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$getUser = Users::getUserById($req->uid);
|
||||
if (count($getUser) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$uniqEmail = Users::getUserByEmail($req->email);
|
||||
if (count($uniqEmail) > 0) {
|
||||
@ -499,67 +638,20 @@ class UsersController extends Controller
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
// $uniqCPhone = Clients::getClientByPhone($req->phone);
|
||||
// if (count($uniqCPhone) > 0) {
|
||||
// $notSameUser = 1;
|
||||
// foreach ($uniqCPhone as $key => $row) {
|
||||
// if ($row->id == $getUser[0]->client_id) {
|
||||
// $notSameUser = 0;
|
||||
// }
|
||||
// }
|
||||
// if ($notSameUser) {
|
||||
// $apiResp = Responses::bad_request('phone has been used');
|
||||
// return (new Response($apiResp, $apiResp['meta']['code']));
|
||||
// }
|
||||
// }
|
||||
|
||||
$vhcs = null;
|
||||
if ($req->is_tracking == Users::IS_TRACK_VHC_YES) {
|
||||
if (!$req->vehicles) {
|
||||
$apiResp = Responses::bad_request("vehicles must be filled");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
foreach ($req->vehicles as $k => $v) {
|
||||
$vhcs .= $v . ",";
|
||||
}
|
||||
if ($vhcs) {
|
||||
if (substr($vhcs, -1) === ",") {
|
||||
$vhcs = substr($vhcs, 0, -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
$data["is_tracking"] = $req->is_tracking;
|
||||
$data["vhcs"] = $vhcs;
|
||||
|
||||
// if ($req->roles == Users::ROLE_VENDOR) {
|
||||
// $data["bank_id"] = $req->bank_id;
|
||||
// $data["bank_code"] = $req->bank_code;
|
||||
// $data["bank_name"] = $req->bank_name;
|
||||
// $data["bank_short_name"] = $req->bank_short;
|
||||
// $data["bank_branch_name"] = $req->bank_branch_name;
|
||||
// $data["bank_acc_number"] = $req->bank_acc_number;
|
||||
// $data["bank_acc_name"] = $req->bank_acc_name;
|
||||
// $data["is_vdr_bcng"] = $req->is_vdr_bcng;
|
||||
// }
|
||||
|
||||
$data["updt"] = $now;
|
||||
$data["updt_by"] = $req->auth->uid;
|
||||
|
||||
$data["role"] = 2;
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
Users::updateUser($req->uid, $data);
|
||||
|
||||
DB::table("model_has_roles")
|
||||
->where("model_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
if ($req->roles) {
|
||||
DB::table("model_has_roles")
|
||||
->where("model_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
DB::table("model_has_roles")->insert([
|
||||
"role_id" => $req->roles,
|
||||
"model_type" => "App\\User", // atau 'App\User' tergantung struktur kamu
|
||||
"model_id" => $req->uid, // ID user-nya
|
||||
"model_type" => "App\\User",
|
||||
"model_id" => $req->uid,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@ -49,262 +49,471 @@ class Tracks extends Model
|
||||
* device sudah sampai dilokasi pengantaran dan dimatikan, ketika dipakai lagi data tracking yang lama kelihatan dan loncat
|
||||
* untuk mengatasi itu di service_tracking juga perlu validasi tambahan, entah seperti apa caranya
|
||||
*/
|
||||
|
||||
// public static function listCurrentTracks($filter = [])
|
||||
// {
|
||||
// $now = time();
|
||||
// $params = [];
|
||||
|
||||
// $query = "SELECT";
|
||||
// $query .=
|
||||
// " v.id as vid,v.device_id,v.name as vhc_name,c.name as vhc_cat_name,t.name as vhc_type_name";
|
||||
// $query .= " ,v.nopol1,v.nopol2,v.nopol3,vd.fvhc_img";
|
||||
// $query .= " ,v.is_track_holiday,v.track_sch_d,v.track_sch_h,vd.speed_limit,v.crt as vhc_crt";
|
||||
// $query .= " ,client.id as client_group_id,client.c_name as client_group_name";
|
||||
// $query .= " ,tr.ignition,tr.stts_engine,tr.stts_gps,tr.stts_gsm";
|
||||
// $query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
|
||||
// // FRO
|
||||
// // $query .= " ,(SELECT SUM(pre_milleage) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id LIMIT 1) as vhc_sum_milleage";
|
||||
|
||||
// // $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_IDLING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// // SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_STOPING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// // ) ORDER BY id ASC LIMIT 1) as lst_idle_at";
|
||||
|
||||
// // $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_STOPING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// // SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_IDLING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// // ) ORDER BY id ASC LIMIT 1) as lst_stop_at";
|
||||
|
||||
// $query .=
|
||||
// " ,tr.id AS lst_master_id,tr.latitude AS lst_lat,tr.longitude AS lst_lng,tr.speed AS lst_speed,tr.orientation AS lst_orientation";
|
||||
// $query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
// $query .=
|
||||
// " ,tr_addr.master_id AS lst_addr_master_id,tr_addr.country_text AS lst_country_text,tr_addr.state_text AS lst_state_text,tr_addr.city_text AS lst_city_text";
|
||||
// $query .=
|
||||
// " ,tr_addr.district_text AS lst_district_text,tr_addr.village_text AS lst_village_text,tr_addr.postcode AS lst_postcode";
|
||||
// $query .= " ,tr_addr.streets AS lst_streets,tr_addr.fulladdress AS lst_fulladdress";
|
||||
|
||||
// // FRO
|
||||
// // $query .= " ,(SELECT COUNT(id) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id AND action = 'heartbeat' AND crt BETWEEN ".($now-(10*60))." AND ".$now." LIMIT 1) as lst_heartbeat"; // heartbeat last data on further 10 minutes
|
||||
|
||||
// if (isset($filter["active_rates"])) {
|
||||
// $query .=
|
||||
// ",rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
// $query .=
|
||||
// ",rate.fast_time as rate_fast_time,rate.long_time as rate_long_time,rate.sell_kg as rate_sell_kg,rate.sell_cbm as rate_sell_cbm,rate.sell_ftl as rate_sell_ftl";
|
||||
// }
|
||||
// if (isset($filter["get_order_data"])) {
|
||||
// $query .=
|
||||
// ",ord.id as ord_id,ord.code as ord_code,ord.status as ord_stts,ord.crt as ord_crt,ord_pck.pck_name as ord_pck_name,ord_pck.pck_addr as ord_pck_addr,ord_drop.drop_name as ord_drop_name,ord_drop.drop_addr as ord_drop_addr";
|
||||
// $query .=
|
||||
// ",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) ord_pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) ord_drop_ktname";
|
||||
// $query .=
|
||||
// ",ord_drv.drv_name as ord_drv_name,ord_drv.drv_phone_val as ord_drv_phone_val,ord_drv.drv_phone2_val as ord_drv_phone2_val,ord_drv.drv_addr as ord_drv_addr";
|
||||
// $query .= ",ord_c.c_name as ord_c_name,ord_c.c_pt_name as ord_c_pt_name";
|
||||
// }
|
||||
// $query .= " FROM t_vehicles AS v";
|
||||
// $query .= " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid";
|
||||
// $query .= " INNER JOIN t_vehicles_types AS t ON v.type_id = t.id";
|
||||
// $query .= " INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id";
|
||||
// $query .= " LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id";
|
||||
// $query .= " LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id";
|
||||
// // get last updated row from many rows
|
||||
// // $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY device_id ORDER BY crt DESC ) AS tr1 ON (v.device_id = tr1.device_id)"; // cara lama berlaku utk gps tracker saja
|
||||
// // // $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id, vhc_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY vhc_id ORDER BY crt DESC ) AS tr1 ON (v.id = tr1.vhc_id)"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI)
|
||||
// // $query .= " LEFT JOIN " . self::T_TRACKS . " AS tr ON (tr.crt = tr1.max_crt)";
|
||||
// // get last updated tracking from updated table realtime
|
||||
// // $query .= " LEFT JOIN db_trucking.t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// $query .= " LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// // $query .= " LEFT JOIN " . self::T_TRACKS_ADDR . " AS tr_addr ON tr.id = tr_addr.master_id";
|
||||
|
||||
// //FRO
|
||||
// $query .=
|
||||
// " LEFT JOIN " .
|
||||
// self::T_TRACKS_ADDR .
|
||||
// " AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
|
||||
// if (isset($filter["active_rates"])) {
|
||||
// // $query .= " INNER JOIN t_conf_rates as rate ON v.type_id = rate.vhc_type";
|
||||
// $query .= " INNER JOIN t_conf_rates as rate ON v.vendor_id = rate.vdr_id";
|
||||
// }
|
||||
// if (isset($filter["get_order_data"])) {
|
||||
// // the old way => only 1 order 1 vehicle
|
||||
// $query .= " LEFT JOIN t_orders as ord ON v.ord_id = ord.id";
|
||||
// $query .= " LEFT JOIN t_orders_pickups as ord_pck ON v.ord_id = ord_pck.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drops as ord_drop ON v.ord_id = ord_drop.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drivers as ord_drv ON v.ord_id = ord_drv.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_clients as ord_c ON v.ord_id = ord_c.ord_id";
|
||||
|
||||
// // the new way => can handle 2 order in 1 vehicle
|
||||
// // $query .= " LEFT JOIN t_orders_vehicles as ord_vhc ON v.id = ord_vhc.vhc_id";
|
||||
// // $query .= " LEFT JOIN t_orders as ord ON ord_vhc.ord_id = ord.id";
|
||||
// // $query .= " LEFT JOIN t_orders_pickups as ord_pck ON ord_vhc.ord_id = ord_pck.ord_id";
|
||||
// // $query .= " LEFT JOIN t_orders_drops as ord_drop ON ord_vhc.ord_id = ord_drop.ord_id";
|
||||
// // $query .= " LEFT JOIN t_orders_drivers as ord_drv ON ord_vhc.ord_id = ord_drv.ord_id";
|
||||
// // $query .= " LEFT JOIN t_orders_clients as ord_c ON ord_vhc.ord_id = ord_c.ord_id";
|
||||
// }
|
||||
// $query .= " WHERE v.dlt is null";
|
||||
// // $query .= " AND tr.action IN ('location','alarm')"; // kalo gamau ngambil data heartbeat(idling)
|
||||
// // $query .= " AND tr.device_id = v.device_id"; // cara lama berlaku utk gps tracker saja
|
||||
// // $query .= " AND tr.vhc_id = v.id"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI) // bikin lemot
|
||||
// $query .= " AND tr.latitude != 0 AND tr.latitude is not null";
|
||||
// if (isset($filter["status"])) {
|
||||
// $query .= " AND v.status = ?";
|
||||
// $params[] = $filter["status"];
|
||||
// }
|
||||
// if (isset($filter["is_in_ord"])) {
|
||||
// $query .= " AND v.is_in_ord = ?";
|
||||
// $params[] = $filter["is_in_ord"];
|
||||
// }
|
||||
// if (isset($filter["nopol1"]) && isset($filter["nopol2"]) && isset($filter["nopol3"])) {
|
||||
// $query .= " AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ?";
|
||||
// array_push($params, $filter["nopol1"], $filter["nopol2"], $filter["nopol3"]);
|
||||
// }
|
||||
// if (isset($filter["vid"])) {
|
||||
// $query .= " AND v.id = ?";
|
||||
// $params[] = $filter["vid"];
|
||||
// }
|
||||
// if (isset($filter["vids"])) {
|
||||
// if ($filter["vids"] && count($filter["vids"]) > 0) {
|
||||
// $binds_vids = "";
|
||||
// foreach ($filter["vids"] as $k => $v) {
|
||||
// $binds_vids .= "?,";
|
||||
// $params[] = $v;
|
||||
// }
|
||||
// if (substr($binds_vids, -1) === ",") {
|
||||
// $binds_vids = substr($binds_vids, 0, -1);
|
||||
// }
|
||||
// $query .= " AND v.id IN ($binds_vids)";
|
||||
// } else {
|
||||
// $query .= " AND v.id = ?";
|
||||
// $params[] = 0;
|
||||
// }
|
||||
// }
|
||||
// if (isset($filter["own_by_vdr_id"])) {
|
||||
// $query .= " AND v.vendor_id = ?";
|
||||
// $params[] = $filter["own_by_vdr_id"];
|
||||
// }
|
||||
// if (isset($filter["active_rates"])) {
|
||||
// // v1
|
||||
// // $query .= " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.dest_district != 0";
|
||||
// // $query .= " AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_kg = ? AND rate.sell_cbm = ? AND rate.long_time = ?";
|
||||
// // array_push($params, $filter['active_rates']->origin_prov, $filter['active_rates']->dest_city, $filter['active_rates']->dest_district, $filter['active_rates']->sell_kg, $filter['active_rates']->sell_cbm, $filter['active_rates']->long_time);
|
||||
// // v2
|
||||
// $query .=
|
||||
// " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.is_active = " . ConfRates::IS_ACTIVE;
|
||||
// $query .=
|
||||
// " AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_ftl = ? AND rate.long_time = ?";
|
||||
// array_push(
|
||||
// $params,
|
||||
// $filter["active_rates"]->origin_prov,
|
||||
// $filter["active_rates"]->dest_city,
|
||||
// $filter["active_rates"]->dest_district,
|
||||
// $filter["active_rates"]->sell_ftl,
|
||||
// $filter["active_rates"]->long_time
|
||||
// );
|
||||
// }
|
||||
// if (isset($filter["prefer_truck_type"])) {
|
||||
// $query .= " AND v.type_id = ?";
|
||||
// $params[] = $filter["prefer_truck_type"];
|
||||
// }
|
||||
// if (isset($filter["get_order_data"])) {
|
||||
// if (isset($filter["client_id"])) {
|
||||
// $query .= " AND ord_c.c_id = ?";
|
||||
// $params[] = $filter["client_id"];
|
||||
// }
|
||||
// // $query .= " AND ord.status IN (22,4)";
|
||||
// }
|
||||
// if (isset($filter["company"])) {
|
||||
// $query .= " AND client.id = ?";
|
||||
// $params[] = $filter["company"];
|
||||
// }
|
||||
|
||||
// // $query .= " AND v.id = 70";
|
||||
|
||||
// $query .= " GROUP BY v.id";
|
||||
// $query .= " ORDER BY tr.crt_d DESC";
|
||||
// $query .= " LIMIT 500;";
|
||||
|
||||
// // dd($query);
|
||||
|
||||
// $list = DB::select($query, $params);
|
||||
// foreach ($list as $_list) {
|
||||
// $_query =
|
||||
// " SELECT SUM(pre_milleage) as vhc_sum_milleage FROM " . self::T_TRACKS . " WHERE vhc_id = ?";
|
||||
// $_query = DB::select($_query, [$_list->vid]);
|
||||
// $_list->vhc_sum_milleage = $_query[0]->vhc_sum_milleage;
|
||||
|
||||
// $_query =
|
||||
// "
|
||||
// SELECT
|
||||
// crt_s as lst_idle_at
|
||||
// FROM
|
||||
// " .
|
||||
// self::T_TRACKS .
|
||||
// "
|
||||
// WHERE
|
||||
// stts_engine = " .
|
||||
// self::STTS_EN_IDLING .
|
||||
// "
|
||||
// AND vhc_id = ?
|
||||
// AND crt_s >= (
|
||||
// SELECT
|
||||
// crt_s
|
||||
// FROM
|
||||
// " .
|
||||
// self::T_TRACKS .
|
||||
// "
|
||||
// WHERE
|
||||
// stts_engine IN (
|
||||
// " .
|
||||
// self::STTS_EN_STOPING .
|
||||
// ",
|
||||
// " .
|
||||
// self::STTS_EN_MOVING .
|
||||
// ")
|
||||
// AND vhc_id = ?
|
||||
// AND crt_s <= ?
|
||||
// ORDER BY
|
||||
// id DESC
|
||||
// LIMIT 1
|
||||
// )
|
||||
// ORDER BY
|
||||
// id ASC
|
||||
// LIMIT 1";
|
||||
// $_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
// $_list->lst_idle_at = count($_query) == 0 ? "" : $_query[0]->lst_idle_at;
|
||||
|
||||
// $_query =
|
||||
// "SELECT crt_s as lst_stop_at FROM " .
|
||||
// self::T_TRACKS .
|
||||
// " WHERE stts_engine = " .
|
||||
// self::STTS_EN_STOPING .
|
||||
// " AND vhc_id = ? AND crt_s >= (
|
||||
// SELECT crt_s FROM " .
|
||||
// self::T_TRACKS .
|
||||
// " WHERE stts_engine IN (" .
|
||||
// self::STTS_EN_IDLING .
|
||||
// "," .
|
||||
// self::STTS_EN_MOVING .
|
||||
// ") AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1 ";
|
||||
// $_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
// $_list->lst_stop_at = count($_query) == 0 ? "" : $_query[0]->lst_stop_at;
|
||||
|
||||
// $_query =
|
||||
// " SELECT COUNT(id) as lst_heartbeat FROM " .
|
||||
// self::T_TRACKS .
|
||||
// " WHERE vhc_id = ? AND action = 'heartbeat' AND crt BETWEEN " .
|
||||
// ($now - 10 * 60) .
|
||||
// " AND " .
|
||||
// $now .
|
||||
// " LIMIT 1";
|
||||
// $_query = DB::select($_query, [$_list->vid]);
|
||||
// $_list->lst_heartbeat = count($_query) == 0 ? "" : $_query[0]->lst_heartbeat;
|
||||
// }
|
||||
// // em
|
||||
// return $list;
|
||||
// }
|
||||
|
||||
// public static function listCurrentTracks($filter = [])
|
||||
// {
|
||||
// $now = time();
|
||||
// $params = [];
|
||||
|
||||
// $query = "SELECT";
|
||||
// $query .=
|
||||
// " v.id as vid,v.device_id,v.name as vhc_name,c.name as vhc_cat_name,t.name as vhc_type_name";
|
||||
// $query .= " ,v.nopol1,v.nopol2,v.nopol3,vd.fvhc_img";
|
||||
// $query .= " ,v.is_track_holiday,v.track_sch_d,v.track_sch_h,vd.speed_limit,v.crt as vhc_crt";
|
||||
// $query .= " ,client.id as client_group_id,client.c_name as client_group_name";
|
||||
// $query .= " ,tr.ignition,tr.stts_engine,tr.stts_gps,tr.stts_gsm";
|
||||
// $query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
|
||||
// $query .=
|
||||
// " ,tr.id AS lst_master_id,tr.latitude AS lst_lat,tr.longitude AS lst_lng,tr.speed AS lst_speed,tr.orientation AS lst_orientation";
|
||||
// $query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
// $query .=
|
||||
// " ,tr_addr.master_id AS lst_addr_master_id,tr_addr.country_text AS lst_country_text,tr_addr.state_text AS lst_state_text,tr_addr.city_text AS lst_city_text";
|
||||
// $query .=
|
||||
// " ,tr_addr.district_text AS lst_district_text,tr_addr.village_text AS lst_village_text,tr_addr.postcode AS lst_postcode";
|
||||
// $query .= " ,tr_addr.streets AS lst_streets,tr_addr.fulladdress AS lst_fulladdress";
|
||||
|
||||
// $query .= " FROM t_vehicles AS v";
|
||||
// $query .= " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid";
|
||||
// $query .= " INNER JOIN t_vehicles_types AS t ON v.type_id = t.id";
|
||||
// $query .= " INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id";
|
||||
// $query .= " LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id";
|
||||
// $query .= " LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id";
|
||||
// $query .= " LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// $query .=
|
||||
// " LEFT JOIN t_gps_tracks_address AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
|
||||
// $query .= " WHERE v.dlt is null";
|
||||
// $query .= " AND tr.latitude != 0 AND tr.latitude is not null";
|
||||
// $query .= " GROUP BY v.id";
|
||||
// $query .= " ORDER BY tr.crt_d DESC";
|
||||
// $query .= " LIMIT 500;";
|
||||
|
||||
// $list = DB::select($query, $params);
|
||||
// foreach ($list as $_list) {
|
||||
// $_query = "SELECT sum_milleage as vhc_sum_milleage FROM t_vehicles WHERE id = ?";
|
||||
// $_query = DB::select($_query, [$_list->vid]);
|
||||
// $_list->vhc_sum_milleage = $_query[0]->vhc_sum_milleage ?? 0;
|
||||
|
||||
// $_query = "
|
||||
// SELECT
|
||||
// crt_s as lst_idle_at
|
||||
// FROM
|
||||
// t_gps_tracks
|
||||
// WHERE
|
||||
// stts_engine = 2
|
||||
// AND vhc_id = ?
|
||||
// AND crt_s >= (
|
||||
// SELECT
|
||||
// crt_s
|
||||
// FROM
|
||||
// t_gps_tracks
|
||||
// WHERE
|
||||
// stts_engine IN (0, 1)
|
||||
// AND vhc_id = ?
|
||||
// AND crt_s <= ?
|
||||
// ORDER BY
|
||||
// id DESC
|
||||
// LIMIT 1
|
||||
// )
|
||||
// ORDER BY
|
||||
// id ASC
|
||||
// LIMIT 1";
|
||||
// $_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
// $_list->lst_idle_at = count($_query) == 0 ? "" : $_query[0]->lst_idle_at;
|
||||
|
||||
// $_query = "SELECT crt_s as lst_stop_at FROM t_gps_tracks WHERE stts_engine = 0 AND vhc_id = ? AND crt_s >= (
|
||||
// SELECT crt_s FROM t_gps_tracks WHERE stts_engine IN (2,1) AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1 ";
|
||||
// $_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
// $_list->lst_stop_at = count($_query) == 0 ? "" : $_query[0]->lst_stop_at;
|
||||
|
||||
// $_query =
|
||||
// " SELECT COUNT(id) as lst_heartbeat FROM t_gps_tracks WHERE vhc_id = ? AND action = 'heartbeat' AND crt BETWEEN " .
|
||||
// ($now - 10 * 60) .
|
||||
// " AND " .
|
||||
// $now .
|
||||
// " LIMIT 1";
|
||||
// $_query = DB::select($_query, [$_list->vid]);
|
||||
// $_list->lst_heartbeat = count($_query) == 0 ? "" : $_query[0]->lst_heartbeat;
|
||||
// }
|
||||
// return $list;
|
||||
// }
|
||||
|
||||
public static function listCurrentTracks($filter = [])
|
||||
{
|
||||
$now = time();
|
||||
$params = [];
|
||||
|
||||
$query = "SELECT";
|
||||
$query .=
|
||||
" v.id as vid,v.device_id,v.name as vhc_name,c.name as vhc_cat_name,t.name as vhc_type_name";
|
||||
$query .= " ,v.nopol1,v.nopol2,v.nopol3,vd.fvhc_img";
|
||||
$query .= " ,v.is_track_holiday,v.track_sch_d,v.track_sch_h,vd.speed_limit,v.crt as vhc_crt";
|
||||
$query .= " ,client.id as client_group_id,client.c_name as client_group_name";
|
||||
$query .= " ,tr.ignition,tr.stts_engine,tr.stts_gps,tr.stts_gsm";
|
||||
$query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
$list = DB::select(
|
||||
"
|
||||
SELECT
|
||||
v.id as vid, v.device_id, v.name as vhc_name,
|
||||
c.name as vhc_cat_name, t.name as vhc_type_name,
|
||||
v.nopol1, v.nopol2, v.nopol3, vd.fvhc_img,
|
||||
v.is_track_holiday, v.track_sch_d, v.track_sch_h,
|
||||
vd.speed_limit, v.crt as vhc_crt,
|
||||
client.id as client_group_id, client.c_name as client_group_name,
|
||||
tr.ignition, tr.stts_engine, tr.stts_gps, tr.stts_gsm,
|
||||
tr.pre_milleage, tr.sum_milleage, tr.vhc_milleage, v.sum_milleage AS vhc_sum_milleage_1,
|
||||
tr.id AS lst_master_id, tr.latitude AS lst_lat, tr.longitude AS lst_lng,
|
||||
tr.speed AS lst_speed, tr.orientation AS lst_orientation,
|
||||
tr.crt AS lst_loc_crt, tr.crt_d AS lst_loc_crt_d, tr.crt_s AS lst_loc_crt_s,
|
||||
tr_addr.master_id AS lst_addr_master_id,
|
||||
tr_addr.country_text AS lst_country_text, tr_addr.state_text AS lst_state_text,
|
||||
tr_addr.city_text AS lst_city_text, tr_addr.district_text AS lst_district_text,
|
||||
tr_addr.village_text AS lst_village_text, tr_addr.postcode AS lst_postcode,
|
||||
tr_addr.streets AS lst_streets, tr_addr.fulladdress AS lst_fulladdress
|
||||
FROM t_vehicles AS v
|
||||
INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid
|
||||
INNER JOIN t_vehicles_types AS t ON v.type_id = t.id
|
||||
INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id
|
||||
LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id
|
||||
LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id
|
||||
LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id
|
||||
LEFT JOIN t_gps_tracks_address AS tr_addr ON tr.latitude = tr_addr.lat AND tr.longitude = tr_addr.lng
|
||||
WHERE v.dlt IS NULL
|
||||
AND tr.latitude != 0 AND tr.latitude IS NOT NULL
|
||||
GROUP BY v.id
|
||||
ORDER BY tr.crt_d DESC
|
||||
LIMIT 20
|
||||
",
|
||||
$params
|
||||
);
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT SUM(pre_milleage) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id LIMIT 1) as vhc_sum_milleage";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_IDLING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_STOPING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_idle_at";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_STOPING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_IDLING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_stop_at";
|
||||
|
||||
$query .=
|
||||
" ,tr.id AS lst_master_id,tr.latitude AS lst_lat,tr.longitude AS lst_lng,tr.speed AS lst_speed,tr.orientation AS lst_orientation";
|
||||
$query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
$query .=
|
||||
" ,tr_addr.master_id AS lst_addr_master_id,tr_addr.country_text AS lst_country_text,tr_addr.state_text AS lst_state_text,tr_addr.city_text AS lst_city_text";
|
||||
$query .=
|
||||
" ,tr_addr.district_text AS lst_district_text,tr_addr.village_text AS lst_village_text,tr_addr.postcode AS lst_postcode";
|
||||
$query .= " ,tr_addr.streets AS lst_streets,tr_addr.fulladdress AS lst_fulladdress";
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT COUNT(id) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id AND action = 'heartbeat' AND crt BETWEEN ".($now-(10*60))." AND ".$now." LIMIT 1) as lst_heartbeat"; // heartbeat last data on further 10 minutes
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
$query .=
|
||||
",rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
$query .=
|
||||
",rate.fast_time as rate_fast_time,rate.long_time as rate_long_time,rate.sell_kg as rate_sell_kg,rate.sell_cbm as rate_sell_cbm,rate.sell_ftl as rate_sell_ftl";
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
$query .=
|
||||
",ord.id as ord_id,ord.code as ord_code,ord.status as ord_stts,ord.crt as ord_crt,ord_pck.pck_name as ord_pck_name,ord_pck.pck_addr as ord_pck_addr,ord_drop.drop_name as ord_drop_name,ord_drop.drop_addr as ord_drop_addr";
|
||||
$query .=
|
||||
",(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) ord_pck_ktname, (SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) ord_drop_ktname";
|
||||
$query .=
|
||||
",ord_drv.drv_name as ord_drv_name,ord_drv.drv_phone_val as ord_drv_phone_val,ord_drv.drv_phone2_val as ord_drv_phone2_val,ord_drv.drv_addr as ord_drv_addr";
|
||||
$query .= ",ord_c.c_name as ord_c_name,ord_c.c_pt_name as ord_c_pt_name";
|
||||
}
|
||||
$query .= " FROM t_vehicles AS v";
|
||||
$query .= " INNER JOIN t_vehicles_detail AS vd ON v.id = vd.vid";
|
||||
$query .= " INNER JOIN t_vehicles_types AS t ON v.type_id = t.id";
|
||||
$query .= " INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id";
|
||||
$query .= " LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id";
|
||||
$query .= " LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id";
|
||||
// get last updated row from many rows
|
||||
// $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY device_id ORDER BY crt DESC ) AS tr1 ON (v.device_id = tr1.device_id)"; // cara lama berlaku utk gps tracker saja
|
||||
// // $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id, vhc_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY vhc_id ORDER BY crt DESC ) AS tr1 ON (v.id = tr1.vhc_id)"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI)
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS . " AS tr ON (tr.crt = tr1.max_crt)";
|
||||
// get last updated tracking from updated table realtime
|
||||
// $query .= " LEFT JOIN db_trucking.t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
$query .= " LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS_ADDR . " AS tr_addr ON tr.id = tr_addr.master_id";
|
||||
|
||||
//FRO
|
||||
$query .=
|
||||
" LEFT JOIN " .
|
||||
self::T_TRACKS_ADDR .
|
||||
" AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
// $query .= " INNER JOIN t_conf_rates as rate ON v.type_id = rate.vhc_type";
|
||||
$query .= " INNER JOIN t_conf_rates as rate ON v.vendor_id = rate.vdr_id";
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
// the old way => only 1 order 1 vehicle
|
||||
$query .= " LEFT JOIN t_orders as ord ON v.ord_id = ord.id";
|
||||
$query .= " LEFT JOIN t_orders_pickups as ord_pck ON v.ord_id = ord_pck.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drops as ord_drop ON v.ord_id = ord_drop.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drivers as ord_drv ON v.ord_id = ord_drv.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_clients as ord_c ON v.ord_id = ord_c.ord_id";
|
||||
|
||||
// the new way => can handle 2 order in 1 vehicle
|
||||
// $query .= " LEFT JOIN t_orders_vehicles as ord_vhc ON v.id = ord_vhc.vhc_id";
|
||||
// $query .= " LEFT JOIN t_orders as ord ON ord_vhc.ord_id = ord.id";
|
||||
// $query .= " LEFT JOIN t_orders_pickups as ord_pck ON ord_vhc.ord_id = ord_pck.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drops as ord_drop ON ord_vhc.ord_id = ord_drop.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drivers as ord_drv ON ord_vhc.ord_id = ord_drv.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_clients as ord_c ON ord_vhc.ord_id = ord_c.ord_id";
|
||||
}
|
||||
$query .= " WHERE v.dlt is null";
|
||||
// $query .= " AND tr.action IN ('location','alarm')"; // kalo gamau ngambil data heartbeat(idling)
|
||||
// $query .= " AND tr.device_id = v.device_id"; // cara lama berlaku utk gps tracker saja
|
||||
// $query .= " AND tr.vhc_id = v.id"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI) // bikin lemot
|
||||
$query .= " AND tr.latitude != 0 AND tr.latitude is not null";
|
||||
if (isset($filter["status"])) {
|
||||
$query .= " AND v.status = ?";
|
||||
$params[] = $filter["status"];
|
||||
}
|
||||
if (isset($filter["is_in_ord"])) {
|
||||
$query .= " AND v.is_in_ord = ?";
|
||||
$params[] = $filter["is_in_ord"];
|
||||
}
|
||||
if (isset($filter["nopol1"]) && isset($filter["nopol2"]) && isset($filter["nopol3"])) {
|
||||
$query .= " AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ?";
|
||||
array_push($params, $filter["nopol1"], $filter["nopol2"], $filter["nopol3"]);
|
||||
}
|
||||
if (isset($filter["vid"])) {
|
||||
$query .= " AND v.id = ?";
|
||||
$params[] = $filter["vid"];
|
||||
}
|
||||
if (isset($filter["vids"])) {
|
||||
if ($filter["vids"] && count($filter["vids"]) > 0) {
|
||||
$binds_vids = "";
|
||||
foreach ($filter["vids"] as $k => $v) {
|
||||
$binds_vids .= "?,";
|
||||
$params[] = $v;
|
||||
}
|
||||
if (substr($binds_vids, -1) === ",") {
|
||||
$binds_vids = substr($binds_vids, 0, -1);
|
||||
}
|
||||
$query .= " AND v.id IN ($binds_vids)";
|
||||
} else {
|
||||
$query .= " AND v.id = ?";
|
||||
$params[] = 0;
|
||||
}
|
||||
}
|
||||
if (isset($filter["own_by_vdr_id"])) {
|
||||
$query .= " AND v.vendor_id = ?";
|
||||
$params[] = $filter["own_by_vdr_id"];
|
||||
}
|
||||
if (isset($filter["active_rates"])) {
|
||||
// v1
|
||||
// $query .= " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.dest_district != 0";
|
||||
// $query .= " AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_kg = ? AND rate.sell_cbm = ? AND rate.long_time = ?";
|
||||
// array_push($params, $filter['active_rates']->origin_prov, $filter['active_rates']->dest_city, $filter['active_rates']->dest_district, $filter['active_rates']->sell_kg, $filter['active_rates']->sell_cbm, $filter['active_rates']->long_time);
|
||||
// v2
|
||||
$query .=
|
||||
" AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.is_active = " . ConfRates::IS_ACTIVE;
|
||||
$query .=
|
||||
" AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_ftl = ? AND rate.long_time = ?";
|
||||
array_push(
|
||||
$params,
|
||||
$filter["active_rates"]->origin_prov,
|
||||
$filter["active_rates"]->dest_city,
|
||||
$filter["active_rates"]->dest_district,
|
||||
$filter["active_rates"]->sell_ftl,
|
||||
$filter["active_rates"]->long_time
|
||||
);
|
||||
}
|
||||
if (isset($filter["prefer_truck_type"])) {
|
||||
$query .= " AND v.type_id = ?";
|
||||
$params[] = $filter["prefer_truck_type"];
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
if (isset($filter["client_id"])) {
|
||||
$query .= " AND ord_c.c_id = ?";
|
||||
$params[] = $filter["client_id"];
|
||||
}
|
||||
// $query .= " AND ord.status IN (22,4)";
|
||||
}
|
||||
if (isset($filter["company"])) {
|
||||
$query .= " AND client.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
// $query .= " AND v.id = 70";
|
||||
|
||||
$query .= " GROUP BY v.id";
|
||||
$query .= " ORDER BY tr.crt_d DESC";
|
||||
$query .= " LIMIT 500;";
|
||||
|
||||
// dd($query);
|
||||
|
||||
$list = DB::select($query, $params);
|
||||
foreach ($list as $_list) {
|
||||
$_query =
|
||||
" SELECT SUM(pre_milleage) as vhc_sum_milleage FROM " . self::T_TRACKS . " WHERE vhc_id = ?";
|
||||
$_query = DB::select($_query, [$_list->vid]);
|
||||
$_list->vhc_sum_milleage = $_query[0]->vhc_sum_milleage;
|
||||
|
||||
$_query =
|
||||
"
|
||||
SELECT
|
||||
crt_s as lst_idle_at
|
||||
FROM
|
||||
" .
|
||||
self::T_TRACKS .
|
||||
"
|
||||
WHERE
|
||||
stts_engine = " .
|
||||
self::STTS_EN_IDLING .
|
||||
"
|
||||
AND vhc_id = ?
|
||||
AND crt_s >= (
|
||||
SELECT
|
||||
crt_s
|
||||
FROM
|
||||
" .
|
||||
self::T_TRACKS .
|
||||
"
|
||||
WHERE
|
||||
stts_engine IN (
|
||||
" .
|
||||
self::STTS_EN_STOPING .
|
||||
",
|
||||
" .
|
||||
self::STTS_EN_MOVING .
|
||||
")
|
||||
AND vhc_id = ?
|
||||
AND crt_s <= ?
|
||||
ORDER BY
|
||||
id DESC
|
||||
LIMIT 1
|
||||
)
|
||||
ORDER BY
|
||||
id ASC
|
||||
LIMIT 1";
|
||||
$_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
$_list->lst_idle_at = count($_query) == 0 ? "" : $_query[0]->lst_idle_at;
|
||||
|
||||
$_query =
|
||||
"SELECT crt_s as lst_stop_at FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine = " .
|
||||
self::STTS_EN_STOPING .
|
||||
" AND vhc_id = ? AND crt_s >= (
|
||||
SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine IN (" .
|
||||
self::STTS_EN_IDLING .
|
||||
"," .
|
||||
self::STTS_EN_MOVING .
|
||||
") AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
) ORDER BY id ASC LIMIT 1 ";
|
||||
$_query = DB::select($_query, [$_list->vid, $_list->vid, $_list->lst_loc_crt_s]);
|
||||
$_list->lst_stop_at = count($_query) == 0 ? "" : $_query[0]->lst_stop_at;
|
||||
|
||||
$_query =
|
||||
" SELECT COUNT(id) as lst_heartbeat FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE vhc_id = ? AND action = 'heartbeat' AND crt BETWEEN " .
|
||||
($now - 10 * 60) .
|
||||
" AND " .
|
||||
$now .
|
||||
" LIMIT 1";
|
||||
$_query = DB::select($_query, [$_list->vid]);
|
||||
$_list->lst_heartbeat = count($_query) == 0 ? "" : $_query[0]->lst_heartbeat;
|
||||
$_list->vhc_sum_milleage = self::getVehicleMileage($_list->vid);
|
||||
$_list->lst_idle_at = self::getIdleAt($_list->vid, $_list->lst_loc_crt_s);
|
||||
$_list->lst_stop_at = self::getStopAt($_list->vid, $_list->lst_loc_crt_s);
|
||||
$_list->lst_heartbeat = self::getHeartbeat($_list->vid, $now);
|
||||
}
|
||||
// em
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
private static function getVehicleMileage($vhc_id)
|
||||
{
|
||||
$res = DB::select("SELECT sum_milleage as vhc_sum_milleage FROM t_vehicles WHERE id = ? LIMIT 1", [
|
||||
$vhc_id,
|
||||
]);
|
||||
return $res[0]->vhc_sum_milleage ?? 0;
|
||||
}
|
||||
|
||||
private static function getIdleAt($vhc_id, $ref_crt_s)
|
||||
{
|
||||
$res = DB::select(
|
||||
"
|
||||
SELECT crt_s as lst_idle_at
|
||||
FROM t_gps_tracks
|
||||
WHERE stts_engine = 2
|
||||
AND vhc_id = ?
|
||||
AND crt_s >= (
|
||||
SELECT crt_s FROM t_gps_tracks
|
||||
WHERE stts_engine IN (0, 1) AND vhc_id = ? AND crt_s <= ?
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
ORDER BY id ASC LIMIT 1
|
||||
",
|
||||
[$vhc_id, $vhc_id, $ref_crt_s]
|
||||
);
|
||||
|
||||
return count($res) > 0 ? $res[0]->lst_idle_at : "";
|
||||
}
|
||||
|
||||
private static function getStopAt($vhc_id, $ref_crt_s)
|
||||
{
|
||||
$res = DB::select(
|
||||
"
|
||||
SELECT crt_s as lst_stop_at
|
||||
FROM t_gps_tracks
|
||||
WHERE stts_engine = 0 AND vhc_id = ?
|
||||
AND crt_s >= (
|
||||
SELECT crt_s FROM t_gps_tracks
|
||||
WHERE stts_engine IN (2,1) AND vhc_id = ? AND crt_s <= ?
|
||||
ORDER BY id DESC LIMIT 1
|
||||
)
|
||||
ORDER BY id ASC LIMIT 1
|
||||
",
|
||||
[$vhc_id, $vhc_id, $ref_crt_s]
|
||||
);
|
||||
|
||||
return count($res) > 0 ? $res[0]->lst_stop_at : "";
|
||||
}
|
||||
|
||||
private static function getHeartbeat($vhc_id, $now)
|
||||
{
|
||||
$start = $now - 600;
|
||||
$res = DB::select(
|
||||
"
|
||||
SELECT COUNT(id) as lst_heartbeat
|
||||
FROM t_gps_tracks
|
||||
WHERE vhc_id = ?
|
||||
AND action = 'heartbeat'
|
||||
AND crt BETWEEN ? AND ?
|
||||
LIMIT 1
|
||||
",
|
||||
[$vhc_id, $start, $now]
|
||||
);
|
||||
|
||||
return count($res) > 0 ? $res[0]->lst_heartbeat : 0;
|
||||
}
|
||||
|
||||
public static function lastMoveTracks($vid, $filter = [])
|
||||
{
|
||||
$now = time();
|
||||
|
||||
@ -63,17 +63,6 @@ class Tracks_copy extends Model
|
||||
$query .= " ,tr.ignition,tr.stts_engine,tr.stts_gps,tr.stts_gsm";
|
||||
$query .= " ,tr.pre_milleage,tr.sum_milleage,tr.vhc_milleage,v.sum_milleage AS vhc_sum_milleage_1";
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT SUM(pre_milleage) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id LIMIT 1) as vhc_sum_milleage";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_IDLING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_STOPING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_idle_at";
|
||||
|
||||
// $query .= " ,(SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine = " . self::STTS_EN_STOPING . " AND vhc_id = v.id AND crt_s >= (
|
||||
// SELECT crt_s FROM " . self::T_TRACKS . " WHERE stts_engine IN (" . self::STTS_EN_IDLING . "," . self::STTS_EN_MOVING . ") AND vhc_id = v.id AND crt_s <= tr.crt_s ORDER BY id DESC LIMIT 1
|
||||
// ) ORDER BY id ASC LIMIT 1) as lst_stop_at";
|
||||
|
||||
$query .=
|
||||
" ,tr.id AS lst_master_id,tr.latitude AS lst_lat,tr.longitude AS lst_lng,tr.speed AS lst_speed,tr.orientation AS lst_orientation";
|
||||
$query .= " ,tr.crt AS lst_loc_crt,tr.crt_d AS lst_loc_crt_d,tr.crt_s AS lst_loc_crt_s";
|
||||
@ -83,9 +72,6 @@ class Tracks_copy extends Model
|
||||
" ,tr_addr.district_text AS lst_district_text,tr_addr.village_text AS lst_village_text,tr_addr.postcode AS lst_postcode";
|
||||
$query .= " ,tr_addr.streets AS lst_streets,tr_addr.fulladdress AS lst_fulladdress";
|
||||
|
||||
// FRO
|
||||
// $query .= " ,(SELECT COUNT(id) FROM " . self::T_TRACKS . " WHERE vhc_id = v.id AND action = 'heartbeat' AND crt BETWEEN ".($now-(10*60))." AND ".$now." LIMIT 1) as lst_heartbeat"; // heartbeat last data on further 10 minutes
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
$query .=
|
||||
",rate.vdr_id as rate_vdr_id,rate.vhc_type as rate_vhc_type,rate.origin_prov as rate_origin_prov,rate.dest_city as rate_dest_city,rate.dest_district as rate_dest_district";
|
||||
@ -107,45 +93,23 @@ class Tracks_copy extends Model
|
||||
$query .= " INNER JOIN t_vehicles_cats AS c ON v.cat_id = c.id";
|
||||
$query .= " LEFT JOIN t_users AS vendor ON v.vendor_id = vendor.id";
|
||||
$query .= " LEFT JOIN t_clients AS client ON vendor.client_group_id = client.id";
|
||||
// get last updated row from many rows
|
||||
// $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY device_id ORDER BY crt DESC ) AS tr1 ON (v.device_id = tr1.device_id)"; // cara lama berlaku utk gps tracker saja
|
||||
// // $query .= " LEFT JOIN ( SELECT MAX(crt) max_crt, device_id, vhc_id FROM " . self::T_TRACKS . " WHERE latitude is not null AND longitude is not null GROUP BY vhc_id ORDER BY crt DESC ) AS tr1 ON (v.id = tr1.vhc_id)"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI)
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS . " AS tr ON (tr.crt = tr1.max_crt)";
|
||||
// get last updated tracking from updated table realtime
|
||||
// $query .= " LEFT JOIN db_trucking.t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
$query .= " LEFT JOIN t_gps_tracks_rltm AS tr ON tr.vhc_id = v.id";
|
||||
// $query .= " LEFT JOIN " . self::T_TRACKS_ADDR . " AS tr_addr ON tr.id = tr_addr.master_id";
|
||||
|
||||
//FRO
|
||||
$query .=
|
||||
" LEFT JOIN " .
|
||||
self::T_TRACKS_ADDR .
|
||||
" AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
|
||||
if (isset($filter["active_rates"])) {
|
||||
// $query .= " INNER JOIN t_conf_rates as rate ON v.type_id = rate.vhc_type";
|
||||
$query .= " INNER JOIN t_conf_rates as rate ON v.vendor_id = rate.vdr_id";
|
||||
}
|
||||
if (isset($filter["get_order_data"])) {
|
||||
// the old way => only 1 order 1 vehicle
|
||||
$query .= " LEFT JOIN t_orders as ord ON v.ord_id = ord.id";
|
||||
$query .= " LEFT JOIN t_orders_pickups as ord_pck ON v.ord_id = ord_pck.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drops as ord_drop ON v.ord_id = ord_drop.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_drivers as ord_drv ON v.ord_id = ord_drv.ord_id";
|
||||
$query .= " LEFT JOIN t_orders_clients as ord_c ON v.ord_id = ord_c.ord_id";
|
||||
|
||||
// the new way => can handle 2 order in 1 vehicle
|
||||
// $query .= " LEFT JOIN t_orders_vehicles as ord_vhc ON v.id = ord_vhc.vhc_id";
|
||||
// $query .= " LEFT JOIN t_orders as ord ON ord_vhc.ord_id = ord.id";
|
||||
// $query .= " LEFT JOIN t_orders_pickups as ord_pck ON ord_vhc.ord_id = ord_pck.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drops as ord_drop ON ord_vhc.ord_id = ord_drop.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_drivers as ord_drv ON ord_vhc.ord_id = ord_drv.ord_id";
|
||||
// $query .= " LEFT JOIN t_orders_clients as ord_c ON ord_vhc.ord_id = ord_c.ord_id";
|
||||
}
|
||||
$query .= " WHERE v.dlt is null";
|
||||
// $query .= " AND tr.action IN ('location','alarm')"; // kalo gamau ngambil data heartbeat(idling)
|
||||
// $query .= " AND tr.device_id = v.device_id"; // cara lama berlaku utk gps tracker saja
|
||||
// $query .= " AND tr.vhc_id = v.id"; // support gps tracker dan smartphone / apapun yang mempunyai device_id(IMEI) // bikin lemot
|
||||
$query .= " AND tr.latitude != 0 AND tr.latitude is not null";
|
||||
if (isset($filter["status"])) {
|
||||
$query .= " AND v.status = ?";
|
||||
@ -184,11 +148,6 @@ class Tracks_copy extends Model
|
||||
$params[] = $filter["own_by_vdr_id"];
|
||||
}
|
||||
if (isset($filter["active_rates"])) {
|
||||
// v1
|
||||
// $query .= " AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.dest_district != 0";
|
||||
// $query .= " AND rate.origin_prov = ? AND (rate.dest_city = ? OR rate.dest_district = ?) AND rate.sell_kg = ? AND rate.sell_cbm = ? AND rate.long_time = ?";
|
||||
// array_push($params, $filter['active_rates']->origin_prov, $filter['active_rates']->dest_city, $filter['active_rates']->dest_district, $filter['active_rates']->sell_kg, $filter['active_rates']->sell_cbm, $filter['active_rates']->long_time);
|
||||
// v2
|
||||
$query .=
|
||||
" AND rate.vdr_id != 0 AND rate.dest_city != 0 AND rate.is_active = " . ConfRates::IS_ACTIVE;
|
||||
$query .=
|
||||
@ -211,21 +170,16 @@ class Tracks_copy extends Model
|
||||
$query .= " AND ord_c.c_id = ?";
|
||||
$params[] = $filter["client_id"];
|
||||
}
|
||||
// $query .= " AND ord.status IN (22,4)";
|
||||
}
|
||||
if (isset($filter["company"])) {
|
||||
$query .= " AND client.id = ?";
|
||||
$params[] = $filter["company"];
|
||||
}
|
||||
|
||||
// $query .= " AND v.id = 70";
|
||||
|
||||
$query .= " GROUP BY v.id";
|
||||
$query .= " ORDER BY tr.crt_d DESC";
|
||||
$query .= " LIMIT 500;";
|
||||
|
||||
// dd($query);
|
||||
|
||||
$list = DB::select($query, $params);
|
||||
foreach ($list as $_list) {
|
||||
$_query =
|
||||
@ -301,7 +255,6 @@ class Tracks_copy extends Model
|
||||
$_query = DB::select($_query, [$_list->vid]);
|
||||
$_list->lst_heartbeat = count($_query) == 0 ? "" : $_query[0]->lst_heartbeat;
|
||||
}
|
||||
// em
|
||||
return $list;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
set_time_limit(120);
|
||||
set_time_limit(300);
|
||||
/**
|
||||
* Laravel - A PHP Framework For Web Artisans
|
||||
*
|
||||
|
||||
@ -7,9 +7,8 @@
|
||||
@section('customcss')
|
||||
<style>
|
||||
/* .select2-container {
|
||||
z-index: 99999;
|
||||
} */
|
||||
|
||||
z-index: 99999;
|
||||
} */
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
@ -39,13 +38,11 @@
|
||||
<h6>User Infomation</h6>
|
||||
<div class="mb-3">
|
||||
<label for="updt-first_name" class="form-label">Name</label>
|
||||
<input type="text" class="form-control form-control-sm" name="updt-first_name"
|
||||
id="updt-first_name">
|
||||
<input type="text" class="form-control form-control-sm" name="updt-first_name" id="updt-first_name">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="updt-phone" class="form-label">Phone</label>
|
||||
<input type="number" class="form-control form-control-sm" name="updt-phone" id="updt-phone"
|
||||
placeholder="without zero">
|
||||
<input type="number" class="form-control form-control-sm" name="updt-phone" id="updt-phone" placeholder="without zero">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="updt-email" class="form-label">Email</label>
|
||||
@ -53,8 +50,7 @@
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="updt-fulladdress" class="form-label">Address</label>
|
||||
<textarea name="updt-fulladdress" id="updt-fulladdress"
|
||||
class="form-control form-control-sm" rows="3"></textarea>
|
||||
<textarea name="updt-fulladdress" id="updt-fulladdress" class="form-control form-control-sm" rows="3"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
@ -70,15 +66,13 @@
|
||||
<div class="col">
|
||||
<div class="mb-3">
|
||||
<label for="updt-password" class="form-label">Password</label>
|
||||
<input type="password" class="form-control form-control-sm" name="updt-password"
|
||||
id="updt-password">
|
||||
<input type="password" class="form-control form-control-sm" name="updt-password" id="updt-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="mb-3">
|
||||
<label for="updt-conf_password" class="form-label">Password Confirmation</label>
|
||||
<input type="password" class="form-control form-control-sm" name="updt-conf_password"
|
||||
id="updt-conf_password">
|
||||
<input type="password" class="form-control form-control-sm" name="updt-conf_password" id="updt-conf_password">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -252,7 +246,7 @@
|
||||
}
|
||||
$('#btnSubmitUpdtUser').attr('disabed', true);
|
||||
$.ajax({
|
||||
url: "{{ route('api_edit_user', '') }}/" + data.uid,
|
||||
url: "{{ route('api_edit_user_profile', '') }}/" + data.uid,
|
||||
method: 'PUT',
|
||||
crossDomain: true,
|
||||
processData: true,
|
||||
@ -291,7 +285,7 @@
|
||||
})
|
||||
});
|
||||
},
|
||||
removeReadOnly: function () {
|
||||
removeReadOnly: function() {
|
||||
$('#updt-first_name').removeAttr('readonly');
|
||||
$('#updt-fulladdress').removeAttr('readonly');
|
||||
$('#updt-phone').removeAttr('readonly');
|
||||
@ -302,7 +296,7 @@
|
||||
});
|
||||
$('#btnSubmitUpdtUser').removeClass('d-none');
|
||||
},
|
||||
addReadOnly: function () {
|
||||
addReadOnly: function() {
|
||||
$('#updt-first_name').attr('readonly', true);
|
||||
$('#updt-fulladdress').attr('readonly', true);
|
||||
$('#updt-phone').attr('readonly', true);
|
||||
|
||||
@ -434,6 +434,11 @@
|
||||
<span id="c_vhc_zone">-</span>
|
||||
</div>
|
||||
<div class="col-auto text-start align-items-center d-flex">
|
||||
<a href="javascript:void(0);" class="mb-0 text-bold text-dark me-2" id="filterVhcMarker" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Marker Info">
|
||||
<span class="ion-android-pin me-2 text-muted" style="font-size: 17px"></span>
|
||||
</a>
|
||||
</div>
|
||||
{{-- <div class="col-auto text-start align-items-center d-flex">
|
||||
<a href="javascript:void(0);" class="mb-0 text-bold text-dark" id="filterVhcGps" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Vehicle GPS Filter">
|
||||
<span class="ion-pinpoint me-1 text-muted" style="font-size: 17px"></span>
|
||||
</a>
|
||||
@ -444,15 +449,15 @@
|
||||
<span class="ion-android-wifi me-1 text-muted" style="font-size: 17px"></span>
|
||||
</a>
|
||||
<span id="c_vhc_gsm">-</span>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-auto">
|
||||
<div class="">
|
||||
<div class="col text-end align-items-center d-flex">
|
||||
<a href="javascript:void(0);" class="mb-0 text-bold text-dark me-2" id="filterVhcMarker" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Marker Info">
|
||||
{{-- <a href="javascript:void(0);" class="mb-0 text-bold text-dark me-2" id="filterVhcMarker" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Marker Info">
|
||||
<span class="ion-android-pin me-2 text-muted" style="font-size: 17px"></span>
|
||||
</a>
|
||||
</a> --}}
|
||||
<a href="javascript:void(0);" class="text-decoration-none text-dark fz-18" id="closeRightSideBar1">
|
||||
<span class="icon ion-ios-arrow-right"></span>
|
||||
</a>
|
||||
@ -2033,7 +2038,7 @@
|
||||
},
|
||||
error: (jqXHR, textStatus, error) => {
|
||||
if (jqXHR.status >= 500) {
|
||||
Helper.toast('Error', 'just now', 'Cannot get lists trucks');
|
||||
Helper.toast('Error', 'just now', 'Cannot get lists vehicles');
|
||||
} else {
|
||||
Helper.toast('Error', 'just now', jqXHR.responseJSON.meta
|
||||
.message);
|
||||
|
||||
@ -21,13 +21,6 @@
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('transaction.view')
|
||||
<li class="nav-item {{ Request::path() == 'user/vendor/transactions' || Request::path() == 'transactions/add/special' ? 'active' : '' }}">
|
||||
<a class="nav-link d-flex align-items-center text-capitalize" aria-current="page" href="{{ url('user/vendor/transactions') }}">
|
||||
Transaction
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@can('zone.view')
|
||||
<li class="nav-item {{ Request::segment(1) == 'zone' ? 'active' : '' }}">
|
||||
<a class="nav-link d-flex align-items-center text-capitalize" aria-current="page" href="{{ route('view_zone') }}">
|
||||
|
||||
@ -252,6 +252,9 @@ Route::middleware(["auth", "auth.user"])->group(function () {
|
||||
Route::get("/api/users/{uid}", "UsersController@api_show_user")->name("api_show_user");
|
||||
Route::post("/api/users", "UsersController@api_add_user")->name("api_add_user");
|
||||
Route::put("/api/users/{uid}", "UsersController@api_edit_user")->name("api_edit_user");
|
||||
Route::put("/api/users/profile/{uid}", "UsersController@api_edit_user_profile")->name(
|
||||
"api_edit_user_profile"
|
||||
);
|
||||
Route::delete("/api/users/{uid}", "UsersController@api_del_user")->name("api_del_user");
|
||||
Route::post("/api/users/search/name", "UsersController@api_search_user_name")->name(
|
||||
"api_search_user_name"
|
||||
|
||||
Reference in New Issue
Block a user