This commit is contained in:
Pringgosutono
2025-09-09 12:37:15 +07:00
parent a101b55279
commit c7e0b57ad6
4 changed files with 613 additions and 7 deletions

View File

@ -0,0 +1,210 @@
<?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\Storage;
use Validator;
use Hidehalo\Nanoid\Client as Nanoid;
use Hidehalo\Nanoid\GeneratorInterface as NanoidInterface;
use App\Responses;
use App\Helper;
use App\Models\ConfRates;
use App\Models\ConfTruckTypes;
use App\Models\Vehicles;
class ConfPoolController extends Controller
{
/**
* View
*/
public function view_pool(Request $req)
{
$data = [];
return view("menu_v1.configs.pool", $data);
}
/**
* API
*/
public function api_add_pool(Request $req)
{
try {
$now = time();
// new or edit
$tipe = $req->tipe ?? "new";
$input = [
"pool_code" => $req->pool_code,
"pool_name" => $req->pool_name,
];
$rulesInput = [
"pool_code" => "required|string|max:10",
"pool_name" => "required|string|max:100",
];
// 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($tipe == "new"){
$uniqCode = DB::select("SELECT * FROM t_conf_pool WHERE pool_code = ?", [$req->pool_code]);
}
if($tipe == "edit"){
$uniqCode = DB::select("SELECT * FROM t_conf_pool WHERE pool_code = ? AND id != ?", [$req->pool_code, $req->id]);
}
if (count($uniqCode) > 0) {
$apiResp = Responses::bad_request("type code has been used");
return new Response($apiResp, $apiResp["meta"]["code"]);
}
DB::beginTransaction();
$insD = [
"pool_code" => $req->pool_code,
"pool_name" => $req->pool_name,
"crt" => $now,
"crt_by" => $req->auth->uid,
"updt" => $now,
"updt_by" => $req->auth->uid,
];
// $insQ = DB::insert("INSERT
// INTO t_conf_pool (pool_code, pool_name, crt, crt_by, updt, updt_by)
// VALUES (?, ?, ?, ?, ?, ?)
// ", array_values($insD));
$insQ = DB::insert("INSERT into t_conf_pool set
pool_code = ?,
pool_name = ?,
crt = ?,
crt_by = ?,
updt = ?,
updt_by = ?
on duplicate key update
pool_code = values(pool_code),
pool_name = values(pool_name),
updt = values(updt),
updt_by = values(updt_by)
", array_values($insD));
$apiResp = Responses::created("success " . ($tipe == "new" ? "add new" : "edit") . " distribution category");
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_list_pool(Request $req)
{
try {
$now = time();
$list = DB::select("SELECT * FROM t_conf_pool WHERE dlt IS NULL ORDER BY pool_code ASC");
foreach ($list as $key => $row) {
$list[$key]->DT_RowIndex = $key + 1;
$list[$key]->action = "-";
}
$apiResp = Responses::success("success list distribution category");
$apiResp["count"] = count($list);
$apiResp["data"] = $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_pool(Request $req, $id)
{
try {
$input = [
"id" => $id,
];
$rulesInput = [
"id" => "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"]);
}
$dtl = DB::select("SELECT * FROM t_conf_pool WHERE id = ? AND dlt IS NULL limit 1", [$id]);
if (count($dtl) < 1) {
$apiResp = Responses::not_found("truck type not found");
return new Response($apiResp, $apiResp["meta"]["code"]);
}
$apiResp = Responses::success("success get detail vehicle type");
$apiResp["data"] = $dtl[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_del_pool(Request $req, $id)
{
try {
$now = time();
$input = [
"id" => $id,
];
$rulesInput = [
"id" => "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"]);
}
$dtl = DB::select("SELECT * FROM t_conf_pool WHERE id = ? AND dlt IS NULL limit 1", [$id]);
if (count($dtl) < 1) {
$apiResp = Responses::not_found("vehicle type not found");
return new Response($apiResp, $apiResp["meta"]["code"]);
}
DB::beginTransaction();
$updtQ = DB::update("UPDATE t_conf_pool
SET
dlt = ?,
dlt_by = ?,
updt = ?,
updt_by = ?
WHERE id = ? AND dlt IS NULL
", [1, $req->user()->id, $now, $req->user()->id, $id]);
DB::commit();
$apiResp = Responses::success("success delete vehicle type");
return new Response($apiResp, $apiResp["meta"]["code"]);
} catch (\Exception $e) {
DB::rollBack();
$apiResp = Responses::error($e->getMessage());
return new Response($apiResp, $apiResp["meta"]["code"]);
}
}
}