<?php

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

return new class extends Migration {
    /**
     * Run the migrations.
     *
     * Migration untuk membuat tabel sliks dengan semua field yang diperlukan
     * berdasarkan header Excel yang diberikan untuk import data SLIK
     */
    public function up(): void
    {
        Schema::create('sliks', function (Blueprint $table) {
            $table->id();

            // Field utama berdasarkan header Excel
            $table->string('sandi_bank')->nullable(); // Sandi Bank
            $table->string('tahun')->nullable(); // Tahun
            $table->string('bulan')->nullable(); // Bulan
            $table->string('flag_detail')->nullable(); // Flag Detail
            $table->string('kode_register_agunan')->nullable(); // Kode Register Agunan
            $table->string('no_rekening')->nullable(); // No Rekening
            $table->string('cif')->nullable(); // CIF
            $table->string('kolektibilitas')->nullable(); // Kolektibilitas
            $table->string('fasilitas')->nullable(); // Fasilitas
            $table->string('jenis_segmen_fasilitas')->nullable(); // Jenis Segmen Fasilitas
            $table->string('status_agunan')->nullable(); // Status Agunan
            $table->string('jenis_agunan')->nullable(); // Jenis Agunan
            $table->string('peringkat_agunan')->nullable(); // Peringkat Agunan
            $table->string('lembaga_pemeringkat')->nullable(); // Lembaga Pemeringkat
            $table->string('jenis_pengikatan')->nullable(); // Jenis Pengikatan
            $table->string('tanggal_pengikatan')->nullable(); // Tanggal Pengikatan
            $table->string('nama_pemilik_agunan')->nullable(); // Nama Pemilik Agunan
            $table->string('bukti_kepemilikan')->nullable(); // Bukti Kepemilikan
            $table->text('alamat_agunan')->nullable(); // Alamat Agunan
            $table->string('lokasi_agunan')->nullable(); // Lokasi Agunan
            $table->string('nilai_agunan')->nullable(); // Nilai Agunan
            $table->string('nilai_agunan_menurut_ljk')->nullable(); // Nilai Agunan Menurut LJK
            $table->string('tanggal_penilaian_ljk')->nullable(); // Tanggal Penilaian LJK
            $table->string('nilai_agunan_penilai_independen')->nullable(); // Nilai Agunan Penilai Independen
            $table->string('nama_penilai_independen')->nullable(); // Nama Penilai Independen
            $table->string('tanggal_penilaian_penilai_independen')->nullable(); // Tanggal Penilaian Penilai Independen
            $table->string('jumlah_hari_tunggakan')->nullable(); // Jumlah Hari Tunggakan
            $table->string('status_paripasu')->nullable(); // Status Paripasu
            $table->string('prosentase_paripasu')->nullable(); // Prosentase Paripasu
            $table->string('status_kredit_join')->nullable(); // Status Kredit Join
            $table->string('diasuransikan')->nullable(); // Diasuransikan
            $table->text('keterangan')->nullable(); // Keterangan
            $table->string('kantor_cabang')->nullable(); // Kantor Cabang
            $table->string('operasi_data')->nullable(); // Operasi Data
            $table->string('kode_cabang')->nullable(); // Kode Cabang
            $table->string('nama_debitur')->nullable(); // Nama Debitur
            $table->string('nama_cabang')->nullable(); // Nama Cabang
            $table->string('flag')->nullable(); // Flag

            // Standard Laravel fields
            $table->timestamps();
            $table->string('created_by')->nullable();
            $table->string('updated_by')->nullable();
            $table->string('deleted_by')->nullable();
            $table->softDeletes();

            // Indexes untuk performa query
            $table->index(['sandi_bank']);
            $table->index(['tahun']);
            $table->index(['bulan']);
            $table->index(['no_rekening']);
            $table->index(['cif']);
            $table->index(['kode_register_agunan']);
            $table->index(['nama_debitur']);
            $table->index(['kode_cabang']);
            $table->index(['created_at']);
        });
    }

    /**
     * Reverse the migrations.
     *
     * Menghapus tabel sliks jika migration di-rollback
     */
    public function down(): void
    {
        Schema::dropIfExists('sliks');
    }
};
