<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class InformasiPublikAdminController extends Controller
{
    public function index()
    {
        $informasi = DB::table('informasi_publik')
            ->join('kategori_informasi', 'informasi_publik.kategori_id', '=', 'kategori_informasi.id')
            ->select(
                'informasi_publik.*',
                'kategori_informasi.nama as kategori_nama',
                'kategori_informasi.warna as kategori_warna'
            )
            ->orderBy('informasi_publik.created_at', 'desc')
            ->paginate(10);

        return view('admin.ppid.informasi.index', compact('informasi'));
    }

    public function create()
    {
        $kategoris = DB::table('kategori_informasi')->get();
        return view('admin.ppid.informasi.create', compact('kategoris'));
    }

    public function store(Request $request)
    {
        $request->validate([
            'kategori_id' => 'required|exists:kategori_informasi,id',
            'judul' => 'required|string|max:200',
            'ringkasan' => 'required|string',
            'isi' => 'nullable|string',
            'tahun' => 'required|integer|min:2000|max:' . (date('Y') + 1),
            'file_name' => 'nullable|string|max:255',
            'is_published' => 'nullable|boolean'
        ]);

        DB::table('informasi_publik')->insert([
            'kategori_id' => $request->kategori_id,
            'judul' => $request->judul,
            'ringkasan' => $request->ringkasan,
            'isi' => $request->isi,
            'tahun' => $request->tahun,
            'file_name' => $request->file_name,
            'is_published' => $request->has('is_published') ? 1 : 0,
            'created_at' => now(),
            'updated_at' => now()
        ]);

        return redirect()->route('admin.ppid.informasi.index')
            ->with('success', 'Informasi publik berhasil ditambahkan');
    }

    public function edit($id)
    {
        $informasi = DB::table('informasi_publik')->where('id', $id)->first();

        if (!$informasi) {
            return redirect()->route('admin.ppid.informasi.index')
                ->with('error', 'Data tidak ditemukan');
        }

        $kategoris = DB::table('kategori_informasi')->get();
        return view('admin.ppid.informasi.edit', compact('informasi', 'kategoris'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'kategori_id' => 'required|exists:kategori_informasi,id',
            'judul' => 'required|string|max:200',
            'ringkasan' => 'required|string',
            'isi' => 'nullable|string',
            'tahun' => 'required|integer|min:2000|max:' . (date('Y') + 1),
            'file_name' => 'nullable|string|max:255',
            'is_published' => 'nullable|boolean'
        ]);

        DB::table('informasi_publik')
            ->where('id', $id)
            ->update([
                'kategori_id' => $request->kategori_id,
                'judul' => $request->judul,
                'ringkasan' => $request->ringkasan,
                'isi' => $request->isi,
                'tahun' => $request->tahun,
                'file_name' => $request->file_name,
                'is_published' => $request->has('is_published') ? 1 : 0,
                'updated_at' => now()
            ]);

        return redirect()->route('admin.ppid.informasi.index')
            ->with('success', 'Informasi publik berhasil diperbarui');
    }

    public function destroy($id)
    {
        DB::table('informasi_publik')->where('id', $id)->delete();

        return redirect()->route('admin.ppid.informasi.index')
            ->with('success', 'Informasi publik berhasil dihapus');
    }
}
