Compare commits
10 Commits
c97dd332f0
...
f906c80835
| Author | SHA1 | Date | |
|---|---|---|---|
| f906c80835 | |||
| 5cbf7600ae | |||
| 79596192d3 | |||
| f257a1b7f2 | |||
| 1f3bf298f8 | |||
| 3e6ea0b3d4 | |||
| db6fe59062 | |||
| 62e45a8777 | |||
| af271871dd | |||
| bc6a88e1db |
@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@ -15,14 +14,10 @@ use App\Models\Clients;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Banks;
|
||||
use App\Models\UsersMenuPermissions;
|
||||
use Spatie\Permission\PermissionRegistrar;
|
||||
|
||||
class RolesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function view(Request $req)
|
||||
{
|
||||
$permissions = \Spatie\Permission\Models\Permission::all();
|
||||
@ -35,17 +30,13 @@ class RolesController extends Controller
|
||||
"vehicles" => Vehicles::getVehicles(),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
"permission" => $permissions->groupBy(function ($perm) {
|
||||
return explode(".", $perm->name)[0]; // ambil modul: user, transaction, dst
|
||||
return explode(".", $perm->name)[0];
|
||||
}),
|
||||
];
|
||||
|
||||
return view("menu_v1.roles", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list(Request $req)
|
||||
{
|
||||
try {
|
||||
@ -69,16 +60,9 @@ class RolesController extends Controller
|
||||
public function api_show(Request $req, $uid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = ["uid" => $uid];
|
||||
$rulesInput = ["uid" => "required|integer|not_in:0"];
|
||||
|
||||
$input = [
|
||||
"uid" => $uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
@ -88,7 +72,6 @@ class RolesController extends Controller
|
||||
$role = DB::table("roles")
|
||||
->where("roles.id", $uid)
|
||||
->get();
|
||||
|
||||
if (count($role) < 1) {
|
||||
$apiResp = Responses::not_found("role not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
@ -96,7 +79,7 @@ class RolesController extends Controller
|
||||
|
||||
$permissions = DB::table("role_has_permissions")
|
||||
->where("role_id", $uid)
|
||||
->pluck("permission_id") // ambil array [1, 6, ...]
|
||||
->pluck("permission_id")
|
||||
->toArray();
|
||||
$role[0]->permissions = $permissions;
|
||||
|
||||
@ -113,24 +96,28 @@ class RolesController extends Controller
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
// Users::addUser($data);
|
||||
|
||||
$role_id = DB::table("roles")->insertGetId([
|
||||
"name" => $req->name,
|
||||
"guard_name" => "web",
|
||||
"created_at" => date("Y-m-d H:i:s"),
|
||||
"updated_at" => date("Y-m-d H:i:s"),
|
||||
"created_at" => now(),
|
||||
"updated_at" => now(),
|
||||
]);
|
||||
|
||||
$role_has_permissions = [];
|
||||
foreach ($req->permissions as $_permission) {
|
||||
array_push($role_has_permissions, ["permission_id" => $_permission, "role_id" => $role_id]);
|
||||
$role_has_permissions[] = [
|
||||
"permission_id" => $_permission,
|
||||
"role_id" => $role_id,
|
||||
];
|
||||
}
|
||||
|
||||
DB::table("role_has_permissions")->insert($role_has_permissions);
|
||||
|
||||
$apiResp = Responses::created("success add new role");
|
||||
DB::commit();
|
||||
|
||||
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
||||
|
||||
$apiResp = Responses::created("success add new role");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
@ -147,7 +134,7 @@ class RolesController extends Controller
|
||||
DB::table("roles")
|
||||
->where("id", $req->uid)
|
||||
->update([
|
||||
"name" => $req->name, // ganti sesuai field yang mau diubah
|
||||
"name" => $req->name,
|
||||
"updated_at" => now(),
|
||||
]);
|
||||
|
||||
@ -164,9 +151,11 @@ class RolesController extends Controller
|
||||
}
|
||||
DB::table("role_has_permissions")->insert($role_has_permissions);
|
||||
|
||||
$apiResp = Responses::created("success update role");
|
||||
|
||||
DB::commit();
|
||||
|
||||
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
||||
|
||||
$apiResp = Responses::created("success update role");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
@ -178,19 +167,9 @@ class RolesController extends Controller
|
||||
public function api_del(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$input = ["uid" => $req->uid];
|
||||
$rulesInput = ["uid" => "required|integer|not_in:0"];
|
||||
|
||||
$input = [
|
||||
"uid" => $req->uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
];
|
||||
$data = [
|
||||
"id" => $req->uid,
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
@ -201,7 +180,7 @@ class RolesController extends Controller
|
||||
->where("id", $req->uid)
|
||||
->get();
|
||||
if (count($role) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
$apiResp = Responses::not_found("role not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
@ -210,14 +189,15 @@ class RolesController extends Controller
|
||||
DB::table("role_has_permissions")
|
||||
->where("role_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
DB::table("roles")
|
||||
->where("id", $req->uid)
|
||||
->delete();
|
||||
|
||||
$apiResp = Responses::created("success delete role");
|
||||
|
||||
DB::commit();
|
||||
|
||||
app()[PermissionRegistrar::class]->forgetCachedPermissions();
|
||||
|
||||
$apiResp = Responses::created("success delete role");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
@ -229,10 +209,9 @@ class RolesController extends Controller
|
||||
public function api_search(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
DB::beginTransaction();
|
||||
|
||||
$roles = Users::arrRoles();
|
||||
$input = [
|
||||
"name" => $req->name,
|
||||
"roles" => $req->roles,
|
||||
@ -242,41 +221,32 @@ class RolesController extends Controller
|
||||
"roles" => "nullable|integer|not_in:0",
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->roles) {
|
||||
if (in_array($req->roles, $roles)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$users = Users::likeName($req->name, $req->roles);
|
||||
} else {
|
||||
$users = Users::likeName($req->name);
|
||||
if ($req->roles && !in_array($req->roles, $roles)) {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$users = $req->roles ? Users::likeName($req->name, $req->roles) : Users::likeName($req->name);
|
||||
|
||||
if (count($users) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
foreach ($users as $k => $v) {
|
||||
// remove from array but no reindex array
|
||||
// unset($users[$k]);
|
||||
// remove from array and reindex array
|
||||
// array_splice($users, $k, 1);
|
||||
unset($users[$k]->password);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
$apiResp = Responses::success("success search user by name");
|
||||
$apiResp["data"] = $users;
|
||||
|
||||
DB::commit();
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
@ -284,4 +254,4 @@ class RolesController extends Controller
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
287
app/Http/Controllers/RolesController_bak.php
Executable file
287
app/Http/Controllers/RolesController_bak.php
Executable file
@ -0,0 +1,287 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Validator;
|
||||
use App\Responses;
|
||||
use App\Helper;
|
||||
use App\Models\Users;
|
||||
use App\Models\Clients;
|
||||
use App\Models\Vehicles;
|
||||
use App\Models\Banks;
|
||||
use App\Models\UsersMenuPermissions;
|
||||
|
||||
class RolesController_bak extends Controller
|
||||
{
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function view(Request $req)
|
||||
{
|
||||
$permissions = \Spatie\Permission\Models\Permission::all();
|
||||
|
||||
$data = [
|
||||
"roles" => Users::listRoles($req->auth->role),
|
||||
"pernus" => UsersMenuPermissions::listPermissionsMenus([
|
||||
"is_active" => UsersMenuPermissions::IS_ACTIVE,
|
||||
]),
|
||||
"vehicles" => Vehicles::getVehicles(),
|
||||
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
|
||||
"permission" => $permissions->groupBy(function ($perm) {
|
||||
return explode(".", $perm->name)[0]; // ambil modul: user, transaction, dst
|
||||
}),
|
||||
];
|
||||
|
||||
return view("menu_v1.roles", $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* API
|
||||
*/
|
||||
|
||||
public function api_list(Request $req)
|
||||
{
|
||||
try {
|
||||
$list = DB::table("roles")->get();
|
||||
foreach ($list as $key => $row) {
|
||||
$list[$key]->DT_RowIndex = $key + 1;
|
||||
$list[$key]->count_trx = 0;
|
||||
$list[$key]->action = "-";
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success list users");
|
||||
$apiResp["data"] = $list;
|
||||
$apiResp["count"] = count($list);
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_show(Request $req, $uid)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"uid" => $uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$role = DB::table("roles")
|
||||
->where("roles.id", $uid)
|
||||
->get();
|
||||
|
||||
if (count($role) < 1) {
|
||||
$apiResp = Responses::not_found("role not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$permissions = DB::table("role_has_permissions")
|
||||
->where("role_id", $uid)
|
||||
->pluck("permission_id") // ambil array [1, 6, ...]
|
||||
->toArray();
|
||||
$role[0]->permissions = $permissions;
|
||||
|
||||
$apiResp = Responses::success("success get detail role");
|
||||
$apiResp["data"] = $role[0];
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
} catch (\Exception $e) {
|
||||
$apiResp = Responses::error($e->getMessage());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
}
|
||||
|
||||
public function api_add(Request $req)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
// Users::addUser($data);
|
||||
|
||||
$role_id = DB::table("roles")->insertGetId([
|
||||
"name" => $req->name,
|
||||
"guard_name" => "web",
|
||||
"created_at" => date("Y-m-d H:i:s"),
|
||||
"updated_at" => date("Y-m-d H:i:s"),
|
||||
]);
|
||||
|
||||
$role_has_permissions = [];
|
||||
foreach ($req->permissions as $_permission) {
|
||||
array_push($role_has_permissions, ["permission_id" => $_permission, "role_id" => $role_id]);
|
||||
}
|
||||
|
||||
DB::table("role_has_permissions")->insert($role_has_permissions);
|
||||
|
||||
$apiResp = Responses::created("success add new role");
|
||||
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(Request $req)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
DB::table("roles")
|
||||
->where("id", $req->uid)
|
||||
->update([
|
||||
"name" => $req->name, // ganti sesuai field yang mau diubah
|
||||
"updated_at" => now(),
|
||||
]);
|
||||
|
||||
DB::table("role_has_permissions")
|
||||
->where("role_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
$role_has_permissions = [];
|
||||
foreach ($req->permissions as $pid) {
|
||||
$role_has_permissions[] = [
|
||||
"role_id" => $req->uid,
|
||||
"permission_id" => $pid,
|
||||
];
|
||||
}
|
||||
DB::table("role_has_permissions")->insert($role_has_permissions);
|
||||
|
||||
$apiResp = Responses::created("success update role");
|
||||
|
||||
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_del(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
|
||||
$input = [
|
||||
"uid" => $req->uid,
|
||||
];
|
||||
$rulesInput = [
|
||||
"uid" => "required|integer|not_in:0",
|
||||
];
|
||||
$data = [
|
||||
"id" => $req->uid,
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
$role = DB::table("roles")
|
||||
->where("id", $req->uid)
|
||||
->get();
|
||||
if (count($role) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
DB::table("role_has_permissions")
|
||||
->where("role_id", $req->uid)
|
||||
->delete();
|
||||
|
||||
DB::table("roles")
|
||||
->where("id", $req->uid)
|
||||
->delete();
|
||||
|
||||
$apiResp = Responses::created("success delete role");
|
||||
|
||||
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_search(Request $req)
|
||||
{
|
||||
try {
|
||||
$now = time();
|
||||
$roles = Users::arrRoles();
|
||||
$statuses = Users::arrStatus();
|
||||
|
||||
$input = [
|
||||
"name" => $req->name,
|
||||
"roles" => $req->roles,
|
||||
];
|
||||
$rulesInput = [
|
||||
"name" => "required|string|max:125",
|
||||
"roles" => "nullable|integer|not_in:0",
|
||||
];
|
||||
|
||||
// validasi input
|
||||
$isValidInput = Validator::make($input, $rulesInput);
|
||||
if (!$isValidInput->passes()) {
|
||||
$apiResp = Responses::bad_input($isValidInput->messages()->first());
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
if ($req->roles) {
|
||||
if (in_array($req->roles, $roles)) {
|
||||
} else {
|
||||
$apiResp = Responses::bad_request("role not valid");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
$users = Users::likeName($req->name, $req->roles);
|
||||
} else {
|
||||
$users = Users::likeName($req->name);
|
||||
}
|
||||
|
||||
if (count($users) < 1) {
|
||||
$apiResp = Responses::not_found("user not found");
|
||||
return new Response($apiResp, $apiResp["meta"]["code"]);
|
||||
}
|
||||
|
||||
foreach ($users as $k => $v) {
|
||||
// remove from array but no reindex array
|
||||
// unset($users[$k]);
|
||||
// remove from array and reindex array
|
||||
// array_splice($users, $k, 1);
|
||||
unset($users[$k]->password);
|
||||
}
|
||||
|
||||
$apiResp = Responses::success("success search user by name");
|
||||
$apiResp["data"] = $users;
|
||||
|
||||
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"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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 = "-";
|
||||
@ -141,13 +131,14 @@ class TrackController extends Controller
|
||||
}
|
||||
|
||||
$filter = [
|
||||
"limit" => 500,
|
||||
"limit" => 10000,
|
||||
];
|
||||
// default 500, jika ada filter date maka max 5K
|
||||
// default 10000, jika ada filter date maka max 100K
|
||||
if (
|
||||
$req->start_date != null &&
|
||||
$req->start_date != "" &&
|
||||
($req->end_date != null && $req->end_date != "")
|
||||
($req->end_date != null && //
|
||||
$req->end_date != "")
|
||||
) {
|
||||
$filter["start_date"] = $req->start_date;
|
||||
$filter["end_date"] = $req->end_date;
|
||||
@ -155,7 +146,13 @@ class TrackController extends Controller
|
||||
$filter["start_date"] = strtotime(gmdate("Y-m-d H:i:s", $req->start_date));
|
||||
$filter["end_date"] = strtotime(gmdate("Y-m-d H:i:s", $req->end_date));
|
||||
|
||||
$filter["limit"] = 5000;
|
||||
$filter["limit"] = 100000;
|
||||
} else {
|
||||
$todayStart = strtotime(gmdate("Y-m-d 00:00:00"));
|
||||
$todayEnd = strtotime(gmdate("Y-m-d 23:59:59"));
|
||||
|
||||
$filter["start_date"] = $todayStart;
|
||||
$filter["end_date"] = $todayEnd;
|
||||
}
|
||||
|
||||
$list = Tracks::lastMoveTracks($req->vid, $filter);
|
||||
|
||||
@ -219,20 +219,20 @@ 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_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"]);
|
||||
}
|
||||
}
|
||||
// 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_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"]);
|
||||
// }
|
||||
// }
|
||||
|
||||
if ($req->clients) {
|
||||
$clients = Clients::getClientById($req->clients);
|
||||
@ -454,23 +454,162 @@ 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");
|
||||
$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"]);
|
||||
}
|
||||
if (!$req->bank_branch_name) {
|
||||
$apiResp = Responses::bad_request("bank kcp wajib diisi");
|
||||
}
|
||||
$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"]);
|
||||
}
|
||||
if (!$req->bank_acc_number) {
|
||||
$apiResp = Responses::bad_request("nomor rekening wajib diisi");
|
||||
}
|
||||
|
||||
$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"]);
|
||||
}
|
||||
if (!$req->bank_acc_name) {
|
||||
$apiResp = Responses::bad_request("nama pemilik rekening wajib diisi");
|
||||
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);
|
||||
@ -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,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@ -235,7 +235,7 @@ class VehiclesController extends Controller
|
||||
"nopol1" => strtoupper($req->nopol1),
|
||||
// "nopol2" => strtoupper($req->nopol2),
|
||||
// "nopol3" => strtoupper($req->nopol3),
|
||||
"sum_milleage" => $req->sum_milleage ?? 0,
|
||||
"sum_milleage" => $req->mileage ?? 0,
|
||||
"c_did" => $req->d_current ?? 0,
|
||||
"a_did" => $req->d_assign ?? 0,
|
||||
"is_track_holiday" => Vehicles::DEFAULT_TRACK_HOLIDAY,
|
||||
@ -353,6 +353,7 @@ class VehiclesController extends Controller
|
||||
"type_id" => $req->type_id,
|
||||
"model_id" => $req->model_id,
|
||||
"speed_limit" => $req->speed_limit,
|
||||
"sum_milleage" => $req->mileage,
|
||||
"fuel_capacity" => $req->fuel_capacity,
|
||||
"fuel_drop_treshold" => $req->fuel_drop_treshold,
|
||||
"max_pressure" => $req->max_pressure,
|
||||
@ -386,6 +387,7 @@ class VehiclesController extends Controller
|
||||
"type_id" => "required|integer",
|
||||
"model_id" => "nullable|integer",
|
||||
"speed_limit" => "required|numeric",
|
||||
"sum_milleage" => "required|numeric",
|
||||
// "fuel_capacity" => "required|numeric",
|
||||
// "fuel_drop_treshold" => "required|numeric",
|
||||
// "max_pressure" => "required|numeric",
|
||||
@ -495,7 +497,7 @@ class VehiclesController extends Controller
|
||||
"nopol3" => strtoupper($req->nopol3),
|
||||
"c_did" => $req->d_current ?? 0,
|
||||
"a_did" => $req->d_assign ?? 0,
|
||||
"sum_milleage" => $req->sum_milleage ?? 0,
|
||||
"sum_milleage" => $req->mileage ?? 0,
|
||||
"is_track_holiday" => Vehicles::DEFAULT_TRACK_HOLIDAY,
|
||||
"track_sch_d" => Vehicles::DEFAULT_TRACK_SCH_D,
|
||||
"track_sch_h" => Vehicles::DEFAULT_TRACK_SCH_H,
|
||||
|
||||
@ -49,104 +49,331 @@ 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";
|
||||
|
||||
// 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
|
||||
$query = "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";
|
||||
|
||||
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";
|
||||
$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, 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 .= ",
|
||||
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,
|
||||
(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_pck.pck_ktid LIMIT 1) AS ord_pck_ktname,
|
||||
(SELECT nmKotamadyaKel FROM t_region WHERE kodeKab = ord_drop.drop_ktid LIMIT 1) AS ord_drop_ktname,
|
||||
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,
|
||||
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 " .
|
||||
" 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 " .
|
||||
self::T_TRACKS_ADDR .
|
||||
" AS tr_addr ON tr.latitude = tr_addr.lat and tr.longitude = tr_addr.lng";
|
||||
" 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";
|
||||
if (isset($filter["get_order_data"])) {
|
||||
$query .= "
|
||||
LEFT JOIN t_orders as ord ON v.ord_id = ord.id
|
||||
LEFT JOIN t_orders_pickups as ord_pck ON v.ord_id = ord_pck.ord_id
|
||||
LEFT JOIN t_orders_drops as ord_drop ON v.ord_id = ord_drop.ord_id
|
||||
LEFT JOIN t_orders_drivers as ord_drv ON v.ord_id = ord_drv.ord_id
|
||||
LEFT JOIN t_orders_clients as ord_c ON v.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";
|
||||
|
||||
$query .= " WHERE v.dlt IS NULL AND tr.latitude != 0 AND tr.latitude IS NOT NULL";
|
||||
|
||||
if (isset($filter["status"])) {
|
||||
$query .= " AND v.status = ?";
|
||||
$params[] = $filter["status"];
|
||||
@ -155,7 +382,7 @@ class Tracks extends Model
|
||||
$query .= " AND v.is_in_ord = ?";
|
||||
$params[] = $filter["is_in_ord"];
|
||||
}
|
||||
if (isset($filter["nopol1"]) && isset($filter["nopol2"]) && isset($filter["nopol3"])) {
|
||||
if (isset($filter["nopol1"], $filter["nopol2"], $filter["nopol3"])) {
|
||||
$query .= " AND v.nopol1 = ? AND v.nopol2 = ? AND v.nopol3 = ?";
|
||||
array_push($params, $filter["nopol1"], $filter["nopol2"], $filter["nopol3"]);
|
||||
}
|
||||
@ -165,15 +392,9 @@ class Tracks extends Model
|
||||
}
|
||||
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)";
|
||||
$placeholders = rtrim(str_repeat("?,", count($filter["vids"])), ",");
|
||||
$query .= " AND v.id IN ($placeholders)";
|
||||
$params = array_merge($params, $filter["vids"]);
|
||||
} else {
|
||||
$query .= " AND v.id = ?";
|
||||
$params[] = 0;
|
||||
@ -184,11 +405,6 @@ class Tracks 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,97 +427,81 @@ class Tracks 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);
|
||||
$query .= " GROUP BY v.id ORDER BY tr.crt_d DESC LIMIT 500";
|
||||
|
||||
$list = DB::select($query, $params);
|
||||
|
||||
// Post-processing per row
|
||||
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;
|
||||
$_list->vhc_sum_milleage =
|
||||
optional(
|
||||
DB::select(
|
||||
"SELECT SUM(pre_milleage) as vhc_sum_milleage FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE vhc_id = ?",
|
||||
[$_list->vid]
|
||||
)
|
||||
)[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;
|
||||
$_list->lst_idle_at =
|
||||
optional(
|
||||
DB::select(
|
||||
"SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine = ? AND vhc_id = ? AND crt_s >= (
|
||||
SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine IN (?, ?) AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
) ORDER BY id ASC LIMIT 1",
|
||||
[
|
||||
self::STTS_EN_IDLING,
|
||||
$_list->vid,
|
||||
self::STTS_EN_STOPING,
|
||||
self::STTS_EN_MOVING,
|
||||
$_list->vid,
|
||||
$_list->lst_loc_crt_s,
|
||||
]
|
||||
)
|
||||
)[0]->crt_s ?? "";
|
||||
|
||||
$_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;
|
||||
$_list->lst_stop_at =
|
||||
optional(
|
||||
DB::select(
|
||||
"SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine = ? AND vhc_id = ? AND crt_s >= (
|
||||
SELECT crt_s FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE stts_engine IN (?, ?) AND vhc_id = ? AND crt_s <= ? ORDER BY id DESC LIMIT 1
|
||||
) ORDER BY id ASC LIMIT 1",
|
||||
[
|
||||
self::STTS_EN_STOPING,
|
||||
$_list->vid,
|
||||
self::STTS_EN_IDLING,
|
||||
self::STTS_EN_MOVING,
|
||||
$_list->vid,
|
||||
$_list->lst_loc_crt_s,
|
||||
]
|
||||
)
|
||||
)[0]->crt_s ?? "";
|
||||
|
||||
$_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->lst_heartbeat =
|
||||
optional(
|
||||
DB::select(
|
||||
"SELECT COUNT(id) as lst_heartbeat FROM " .
|
||||
self::T_TRACKS .
|
||||
" WHERE vhc_id = ? AND action = 'heartbeat' AND crt BETWEEN ? AND ? LIMIT 1",
|
||||
[$_list->vid, $now - 600, $now]
|
||||
)
|
||||
)[0]->lst_heartbeat ?? "";
|
||||
}
|
||||
// em
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
@ -356,7 +556,8 @@ class Tracks extends Model
|
||||
|
||||
if (isset($filter["limit"])) {
|
||||
$query .= " LIMIT ?";
|
||||
$params[] = $filter["limit"] ?? 1000;
|
||||
$params[] = $filter["limit"] ?? 10000;
|
||||
// $params[] = $filter["limit"];
|
||||
}
|
||||
|
||||
$query .= " ;";
|
||||
@ -415,7 +616,8 @@ class Tracks extends Model
|
||||
}
|
||||
}
|
||||
|
||||
return $filtered->take(500);
|
||||
// return $filtered->take(500);
|
||||
return $filtered;
|
||||
}
|
||||
|
||||
public static function nearestInCircle($lat, $lng, $rad, $filter = [])
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
1010
app/Models/Tracks_copy_last.php
Executable file
1010
app/Models/Tracks_copy_last.php
Executable file
File diff suppressed because it is too large
Load Diff
@ -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);
|
||||
@ -2415,7 +2420,7 @@
|
||||
$('#infoVehicles-addr').text(
|
||||
`${Helper.shortenText(decodeURIComponent(truck?.lst_fulladdress || 'address'), 25)}`);
|
||||
$('#infoVehicles-lat_lng').text(Number(truck?.lst_lat).toFixed(5) + ', ' + Number(truck?.lst_lng).toFixed(6));
|
||||
$('#infoVehicles-mileage').text(Number(truck?.vhc_sum_milleage).toFixed(0));
|
||||
$('#infoVehicles-mileage').text(Number(truck?.vhc_sum_milleage_1).toFixed(0));
|
||||
$('#infoVehicles-speedLimit').text(truck?.speed_limit);
|
||||
$('#infoVehicles-currentSpeed').text(truck?.lst_speed);
|
||||
let idlingDur = Wrapper.calcIdlingDur(truck?.lst_idle_at, truck?.lst_speed);
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
@section('customcss')
|
||||
<style>
|
||||
/* .select2-container {
|
||||
z-index: 99999;
|
||||
} */
|
||||
z-index: 99999;
|
||||
} */
|
||||
</style>
|
||||
@endsection
|
||||
|
||||
@ -164,7 +164,7 @@
|
||||
<option value="{{ \App\Models\Users::CHK_TYPE_DROP }}">Drop</option>
|
||||
</select>
|
||||
</div> --}}
|
||||
<div id="add-otherInformationGroup" class="d-none">
|
||||
{{-- <div id="add-otherInformationGroup" class="d-none">
|
||||
<div class="mb-2"> </div>
|
||||
<h6>Informasi Lainnya</h6>
|
||||
<div id="add-bankInformationGroup" class="d-none">
|
||||
@ -189,16 +189,8 @@
|
||||
<label for="add-acc_name" class="form-label">Pemilik Rekening</label>
|
||||
<input type="text" class="form-control form-control-sm" name="add-acc_name" id="add-acc_name">
|
||||
</div>
|
||||
{{-- <div class="mb-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" name="add_isVdrBcng" type="checkbox" value="no" id="add_isVdrBcng">
|
||||
<label class="form-check-label text-danger" for="add_isVdrBcng">
|
||||
Vendor Bonceng ?
|
||||
</label>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
<div class="mb-2"> </div>
|
||||
<h6>Utilities</h6>
|
||||
<div class="mb-3">
|
||||
@ -305,7 +297,7 @@
|
||||
<option value="{{ \App\Models\Users::CHK_TYPE_DROP }}">Drop</option>
|
||||
</select>
|
||||
</div> --}}
|
||||
<div id="updt-otherInformationGroup" class="d-none">
|
||||
{{-- <div id="updt-otherInformationGroup" class="d-none">
|
||||
<div class="mb-2"> </div>
|
||||
<h6>Informasi Lainnya</h6>
|
||||
<div id="updt-bankInformationGroup" class="d-none">
|
||||
@ -330,17 +322,9 @@
|
||||
<label for="updt-acc_name" class="form-label">Pemilik Rekening</label>
|
||||
<input type="text" class="form-control form-control-sm" name="updt-acc_name" id="updt-acc_name">
|
||||
</div>
|
||||
{{-- <div class="mb-3">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" name="updt_isVdrBcng" type="checkbox" value="no" id="updt_isVdrBcng">
|
||||
<label class="form-check-label text-danger" for="updt_isVdrBcng">
|
||||
Vendor Bonceng ?
|
||||
</label>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-2"> </div>
|
||||
<div class="mb-2"> </div> --}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@ -484,27 +468,27 @@
|
||||
else
|
||||
$('#updt-txtStatus').html('Inactive')
|
||||
});
|
||||
$('#add-roles').on('change', function() {
|
||||
let role = $('#add-roles').val();
|
||||
if (role == State.user_roles.checker) {
|
||||
$('#add-group-chk_type').removeClass('d-none');
|
||||
$('#add-group_track_vhc').addClass('d-none');
|
||||
// $('#add-roles').on('change', function() {
|
||||
// let role = $('#add-roles').val();
|
||||
// if (role == State.user_roles.checker) {
|
||||
// $('#add-group-chk_type').removeClass('d-none');
|
||||
// $('#add-group_track_vhc').addClass('d-none');
|
||||
|
||||
$('#add-otherInformationGroup').addClass('d-none');
|
||||
$('#add-bankInformationGroup').addClass('d-none');
|
||||
} else if (role == State.user_roles.vendor) {
|
||||
$('#add-otherInformationGroup').removeClass('d-none');
|
||||
$('#add-bankInformationGroup').removeClass('d-none');
|
||||
// $('#add-otherInformationGroup').addClass('d-none');
|
||||
// $('#add-bankInformationGroup').addClass('d-none');
|
||||
// } else if (role == State.user_roles.vendor) {
|
||||
// $('#add-otherInformationGroup').removeClass('d-none');
|
||||
// $('#add-bankInformationGroup').removeClass('d-none');
|
||||
|
||||
$('#add-group-chk_type').addClass('d-none');
|
||||
$('#add-group_track_vhc').removeClass('d-none');
|
||||
} else {
|
||||
$('#add-group-chk_type').addClass('d-none');
|
||||
$('#add-group_track_vhc').removeClass('d-none');
|
||||
$('#add-otherInformationGroup').addClass('d-none');
|
||||
$('#add-bankInformationGroup').addClass('d-none');
|
||||
}
|
||||
});
|
||||
// $('#add-group-chk_type').addClass('d-none');
|
||||
// $('#add-group_track_vhc').removeClass('d-none');
|
||||
// } else {
|
||||
// $('#add-group-chk_type').addClass('d-none');
|
||||
// $('#add-group_track_vhc').removeClass('d-none');
|
||||
// $('#add-otherInformationGroup').addClass('d-none');
|
||||
// $('#add-bankInformationGroup').addClass('d-none');
|
||||
// }
|
||||
// });
|
||||
$('#updt-roles').on('change', function() {
|
||||
let role = $('#updt-roles').val();
|
||||
if (role == State.user_roles.checker) {
|
||||
|
||||
@ -134,9 +134,19 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-0">
|
||||
<label for="add-speedlimit" class="col-form-label">Speed Limit (kph):</label>
|
||||
<input type="number" id="add-speedlimit" class="form-control">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="mb-0">
|
||||
<label for="add-speedlimit" class="col-form-label">Speed Limit (kph):</label>
|
||||
<input type="number" id="add-speedlimit" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="mb-0">
|
||||
<label for="add-mileage" class="col-form-label">Current Mileage:</label>
|
||||
<input type="number" id="add-mileage" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -339,10 +349,22 @@
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-0">
|
||||
<label for="edt-speedlimit" class="col-form-label">Speed Limit (kph):</label>
|
||||
<input type="number" id="edt-speedlimit" class="form-control">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="mb-0">
|
||||
<label for="edt-speedlimit" class="col-form-label">Speed Limit (kph):</label>
|
||||
<input type="number" id="edt-speedlimit" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="mb-0">
|
||||
<label for="edt-mileage" class="col-form-label">Current Mileage:</label>
|
||||
<input type="number" id="edt-mileage" class="form-control">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -994,6 +1016,7 @@
|
||||
data.append('type_id', safeVal('#add-type'));
|
||||
data.append('model_id', safeVal('#add-model') ?? 0);
|
||||
data.append('speed_limit', safeVal('#add-speedlimit'));
|
||||
data.append('mileage', safeVal('#add-mileage'));
|
||||
data.append('fuel_capacity', safeVal('#add-fuelcapacity') ?? 0);
|
||||
data.append('fuel_drop_treshold', safeVal('#add-fueldroptreshold') ?? 0);
|
||||
data.append('max_pressure', safeVal('#add-maxpressure') ?? 0);
|
||||
@ -1209,6 +1232,7 @@
|
||||
$('#edt-model').val(data?.model_id).trigger('change');
|
||||
|
||||
$('#edt-speedlimit').val(data?.speed_limit);
|
||||
$('#edt-mileage').val(data?.sum_milleage?.toFixed(2));
|
||||
$('#edt-fuelcapacity').val(data?.fuel_capacity);
|
||||
$('#edt-fueldroptreshold').val(data?.fuel_drop_treshold);
|
||||
$('#edt-maxpressure').val(data?.max_pressure);
|
||||
@ -1264,6 +1288,7 @@
|
||||
data.model_id = $('#edt-model').val();
|
||||
|
||||
data.speed_limit = $('#edt-speedlimit').val();
|
||||
data.mileage = $('#edt-mileage').val();
|
||||
data.fuel_capacity = $('#edt-fuelcapacity').val();
|
||||
data.fuel_drop_treshold = $('#edt-fueldroptreshold').val();
|
||||
data.max_pressure = $('#edt-maxpressure').val();
|
||||
|
||||
@ -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') }}">
|
||||
@ -49,13 +42,6 @@
|
||||
</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') }}">
|
||||
Zone
|
||||
</a>
|
||||
</li>
|
||||
@endcan
|
||||
@if (auth()->user()->can('config_truck_type.view') || auth()->user()->can('config_master_device.view') || auth()->user()->can('config_logs_gps.view'))
|
||||
<li class="nav-item dropdown {{ Request::segment(1) == 'config' ? 'active' : '' }}">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="dropdownConfig" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
|
||||
@ -56,7 +56,7 @@ Route::middleware(["auth", "auth.user"])->group(function () {
|
||||
|
||||
Route::get("/transactions/add", "MenuController@view_transactions_add")
|
||||
->name("view_transactions_add")
|
||||
->middleware("permission:transaction.add");
|
||||
->middleware("permission:transaction.create");
|
||||
|
||||
Route::get("/transactions/download_do", "TransactionController@view_transactions_download_do")->name(
|
||||
"view_transactions_download_do"
|
||||
@ -102,7 +102,7 @@ Route::middleware(["auth", "auth.user"])->group(function () {
|
||||
->middleware("permission:zone.view");
|
||||
Route::get("/zone/add", "ZoneController@view_zone_add")
|
||||
->name("view_zone_add")
|
||||
->middleware("permission:zone.add");
|
||||
->middleware("permission:zone.create");
|
||||
Route::get("/zone/edit/{zid}", "ZoneController@view_zone_edit")
|
||||
->name("view_zone_edit")
|
||||
->middleware("permission:zone.edit");
|
||||
@ -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