id()) ->whereDate('created_at', Carbon::today()) // Hanya ambil data dari hari ini ->get(); return view('kurir.dashboard', compact('locations')); } // Simpan lokasi yang diupload (via AJAX) public function store(Request $request) { if (!auth()->check()) { return response()->json([ 'success' => false, 'message' => 'User belum login' ], 401); } $request->validate([ 'latitude' => 'required|numeric', 'longitude' => 'required|numeric', ]); $location = Location::create([ 'user_id' => auth()->id(), 'latitude' => $request->latitude, 'longitude' => $request->longitude, ]); return response()->json([ 'success' => true, 'location' => $location, ]); } public function update(Request $request) { Location::updateOrCreate( ['user_id' => Auth::id()], [ 'latitude' => $request->latitude, 'longitude' => $request->longitude, ] ); return response()->json(['message' => 'Lokasi berhasil diperbarui']); } public function cleanupYesterday() { $yesterday = now()->subDay()->toDateString(); $idsToKeep = Location::select(DB::raw('MIN(id) as id')) ->whereDate('created_at', $yesterday) ->groupBy('user_id') ->pluck('id'); $query = Location::whereDate('created_at', $yesterday) ->whereNotIn('id', $idsToKeep); $deleted = $query->count(); // Hitung dulu sebelum delete if ($deleted > 0) { $query->delete(); return redirect()->back()->with('success', 'Data kemarin dibersihkan.'); } return redirect()->back()->with('info', 'Data kemarin sudah bersih, tidak ada yang perlu dihapus.'); } }