Untitled
unknown
plain_text
a year ago
3.3 kB
5
Indexable
//controller booking
<?php
namespace App\Http\Controllers\api;
use App\Http\Controllers\Controller; // Impor Controller
use App\Models\Booking; // Impor model yang digunakan
use App\Models\Fasilitas;
use Illuminate\Http\Request;
use Carbon\Carbon;
class BookingController extends Controller
{
public function index($id, $date) {
// Pastikan format tanggal sebelum menggunakannya
if (!Carbon::hasFormat($date, 'Y-m-d')) {
abort(400, 'Format tanggal tidak valid'); // Respons error jika format tidak sesuai
}
// Coba konversi parameter `date` ke objek `Carbon`
$tanggalSekarang1 = Carbon::parse($date)->startOfDay(); // Awal hari
$tanggalSekarang = $tanggalSekarang1->format('d-m-Y'); // Format tanggal
try {
} catch (\Exception $e) {
abort(400, 'Tanggal tidak valid'); // Tangani kesalahan parsing
}
// Cari fasilitas berdasarkan ID
$fasilitasItem = Fasilitas::find($id);
if (!$fasilitasItem) {
abort(404, 'Fasilitas tidak ditemukan'); // Jika fasilitas tidak ditemukan
}
// Dapatkan minggu depan berdasarkan `tanggalSekarang1`
$mingguDepan = $tanggalSekarang1->copy()->addDay(6)->endOfDay(); // Akhir hari minggu depan
// Ambil pemesanan berdasarkan ID fasilitas dan rentang tanggal
$bookings = Booking::where('id_fasiliti', $id)
->whereBetween('tgl_booking', [$tanggalSekarang1, $mingguDepan])
->get(); // Kumpulkan hasil
// dd($bookings, $tanggalSekarang1, $mingguDepan);
// Atur pemesanan berdasarkan hari dalam seminggu
$bookingsByDay = [];
foreach ($bookings as $booking) {
// Mendapatkan nama hari dalam seminggu
$hari = Carbon::parse($booking->tgl_booking)->isoFormat('dddd');
if (!isset($bookingsByDay[$hari])) {
$bookingsByDay[$hari] = []; // Siapkan array kosong jika belum ada
}
$bookingsByDay[$hari][] = $booking; // Tambahkan pemesanan ke hari yang sesuai
}
// Buat daftar semua hari dalam minggu, mulai dari tanggal saat ini
$allDays = [];
for ($i = 0; $i < 7; $i++) {
$tanggal = $tanggalSekarang1->copy()->addDays($i); // Tambahkan `i` hari
$hari = $tanggal->isoFormat('dddd'); // Nama hari
$tanggalFormatted = $tanggal->isoFormat('D'); // Hanya tanggal tanpa bulan/tahun
$allDays[] = "{$hari} {$tanggalFormatted}"; // Tambahkan ke daftar hari
}
// Pastikan `bookingsByDay` memiliki entri untuk setiap hari dalam minggu
foreach ($allDays as $day) {
$namaHari = explode(' ', $day)[0]; // Dapatkan nama hari
if (!isset($bookingsByDay[$namaHari])) {
$bookingsByDay[$namaHari] = []; // Siapkan array kosong jika tidak ada pemesanan
}
}
// Kembalikan data ke tampilan `booking.index`
return view('booking.index', compact('bookings', 'fasilitasItem', 'tanggalSekarang', 'allDays', 'bookingsByDay'));
}
}
Editor is loading...
Leave a Comment