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; // } }