89 lines
3.2 KiB
PHP
89 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\File;
|
|
use App\Models\JadwalSidang as JadwalSidangModel;
|
|
use App\Models\Perusahaan;
|
|
use App\Models\DokumenType;
|
|
use Carbon\Carbon;
|
|
|
|
class JadwalSidangController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
// Ambil jadwal dari DB dengan relasi
|
|
$query = JadwalSidangModel::with(['perusahaan', 'dokumenType'])->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');
|
|
}
|
|
|
|
}
|