This commit is contained in:
meusinfirmary
2025-07-16 19:36:14 +07:00
parent c97dd332f0
commit bc6a88e1db
5 changed files with 345 additions and 72 deletions

View File

@ -2,7 +2,6 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -15,14 +14,10 @@ use App\Models\Clients;
use App\Models\Vehicles; use App\Models\Vehicles;
use App\Models\Banks; use App\Models\Banks;
use App\Models\UsersMenuPermissions; use App\Models\UsersMenuPermissions;
use Spatie\Permission\PermissionRegistrar;
class RolesController extends Controller class RolesController extends Controller
{ {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function view(Request $req) public function view(Request $req)
{ {
$permissions = \Spatie\Permission\Models\Permission::all(); $permissions = \Spatie\Permission\Models\Permission::all();
@ -35,17 +30,13 @@ class RolesController extends Controller
"vehicles" => Vehicles::getVehicles(), "vehicles" => Vehicles::getVehicles(),
"banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]), "banks" => Banks::listBanks(["is_active" => Banks::IS_ACTIVE]),
"permission" => $permissions->groupBy(function ($perm) { "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); return view("menu_v1.roles", $data);
} }
/**
* API
*/
public function api_list(Request $req) public function api_list(Request $req)
{ {
try { try {
@ -69,16 +60,9 @@ class RolesController extends Controller
public function api_show(Request $req, $uid) public function api_show(Request $req, $uid)
{ {
try { 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); $isValidInput = Validator::make($input, $rulesInput);
if (!$isValidInput->passes()) { if (!$isValidInput->passes()) {
$apiResp = Responses::bad_input($isValidInput->messages()->first()); $apiResp = Responses::bad_input($isValidInput->messages()->first());
@ -88,7 +72,6 @@ class RolesController extends Controller
$role = DB::table("roles") $role = DB::table("roles")
->where("roles.id", $uid) ->where("roles.id", $uid)
->get(); ->get();
if (count($role) < 1) { if (count($role) < 1) {
$apiResp = Responses::not_found("role not found"); $apiResp = Responses::not_found("role not found");
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
@ -96,7 +79,7 @@ class RolesController extends Controller
$permissions = DB::table("role_has_permissions") $permissions = DB::table("role_has_permissions")
->where("role_id", $uid) ->where("role_id", $uid)
->pluck("permission_id") // ambil array [1, 6, ...] ->pluck("permission_id")
->toArray(); ->toArray();
$role[0]->permissions = $permissions; $role[0]->permissions = $permissions;
@ -113,24 +96,28 @@ class RolesController extends Controller
{ {
try { try {
DB::beginTransaction(); DB::beginTransaction();
// Users::addUser($data);
$role_id = DB::table("roles")->insertGetId([ $role_id = DB::table("roles")->insertGetId([
"name" => $req->name, "name" => $req->name,
"guard_name" => "web", "guard_name" => "web",
"created_at" => date("Y-m-d H:i:s"), "created_at" => now(),
"updated_at" => date("Y-m-d H:i:s"), "updated_at" => now(),
]); ]);
$role_has_permissions = []; $role_has_permissions = [];
foreach ($req->permissions as $_permission) { 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); DB::table("role_has_permissions")->insert($role_has_permissions);
$apiResp = Responses::created("success add new role");
DB::commit(); DB::commit();
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$apiResp = Responses::created("success add new role");
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
@ -147,7 +134,7 @@ class RolesController extends Controller
DB::table("roles") DB::table("roles")
->where("id", $req->uid) ->where("id", $req->uid)
->update([ ->update([
"name" => $req->name, // ganti sesuai field yang mau diubah "name" => $req->name,
"updated_at" => now(), "updated_at" => now(),
]); ]);
@ -164,9 +151,11 @@ class RolesController extends Controller
} }
DB::table("role_has_permissions")->insert($role_has_permissions); DB::table("role_has_permissions")->insert($role_has_permissions);
$apiResp = Responses::created("success update role");
DB::commit(); DB::commit();
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$apiResp = Responses::created("success update role");
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
@ -178,19 +167,9 @@ class RolesController extends Controller
public function api_del(Request $req) public function api_del(Request $req)
{ {
try { 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); $isValidInput = Validator::make($input, $rulesInput);
if (!$isValidInput->passes()) { if (!$isValidInput->passes()) {
$apiResp = Responses::bad_input($isValidInput->messages()->first()); $apiResp = Responses::bad_input($isValidInput->messages()->first());
@ -201,7 +180,7 @@ class RolesController extends Controller
->where("id", $req->uid) ->where("id", $req->uid)
->get(); ->get();
if (count($role) < 1) { 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"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} }
@ -210,14 +189,15 @@ class RolesController extends Controller
DB::table("role_has_permissions") DB::table("role_has_permissions")
->where("role_id", $req->uid) ->where("role_id", $req->uid)
->delete(); ->delete();
DB::table("roles") DB::table("roles")
->where("id", $req->uid) ->where("id", $req->uid)
->delete(); ->delete();
$apiResp = Responses::created("success delete role");
DB::commit(); DB::commit();
app()[PermissionRegistrar::class]->forgetCachedPermissions();
$apiResp = Responses::created("success delete role");
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();
@ -229,10 +209,9 @@ class RolesController extends Controller
public function api_search(Request $req) public function api_search(Request $req)
{ {
try { try {
$now = time(); DB::beginTransaction();
$roles = Users::arrRoles();
$statuses = Users::arrStatus();
$roles = Users::arrRoles();
$input = [ $input = [
"name" => $req->name, "name" => $req->name,
"roles" => $req->roles, "roles" => $req->roles,
@ -242,41 +221,32 @@ class RolesController extends Controller
"roles" => "nullable|integer|not_in:0", "roles" => "nullable|integer|not_in:0",
]; ];
// validasi input
$isValidInput = Validator::make($input, $rulesInput); $isValidInput = Validator::make($input, $rulesInput);
if (!$isValidInput->passes()) { if (!$isValidInput->passes()) {
$apiResp = Responses::bad_input($isValidInput->messages()->first()); $apiResp = Responses::bad_input($isValidInput->messages()->first());
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} }
if ($req->roles) { if ($req->roles && !in_array($req->roles, $roles)) {
if (in_array($req->roles, $roles)) { $apiResp = Responses::bad_request("role not valid");
} else { return new Response($apiResp, $apiResp["meta"]["code"]);
$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);
} }
$users = $req->roles ? Users::likeName($req->name, $req->roles) : Users::likeName($req->name);
if (count($users) < 1) { if (count($users) < 1) {
$apiResp = Responses::not_found("user not found"); $apiResp = Responses::not_found("user not found");
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} }
foreach ($users as $k => $v) { 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); unset($users[$k]->password);
} }
DB::commit();
$apiResp = Responses::success("success search user by name"); $apiResp = Responses::success("success search user by name");
$apiResp["data"] = $users; $apiResp["data"] = $users;
DB::commit();
return new Response($apiResp, $apiResp["meta"]["code"]); return new Response($apiResp, $apiResp["meta"]["code"]);
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();

View 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"]);
}
}
}

View File

@ -353,6 +353,7 @@ class VehiclesController extends Controller
"type_id" => $req->type_id, "type_id" => $req->type_id,
"model_id" => $req->model_id, "model_id" => $req->model_id,
"speed_limit" => $req->speed_limit, "speed_limit" => $req->speed_limit,
"sum_milleage" => $req->mileage,
"fuel_capacity" => $req->fuel_capacity, "fuel_capacity" => $req->fuel_capacity,
"fuel_drop_treshold" => $req->fuel_drop_treshold, "fuel_drop_treshold" => $req->fuel_drop_treshold,
"max_pressure" => $req->max_pressure, "max_pressure" => $req->max_pressure,
@ -386,6 +387,7 @@ class VehiclesController extends Controller
"type_id" => "required|integer", "type_id" => "required|integer",
"model_id" => "nullable|integer", "model_id" => "nullable|integer",
"speed_limit" => "required|numeric", "speed_limit" => "required|numeric",
"sum_milleage" => "required|numeric",
// "fuel_capacity" => "required|numeric", // "fuel_capacity" => "required|numeric",
// "fuel_drop_treshold" => "required|numeric", // "fuel_drop_treshold" => "required|numeric",
// "max_pressure" => "required|numeric", // "max_pressure" => "required|numeric",
@ -495,7 +497,7 @@ class VehiclesController extends Controller
"nopol3" => strtoupper($req->nopol3), "nopol3" => strtoupper($req->nopol3),
"c_did" => $req->d_current ?? 0, "c_did" => $req->d_current ?? 0,
"a_did" => $req->d_assign ?? 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, "is_track_holiday" => Vehicles::DEFAULT_TRACK_HOLIDAY,
"track_sch_d" => Vehicles::DEFAULT_TRACK_SCH_D, "track_sch_d" => Vehicles::DEFAULT_TRACK_SCH_D,
"track_sch_h" => Vehicles::DEFAULT_TRACK_SCH_H, "track_sch_h" => Vehicles::DEFAULT_TRACK_SCH_H,

View File

@ -2415,7 +2415,7 @@
$('#infoVehicles-addr').text( $('#infoVehicles-addr').text(
`${Helper.shortenText(decodeURIComponent(truck?.lst_fulladdress || 'address'), 25)}`); `${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-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-speedLimit').text(truck?.speed_limit);
$('#infoVehicles-currentSpeed').text(truck?.lst_speed); $('#infoVehicles-currentSpeed').text(truck?.lst_speed);
let idlingDur = Wrapper.calcIdlingDur(truck?.lst_idle_at, truck?.lst_speed); let idlingDur = Wrapper.calcIdlingDur(truck?.lst_idle_at, truck?.lst_speed);

View File

@ -339,10 +339,22 @@
@endforeach @endforeach
</select> </select>
</div> </div>
<div class="mb-0"> <div class="row">
<label for="edt-speedlimit" class="col-form-label">Speed Limit (kph):</label> <div class="col-sm-6">
<input type="number" id="edt-speedlimit" class="form-control"> <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>
</div> </div>
</div> </div>
@ -1209,6 +1221,7 @@
$('#edt-model').val(data?.model_id).trigger('change'); $('#edt-model').val(data?.model_id).trigger('change');
$('#edt-speedlimit').val(data?.speed_limit); $('#edt-speedlimit').val(data?.speed_limit);
$('#edt-mileage').val(data?.sum_milleage?.toFixed(2));
$('#edt-fuelcapacity').val(data?.fuel_capacity); $('#edt-fuelcapacity').val(data?.fuel_capacity);
$('#edt-fueldroptreshold').val(data?.fuel_drop_treshold); $('#edt-fueldroptreshold').val(data?.fuel_drop_treshold);
$('#edt-maxpressure').val(data?.max_pressure); $('#edt-maxpressure').val(data?.max_pressure);
@ -1264,6 +1277,7 @@
data.model_id = $('#edt-model').val(); data.model_id = $('#edt-model').val();
data.speed_limit = $('#edt-speedlimit').val(); data.speed_limit = $('#edt-speedlimit').val();
data.mileage = $('#edt-mileage').val();
data.fuel_capacity = $('#edt-fuelcapacity').val(); data.fuel_capacity = $('#edt-fuelcapacity').val();
data.fuel_drop_treshold = $('#edt-fueldroptreshold').val(); data.fuel_drop_treshold = $('#edt-fueldroptreshold').val();
data.max_pressure = $('#edt-maxpressure').val(); data.max_pressure = $('#edt-maxpressure').val();