<?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');
    }

}
