Rapihin setup/member/lot-parking + fitur intercom, exclude WIP controller & file sampah dari git
Kumpulan perubahan yang udah numpuk di working tree: refactor Setup (Gate/Vehicle/Member), rapihin memberin & stiker, service parking baru (ParkingUtilsServices, NetworkService), model/migration lot-parking & DHCP reservation, dan fitur baru Intercom (controller/model/migration/ view). ReportTransaksiController versi lokal ini WIP (~90%, masih didebug) - versi yang bener ada di server, jadi dikeluarin dari git (ditambahin ke .gitignore) biar gak numpuk nindihin punya server pas git pull di sana. Sekalian keluarin dump mentah tabel softseting (1.8MB, nyasar ke-commit), file .bak, dan arsip ad-hoc (api.tgz, c.zip) yang emang bukan source code. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01EAJc2mrpj2cSTe4oowLPzQ
This commit is contained in:
@@ -3,11 +3,14 @@
|
||||
namespace App\Http\Controllers\Parking;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\MemberCard;
|
||||
use App\Models\SoftSettings;
|
||||
use App\Models\StikerTrans;
|
||||
use App\Models\StikerTransDetail;
|
||||
use App\Models\MemberCard;
|
||||
use App\Services\MakeStikerServices;
|
||||
use Carbon\Carbon;
|
||||
use Exception;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -35,12 +38,22 @@ public function index(Request $request)
|
||||
|
||||
public function getMember(Request $request)
|
||||
{
|
||||
// Log::info(json_encode("nopol : " . $request->nopol));
|
||||
Log::info(json_encode("nama : " . $request->input("search-by")));
|
||||
Log::info(json_encode("value : " . $request->input("search_value")));
|
||||
Log::info(json_encode("isActive : " . $request->input("isActive")));
|
||||
// Log::info(json_encode("veh : " . $request->vehicle));
|
||||
// Log::info(json_encode("dept : " . $request->depart));
|
||||
// Log::info(json_encode("mem : " . $request->member));
|
||||
// Log::info(json_encode("mem : " . $request->jenismember));
|
||||
// Log::info(json_encode("trans : " . $request->notrans));
|
||||
// Log::info(json_encode("isactive : " . gettype($request->isactive)));
|
||||
$searchBy = $request->input("search-by");
|
||||
$searchValue = trim($request->input("search_value", ""));
|
||||
|
||||
$memberType = $request->input("member_type");
|
||||
$unitKerja = $request->input("departement");
|
||||
$vehicle = $request->input("vehicle");
|
||||
$isActive = $request->input("isActive");
|
||||
|
||||
if ($request->ajax()) {
|
||||
$dataStiker = DB::table("transaksi_stiker as ts")
|
||||
->leftJoin("detail_transaksi_stiker as dts", "dts.notrans", "=", "ts.notrans")
|
||||
@@ -55,40 +68,47 @@ public function getMember(Request $request)
|
||||
jm.nama vehicle, dts.jenis_member, cm.no_card as no_card'),
|
||||
)
|
||||
->distinct();
|
||||
// ->select(DB::raw('ts.notrans as notrans , ts.nama , ts.alamat as alamat , ts.telepon as telepon , ts.awal as awal , ts.akhir as akhir, sk.nama as unit_kerja, jl.nama as jenis_member, ts.no_id'))
|
||||
|
||||
if ($request->nama) {
|
||||
$dataStiker = $dataStiker->where("ts.nama", "like", "%" . $request->nama . "%");
|
||||
if ($searchBy && $searchValue !== "") {
|
||||
switch ($searchBy) {
|
||||
case "nama":
|
||||
$nama = strtolower($searchValue);
|
||||
$NAMA = strtoupper($searchValue);
|
||||
$dataStiker->where("ts.nama", "ILIKE", "%{$searchValue}%");
|
||||
break;
|
||||
case "alamat":
|
||||
$dataStiker->where("ts.alamat", "like", "%{$searchValue}%");
|
||||
break;
|
||||
case "nopol":
|
||||
$dataStiker->where("dts.nopol", "like", "%{$searchValue}%");
|
||||
break;
|
||||
case "nocard":
|
||||
$dataStiker->where("cm.nocard", "like", "%{$searchValue}%");
|
||||
break;
|
||||
case "notrans":
|
||||
$dataStiker->where("ts.notrans", "like", "%{$searchValue}%");
|
||||
break;
|
||||
// case "":
|
||||
// $dataStiker->where("ts.nama", "like", "%{$searchValue}%");
|
||||
// break;
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->notrans) {
|
||||
$dataStiker = $dataStiker->where("ts.notrans", "like", "%" . $request->notrans . "%");
|
||||
if ($memberType) {
|
||||
$dataStiker->where("ts.jenis_langganan", $memberType);
|
||||
}
|
||||
|
||||
if ($request->nopol) {
|
||||
$dataStiker = $dataStiker->where("ts.unit_kerja", "like", "%" . $request->depart . "%");
|
||||
if ($unitKerja) {
|
||||
$dataStiker->where("ts.unit_kerja", $unitKerja);
|
||||
}
|
||||
|
||||
if ($request->member) {
|
||||
$dataStiker = $dataStiker->where("ts.jenis_langganan", "like", "%" . $request->member . "%");
|
||||
if ($vehicle) {
|
||||
$dataStiker->where("dts.jenis_mobil", $vehicle);
|
||||
}
|
||||
|
||||
if ($request->nopol) {
|
||||
$dataStiker = $dataStiker->where("dts.nopol", "like", "%" . $request->nopol . "%");
|
||||
if ($request->input("isActive") == "1") {
|
||||
$dataStiker->whereRaw("NOW() BETWEEN ts.awal AND ts.akhir");
|
||||
}
|
||||
|
||||
if ($request->vehicle) {
|
||||
$dataStiker = $dataStiker->where("dts.jenis_mobil", "like", "%" . $request->vehicle . "%");
|
||||
}
|
||||
|
||||
if ($request->nocard) {
|
||||
$dataStiker = $dataStiker->where("cm.no_card", "like", "%" . $request->nocard . "%");
|
||||
}
|
||||
|
||||
if ($request->isactive === "1") {
|
||||
$dataStiker = $dataStiker->whereRaw("now() between ts.awal and ts.akhir");
|
||||
}
|
||||
|
||||
// Log::info($dataStiker->toSql());
|
||||
|
||||
$dataStiker = $dataStiker->get();
|
||||
@@ -132,22 +152,47 @@ public function checkField(Request $request)
|
||||
return response()->json(["response" => true, "message" => "Data sudah ada"]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
public function store(Request $request, MakeStikerServices $makeStiker)
|
||||
{
|
||||
Log::info("Data yang diterima : " . json_encode($request->all()));
|
||||
$mountYearNow = Carbon::now()->format("m/Y");
|
||||
|
||||
$dataStiker = $request->input("formData");
|
||||
$dataVehicle = $request->input("nopolData");
|
||||
$dataCard = $request->input("cardNumber");
|
||||
Log::info("Data Stiker : " . json_encode($dataStiker));
|
||||
Log::info("Data Kendaraan : " . json_encode($dataVehicle));
|
||||
Log::info("Data kartu : " . json_encode($dataCard));
|
||||
// $cleanedData = stripslashes(trim($data));
|
||||
// Log::debug('Modified : ' . json_encode($cleanedData));
|
||||
// $dataStiker = json_decode($cleanedData, false);
|
||||
// Log::info('Debuggind data : ' . json_encode($dataStiker));
|
||||
$getTrans = DB::table("indexnum")
|
||||
->whereIn("nama", ["TRX", "IDN"])
|
||||
->pluck("value", "nama");
|
||||
$noTrans = $getTrans->get("TRX");
|
||||
$noID = $getTrans->get("IDN");
|
||||
|
||||
// Log::info("Get Trans : " . json_encode($getTrans));
|
||||
// Log::info("No Trans : " . $noTrans);
|
||||
// Log::info("No ID : " . $noID);
|
||||
|
||||
$noTransFormat = str_pad($noTrans, 5, "0", STR_PAD_LEFT);
|
||||
$noIDFormat = str_pad($noID, 5, "0", STR_PAD_LEFT);
|
||||
|
||||
$getLocation = SoftSettings::first();
|
||||
Log::info("Namalokasi : " . json_encode($getLocation->namalokasi));
|
||||
$ignore = ["RS", "PT", "CV", "TBK"];
|
||||
$nama = preg_replace("/[^A-Za-z0-9 ]/", "", $getLocation->namalokasi);
|
||||
$kata = preg_split("/\s+/", trim($nama));
|
||||
$identity = "";
|
||||
foreach ($kata as $k) {
|
||||
if (in_array(strtoupper($k), $ignore)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$identity .= strtoupper($k[0]);
|
||||
}
|
||||
|
||||
$randomNumber = strtoupper(Str::random(6));
|
||||
|
||||
$newTrans = "TRX-" . $identity . "-" . Carbon::now()->format("Ymd-His") . "-" . $randomNumber;
|
||||
$newID = "IDN-" . $identity . "-" . Carbon::now()->format("Ymd-His") . "-" . $randomNumber;
|
||||
// $noid = $seqId->value . "-IDT-" . $mountYearNow;
|
||||
// $validate = Validator::make($request->all(),[
|
||||
// 'nama' => 'required|string|unique',
|
||||
// // 'nopol' => 'required|string|unique:detail_transaksi_stiker,nopol',
|
||||
@@ -158,84 +203,131 @@ public function store(Request $request)
|
||||
// return response()->json(['response' => false, 'message' => 'pastikan nama, Nomor Polisi, dan data kartu sudah terisi']);
|
||||
// }
|
||||
|
||||
$dateNow = Carbon::now()->format("Y-m-d H:m:s");
|
||||
$seqTrans = DB::table("indexnum")->select("value")->where("nama", "sticker")->first();
|
||||
$seqId = DB::table("indexnum")->select("value")->where("nama", "identitas")->first();
|
||||
// $dateNow = Carbon::now()->format("Y-m-d H:m:s");
|
||||
// $seqTrans = DB::table("indexnum")->select("value")->where("nama", "sticker")->first();
|
||||
// $seqId = DB::table("indexnum")->select("value")->where("nama", "identitas")->first();
|
||||
|
||||
$notrans = $seqTrans->value . "/STK/" . $mountYearNow;
|
||||
$noid = $seqId->value . "/IDT/" . $mountYearNow;
|
||||
$user = Auth::user();
|
||||
// $notrans = $seqTrans->value . "/STK/" . $mountYearNow;
|
||||
// $noid = $seqId->value . "/IDT/" . $mountYearNow;
|
||||
// $user = Auth::user();
|
||||
|
||||
$periode = explode(" - ", $dataStiker["periode"]);
|
||||
Log::info("Parcing Periode : " . json_encode($periode));
|
||||
$awal = Carbon::createFromFormat("d-m-Y H:i", $periode[0]);
|
||||
$akhir = Carbon::createFromFormat("d-m-Y H:i", $periode[1]);
|
||||
// // Log::info($user);
|
||||
|
||||
$dataStiker = $request->input("formData");
|
||||
$dataVehicle = $request->input("nopolData");
|
||||
$dataCard = $request->input("cardNumber");
|
||||
Log::info("Data Stiker : " . json_encode($dataStiker));
|
||||
Log::info("Data Kendaraan : " . json_encode($dataVehicle));
|
||||
Log::info("Data kartu : " . json_encode($dataCard));
|
||||
|
||||
if ($dataStiker["periode"]) {
|
||||
$periode = explode(" - ", $dataStiker["periode"]);
|
||||
Log::info("Parcing Periode : " . json_encode($periode));
|
||||
$awal = Carbon::createFromFormat("d-m-Y H:i", $periode[0]);
|
||||
$akhir = Carbon::createFromFormat("d-m-Y H:i", $periode[1]);
|
||||
} else {
|
||||
$awal = Carbon::createFromFormat("d-m-Y H:i", $dataStiker["awal"]);
|
||||
$akhir = Carbon::createFromFormat("d-m-Y H:i", $dataStiker["akhir"]);
|
||||
}
|
||||
Log::info("Awal : " . $awal . " Akhir : " . $akhir);
|
||||
// Log::info($user);
|
||||
|
||||
try {
|
||||
$dataStiker = [
|
||||
"jenis_transaksi" => $dataStiker["jenis_transaksi"], // 0 = transaksi baru , 1 = perpanjangan
|
||||
"notrans" => $notrans,
|
||||
"no_id" => $noid,
|
||||
"nama" => $dataStiker["nama"],
|
||||
"alamat" => $dataStiker["address"] ?? "",
|
||||
"telepon" => $dataStiker["phone"] ?? "",
|
||||
"unit_kerja" => $dataStiker["depart"],
|
||||
"jenis_stiker" => $dataStiker["member"],
|
||||
"awal" => $awal,
|
||||
"akhir" => $akhir,
|
||||
"harga" => $dataStiker["harga"] ?? 0,
|
||||
"keterangan" => $dataStiker["note"] ?? "",
|
||||
"tanggal" => $dateNow,
|
||||
"operator" => $user->nomer,
|
||||
];
|
||||
$dataStiker["notrans"] = $newTrans;
|
||||
$dataStiker["no_id"] = $newID;
|
||||
$dataStiker["awal"] = $awal;
|
||||
$dataStiker["akhir"] = $akhir;
|
||||
|
||||
DB::table("transaksi_stiker")->insert($dataStiker);
|
||||
|
||||
if ($dataVehicle) {
|
||||
foreach ($dataVehicle as $nopol) {
|
||||
$dataVehicle = [
|
||||
"notrans" => $notrans,
|
||||
"nopol" => $nopol["nopol"],
|
||||
"jenis_mobil" => $nopol["vehicle"],
|
||||
"jenis_member" => $nopol["member"],
|
||||
"merk" => $nopol["merk"],
|
||||
];
|
||||
DB::table("detail_transaksi_stiker")->insert($dataVehicle);
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
if (!empty($dataVehicle)) {
|
||||
foreach ($dataVehicle as &$vehicle) {
|
||||
$vehicle["notrans"] = $newTrans;
|
||||
}
|
||||
|
||||
if ($dataCard) {
|
||||
foreach ($dataCard as $cardNumber) {
|
||||
$dataCard = [
|
||||
"notrans" => $noid,
|
||||
"no_card" => $cardNumber["nocard"],
|
||||
"no_urut" => $cardNumber["nourut"],
|
||||
];
|
||||
|
||||
DB::table("card_member")->insert($dataCard);
|
||||
}
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
DB::table("indexnum")
|
||||
->where("nama", "sticker")
|
||||
->update(["value" => DB::raw("lpad(to_number(value,'9999')+1)::text, 4, '0')")]);
|
||||
DB::table("indexnum")
|
||||
->where("nama", "identitas")
|
||||
->update(["value" => DB::raw("lpad(to_number(value,'9999')+1)::text, 4, '0')")]);
|
||||
$response = true;
|
||||
$msg = "Data berhasil di simpan";
|
||||
} catch (Exception $e) {
|
||||
$response = false;
|
||||
$msg = "Gagal menyimpan data " . $e->getMessage() . $e->getLine();
|
||||
}
|
||||
|
||||
return response()->json(["response" => $response, "pesan" => $msg]);
|
||||
if (!empty($dataCard)) {
|
||||
foreach ($dataCard as &$cardNumber) {
|
||||
$cardNumber["notrans"] = $newID;
|
||||
}
|
||||
}
|
||||
|
||||
$createData = $makeStiker->stikerCreate(
|
||||
[
|
||||
"dataSticker" => $dataStiker,
|
||||
"dataVehicle" => $dataVehicle ?? null,
|
||||
"dataCard" => $dataCard ?? null,
|
||||
],
|
||||
$awal,
|
||||
$akhir,
|
||||
);
|
||||
|
||||
Log::info("Status penyimpanan : " . $createData);
|
||||
|
||||
// try {
|
||||
// $dataStiker = [
|
||||
// "jenis_transaksi" => $dataStiker["jenis_transaksi"], // 0 = transaksi baru , 1 = perpanjangan
|
||||
// "notrans" => $notrans,
|
||||
// "no_id" => $noid,
|
||||
// "nama" => $dataStiker["nama"],
|
||||
// "alamat" => $dataStiker["address"] ?? "",
|
||||
// "telepon" => $dataStiker["phone"] ?? "",
|
||||
// "unit_kerja" => $dataStiker["depart"],
|
||||
// "jenis_stiker" => $dataStiker["member"],
|
||||
// "awal" => $awal,
|
||||
// "akhir" => $akhir,
|
||||
// "harga" => $dataStiker["harga"] ?? 0,
|
||||
// "keterangan" => $dataStiker["note"] ?? "",
|
||||
// "tanggal" => $dateNow,
|
||||
// "operator" => $user->nomer,
|
||||
// ];
|
||||
|
||||
// DB::table("transaksi_stiker")->insert($dataStiker);
|
||||
|
||||
// if ($dataVehicle) {
|
||||
// foreach ($dataVehicle as $nopol) {
|
||||
// $dataVehicle = [
|
||||
// "notrans" => $notrans,
|
||||
// "nopol" => $nopol["nopol"],
|
||||
// "jenis_mobil" => $nopol["vehicle"],
|
||||
// "jenis_member" => $nopol["member"],
|
||||
// "merk" => $nopol["merk"],
|
||||
// ];
|
||||
// DB::table("detail_transaksi_stiker")->insert($dataVehicle);
|
||||
// }
|
||||
// } else {
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// if ($dataCard) {
|
||||
// foreach ($dataCard as $cardNumber) {
|
||||
// $dataCard = [
|
||||
// "notrans" => $noid,
|
||||
// "no_card" => $cardNumber["nocard"],
|
||||
// "no_urut" => $cardNumber["nourut"],
|
||||
// ];
|
||||
|
||||
// DB::table("card_member")->insert($dataCard);
|
||||
// }
|
||||
// } else {
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// DB::table("indexnum")
|
||||
// ->where("nama", "sticker")
|
||||
// ->update(["value" => DB::raw("lpad(to_number(value,'9999')+1)::text, 4, '0')")]);
|
||||
// DB::table("indexnum")
|
||||
// ->where("nama", "identitas")
|
||||
// ->update(["value" => DB::raw("lpad(to_number(value,'9999')+1)::text, 4, '0')")]);
|
||||
// $response = true;
|
||||
// $msg = "Data berhasil di simpan";
|
||||
// } catch (Exception $e) {
|
||||
// $response = false;
|
||||
// $msg = "Gagal menyimpan data " . $e->getMessage() . $e->getLine();
|
||||
// }
|
||||
|
||||
return $createData;
|
||||
// return response()->json([
|
||||
// // "response" => $response,
|
||||
// "response" => $createData,
|
||||
// "pesan" => $createData,
|
||||
// ]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,8 +339,9 @@ public function store(Request $request)
|
||||
public function show($id)
|
||||
{
|
||||
Log::info("Data yang diterima : " . json_encode($id));
|
||||
$dataStiker = StikerTrans::with("stiker_details.vehicle", "memberCard")
|
||||
->select(
|
||||
$dataStiker = StikerTrans
|
||||
// with("stiker_details.vehicle", "memberCard")
|
||||
::select(
|
||||
"transaksi_stiker.notrans",
|
||||
"transaksi_stiker.nama",
|
||||
"transaksi_stiker.alamat",
|
||||
@@ -258,13 +351,31 @@ public function show($id)
|
||||
"transaksi_stiker.jenis_langganan",
|
||||
"transaksi_stiker.unit_kerja",
|
||||
"transaksi_stiker.no_id",
|
||||
"transaksi_stiker.harga",
|
||||
"jl.nama as jmember",
|
||||
"sk.nama as dept",
|
||||
// "detail_transaksi_stiker.nama",
|
||||
// "detail_transaksi_stiker.tarif",
|
||||
)
|
||||
->leftJoin("jenis_langganan as jl", "jl.id", "=", "transaksi_stiker.jenis_langganan")
|
||||
->leftJoin("stasiunkerja as sk", "sk.kode", "=", "transaksi_stiker.unit_kerja")
|
||||
->where("notrans", "like", "%" . $id . "%")
|
||||
->first();
|
||||
|
||||
$vehicleDetails = StikerTransDetail::query()
|
||||
->from("detail_transaksi_stiker as dts")
|
||||
->select("jm.nama as vehicle", "ts.tarif", "dts.*")
|
||||
->leftJoin("jenis_mobil as jm", "dts.jenis_mobil", "=", "jm.id")
|
||||
->leftJoin("tarif_stiker as ts", function ($join) {
|
||||
$join->on("dts.jenis_member", "=", "ts.jenis_langganan")->on("dts.jenis_mobil", "=", "ts.id_mobil");
|
||||
})
|
||||
->where("notrans", $dataStiker->notrans)
|
||||
->get();
|
||||
|
||||
$cardMember = MemberCard::where("notrans", $dataStiker->no_id)->get();
|
||||
|
||||
$dataStiker["stiker_details"] = $vehicleDetails;
|
||||
$dataStiker["memberCard"] = $cardMember;
|
||||
// $dataStiker = DB::table('transaksi_stiker as ts')
|
||||
// ->leftjoin('detail_transaksi_stiker as dts','dts.notrans','=','ts.notrans')
|
||||
// ->leftJoin('jenis_langganan as jl','jl.id','=','ts.jenis_langganan')
|
||||
|
||||
Reference in New Issue
Block a user