maskurir/app/Http/Controllers/LocationController.php

84 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Models\Location;
use Carbon\Carbon;
class LocationController extends Controller
{
public function index()
{
$locations = Location::where('user_id', auth()->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.');
}
}