Untitled
unknown
plain_text
a year ago
3.3 kB
3
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