46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Location;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
|
|
class PresenceController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
// Ambil semua data presensi (upload lokasi)
|
|
$presences = Location::with('user')
|
|
->select('user_id', 'created_at')
|
|
->orderBy('created_at')
|
|
->get();
|
|
|
|
// Mapping data menjadi [tanggal => [nama kurir, ...]]
|
|
$presenceData = [];
|
|
|
|
foreach ($presences as $presence) {
|
|
$date = Carbon::parse($presence->created_at)->toDateString();
|
|
$name = $presence->user->name;
|
|
|
|
// Hindari duplikat nama di tanggal yang sama
|
|
if (!isset($presenceData[$date])) {
|
|
$presenceData[$date] = [];
|
|
}
|
|
|
|
if (!in_array($name, $presenceData[$date])) {
|
|
$presenceData[$date][] = $name;
|
|
}
|
|
$today = now()->format('Y-m-d');
|
|
$presensiRecords = Location::with('user')
|
|
->select('user_id', Location::raw('MIN(created_at) as check_in_time'))
|
|
->whereDate('created_at', $today)
|
|
->groupBy('user_id')
|
|
->get();
|
|
}
|
|
|
|
return view('presensi.index', compact('presenceData', 'presensiRecords'));
|
|
}
|
|
}
|