MIF_E31221281/TA-website/app/Http/Controllers/ApiKaryawanController.php

74 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Karyawan;
use App\Models\Reservasi;
use App\Models\SettingSistem;
use Carbon\Carbon;
use Illuminate\Http\Request;
class ApiKaryawanController extends Controller
{
public function getData(Request $request)
{
$request->validate([
'tanggal_pemesanan' => 'required|date',
]);
$setting = SettingSistem::first();
$batasWaktu = $setting->jam_operasional_tutup;
// Ambil tanggal dan jam saat ini
$currentDate = now()->toDateString();
$currentTime = now()->format('H:i:s');
// Jika tanggal_pemesanan sama dengan tanggal hari ini dan waktu melebihi batas waktu
if ($request->tanggal_pemesanan === $currentDate && $currentTime > $batasWaktu) {
// Kembalikan data kosong
return response()->json([]);
}
// Ambil karyawan yang tidak memiliki pemesanan yang melebihi batas jam_berakhir
$karyawans = Karyawan::select('id', 'nama', 'foto')
->whereDoesntHave('reservasis', function ($query) use ($request, $batasWaktu) {
$query->whereDate('tanggal_pemesanan', $request->tanggal_pemesanan)
// Pastikan jam_berakhir tidak melebihi batas waktu
->where('jam_berakhir', '>', $batasWaktu);
})
->distinct()
->get();
return response()->json($karyawans);
}
public function getDataById($id)
{
$karyawan = Karyawan::select('id', 'nama')
->find($id);
return response()->json($karyawan);
}
public function countKaryawanTransactions(){
$today = Carbon::today();
$karyawans = Karyawan::all();
$data = $karyawans->map(function($karyawan) use ($today) {
$total_reservasi = Reservasi::where('id_karyawan', $karyawan->id)
->whereDate('tanggal_pemesanan', $today)
->count();
return [
'id' => $karyawan->id,
'nama' => $karyawan->nama,
'total_reservasi' => $total_reservasi
];
});
return response()->json($data);
}
}