orderBy('TanggalMulai', 'desc'); if ($request->filled('document_type')) { $kode = $request->input('document_type'); $query->whereHas('dokumenType', function ($q) use ($kode) { $q->where('Kode', $kode); }); } $jadwalDb = $query->get(); // Map ke struktur frontend lama agar script disable time bekerja $jadwal = $jadwalDb->map(function ($j) { return [ 'id' => $j->JadwalSidangID, 'title' => $j->NamaKegiatan, 'start' => optional($j->TanggalMulai)->toIso8601String(), 'end' => optional($j->TanggalSelesai)->toIso8601String(), 'documentType' => optional($j->dokumenType)->Kode, 'perusahaan' => optional($j->perusahaan)->NamaPerusahaan, 'description' => $j->Deskripsi, ]; })->values()->all(); // Data master untuk modal $perusahaan = Perusahaan::orderBy('NamaPerusahaan')->get(); $dokumenTypes = DokumenType::orderBy('Nama')->get(); return view('penjadwalan.jadwal_sidang', compact('jadwal', 'perusahaan', 'dokumenTypes')); } public function create(Request $request) { if ($request->isMethod('post')) { // Validasi minimal $request->validate([ 'title' => 'required|string|max:255', 'perusahaan_id' => 'required|exists:Perusahaan,PerusahaanID', 'start_date' => 'required|string', 'end_date' => 'required|string', 'document_type' => 'required|string', ]); // Cari / buat dokumen type jika belum ada $kode = $request->input('document_type'); $dokumenType = DokumenType::firstOrCreate( ['Kode' => $kode], ['Nama' => strtoupper(str_replace('_', ' ', $kode))] ); // Parse tanggal dari format d/m/Y H:i $start = Carbon::createFromFormat('d/m/Y H:i', $request->input('start_date')); $end = Carbon::createFromFormat('d/m/Y H:i', $request->input('end_date')); // Simpan ke DB JadwalSidangModel::create([ 'NamaKegiatan' => $request->input('title'), 'PerusahaanID' => $request->input('perusahaan_id'), 'DokumenTypeID' => $dokumenType->DokumenTypeID, 'Deskripsi' => $request->input('description', ''), 'TanggalMulai' => $start, 'TanggalSelesai' => $end, ]); return redirect()->route('jadwal.index')->with('success', 'Jadwal berhasil ditambahkan'); } // GET fallback (tidak digunakan karena pakai modal) return redirect()->route('jadwal.index'); } }