<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePpidTables extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        // Tabel kategori informasi PPID
        Schema::create('kategori_informasi', function (Blueprint $table) {
            $table->id();
            $table->string('nama', 100);
            $table->string('kode', 20);
            $table->text('deskripsi')->nullable();
            $table->string('warna', 20)->default('primary'); // untuk badge color
            $table->timestamps();
        });

        // Tabel informasi publik
        Schema::create('informasi_publik', function (Blueprint $table) {
            $table->id();
            $table->foreignId('kategori_id')->constrained('kategori_informasi')->onDelete('cascade');
            $table->string('judul', 200);
            $table->text('ringkasan');
            $table->text('isi')->nullable();
            $table->year('tahun');
            $table->string('file_path')->nullable();
            $table->string('file_name')->nullable();
            $table->boolean('is_published')->default(true);
            $table->timestamps();
        });

        // Tabel permohonan informasi
        Schema::create('permohonan_informasi', function (Blueprint $table) {
            $table->id();
            $table->string('nomor_registrasi', 50)->unique();
            $table->string('nama_pemohon', 100);
            $table->string('email', 100);
            $table->string('no_hp', 15);
            $table->text('alamat');
            $table->enum('kategori_data', ['publik', 'private']);
            $table->text('informasi_dimohon');
            $table->text('tujuan_penggunaan');
            $table->date('tanggal_permohonan');
            $table->enum('status', ['pending', 'diproses', 'disetujui', 'ditolak', 'keberatan'])->default('pending');
            $table->text('catatan_admin')->nullable();
            $table->date('tanggal_ditindaklanjuti')->nullable();
            $table->timestamps();
        });

        // Insert default kategori
        DB::table('kategori_informasi')->insert([
            [
                'nama' => 'Informasi Berkala',
                'kode' => 'BERKALA',
                'deskripsi' => 'Informasi yang wajib disediakan dan diumumkan secara berkala',
                'warna' => 'success',
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'nama' => 'Informasi Serta Merta',
                'kode' => 'SERTA_MERTA',
                'deskripsi' => 'Informasi yang dapat mengancam hajat hidup orang banyak dan ketertiban umum',
                'warna' => 'warning',
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'nama' => 'Informasi Setiap Saat',
                'kode' => 'SETIAP_SAAT',
                'deskripsi' => 'Informasi yang wajib tersedia setiap saat',
                'warna' => 'info',
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'nama' => 'Informasi Dikecualikan',
                'kode' => 'DIKECUALIKAN',
                'deskripsi' => 'Informasi yang dikecualikan bersifat ketat dan terbatas',
                'warna' => 'danger',
                'created_at' => now(),
                'updated_at' => now()
            ]
        ]);

        // Insert sample informasi publik
        DB::table('informasi_publik')->insert([
            [
                'kategori_id' => 1,
                'judul' => 'Laporan Keuangan Tahunan 2023',
                'ringkasan' => 'Laporan keuangan lengkap tahun 2023',
                'isi' => 'Laporan keuangan tahunan mencakup neraca, laporan laba rugi, dan arus kas.',
                'tahun' => 2023,
                'file_path' => null,
                'file_name' => 'laporan-keuangan-2023.pdf',
                'is_published' => true,
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'kategori_id' => 3,
                'judul' => 'Struktur Organisasi',
                'ringkasan' => 'Struktur organisasi terbaru',
                'isi' => 'Struktur organisasi dan pembagian tugas unit kerja.',
                'tahun' => 2024,
                'file_path' => null,
                'file_name' => 'struktur-organisasi.pdf',
                'is_published' => true,
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'kategori_id' => 2,
                'judul' => 'Pengumuman Lelang Proyek',
                'ringkasan' => 'Pengumuman lelang proyek infrastruktur',
                'isi' => 'Pengumuman lelang proyek pembangunan infrastruktur tahun 2024.',
                'tahun' => 2024,
                'file_path' => null,
                'file_name' => 'pengumuman-lelang.pdf',
                'is_published' => true,
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'kategori_id' => 4,
                'judul' => 'Data Kepegawaian',
                'ringkasan' => 'Informasi kepegawaian yang dikecualikan',
                'isi' => 'Data kepegawaian yang bersifat pribadi dan dikecualikan dari akses publik.',
                'tahun' => 2024,
                'file_path' => null,
                'file_name' => null,
                'is_published' => true,
                'created_at' => now(),
                'updated_at' => now()
            ]
        ]);
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('permohonan_informasi');
        Schema::dropIfExists('informasi_publik');
        Schema::dropIfExists('kategori_informasi');
    }
}
