Files
pand03-CEOandClaude Sonnet 5 2a9b28581c 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
2026-10-04 07:15:54 +07:00

166 lines
5.0 KiB
PHP

<?php
namespace App\Http\Controllers\ParkingLot;
use App\Http\Controllers\Controller;
use App\Models\LotParking\SiteParking;
use App\Models\LotParking\LotParkingLog;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\DB;
class ParkingLotComponent extends Controller
{
/**
* Halaman utama parking lot
*/
public function index()
{
$getArea = SiteParking::all(); // Mengambil semua data dari model SiteParking
$parkingDataByArea = []; // Array untuk menyimpan hasil query berdasarkan area
foreach ($getArea as $lantai) {
$spaceParking = $lantai->space_parking;
// Array untuk menyimpan data parking per lantai
$parkingData = [];
for ($lotNumber = 1; $lotNumber <= $spaceParking; $lotNumber++) {
// Melakukan query pada LotParkingLog berdasarkan area dan lot_number
$log = LotParkingLog::where("area", $lantai->sitearea_id)
->where("lot_number", $lotNumber)
->select("lot_number", "status")
->first();
// Jika data tidak ditemukan, buat object baru dengan lot_number dari pengulangan for
if (!$log) {
$log = (object) [
"lot_number" => $lotNumber,
"status" => 0,
];
}
// Menyimpan hasil query dalam array
$parkingData[] = $log;
}
// Menyimpan data parking per lantai dalam array berdasarkan area
$parkingDataByArea[] = [
"lantai" => $lantai->sitearea_id,
"data" => $parkingData,
];
}
// Melakukan dump and die untuk melihat hasil query sementara
// dd(json_encode($parkingDataByArea));
// dd($getArea->toJson());
return view("livewire.space", [
"areas" => $getArea,
"parkingDataByArea" => $parkingDataByArea,
]);
// return view("liveware.space");
}
public function getParkingData()
{
Log::info("getParkingData method called");
$getArea = SiteParking::get();
Log::info("Mendapatkan area: " . json_encode($getArea->toArray()));
$parkingDataByArea = [];
foreach ($getArea as $lantai) {
$areaName = $lantai->name;
$spaceParking = (int) $lantai->space_parking;
Log::info("Mencari lot di lantai: {$areaName}, jumlah lot: {$spaceParking}");
$parkingData = [];
for ($lotNumber = 1; $lotNumber <= $spaceParking; $lotNumber++) {
$log = LotParkingLog::where("area", $areaName)
->where("lot_number", $lotNumber)
->where("status", 1)
->select("lot_number", "status")
->orderByDesc("updated_at")
->first();
Log::info("Lot {$areaName} #{$lotNumber}: " . json_encode($log));
if (!$log) {
$log = (object) [
"lot_number" => $lotNumber,
"status" => 0,
];
}
$parkingData[] = $log;
}
$parkingDataByArea[] = [
"lantai" => $areaName,
"data" => $parkingData,
];
}
return response()->json($parkingDataByArea);
}
// public function index()
// {
// $parkingDataByArea = $this->getParkingData();
// return view("livewire.index", compact("parkingDataByArea"));
// }
/**
* Endpoint AJAX untuk refresh data parking
*/
public function data()
{
$parkingDataByArea = $this->getParkingData();
return view("livewire.partial-lot", compact("parkingDataByArea"));
}
/**
* Ambil data parking
*/
// private function getParkingData()
// {
// $getArea = SiteParking::all();
// $parkingDataByArea = [];
// foreach ($getArea as $lantai) {
// $spaceParking = $lantai->space_parking;
// $parkingData = [];
// for ($lotNumber = 1; $lotNumber <= $spaceParking; $lotNumber++) {
// $log = LotParkingLog::where("area", $lantai->sitearea_id)
// ->where("lot_number", $lotNumber)
// ->select("lot_number", "status")
// ->orderByDesc("created_at")
// ->first();
// if (!$log) {
// $log = (object) [
// "lot_number" => $lotNumber,
// "status" => 0,
// ];
// }
// $parkingData[] = $log;
// }
// $parkingDataByArea[] = [
// "lantai" => $lantai->sitearea_id,
// "data" => $parkingData,
// ];
// }
// return $parkingDataByArea;
// }
}