<?php

namespace Modules\Lpj\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Modules\Usermanagement\Models\User;

class LaporanSlik extends Model
{
    use HasFactory;

    protected $table = 'laporan_slik';

    protected $fillable = [
        'slik_id',
        'sandi_bank',
        'kode_kantor',
        'kode_cabang',
        'tahun',
        'bulan',
        'no_rekening',
        'cif',
        'kode_jenis',
        'kode_jenis_ket',
        'kode_sifat',
        'kode_sifat_ket',
        'kode_valuta',
        'kode_valuta_ket',
        'baki_debet',
        'kolektibilitas',
        'kolektibilitas_ket',
        'tanggal_mulai',
        'tanggal_jatuh_tempo',
        'tanggal_selesai',
        'tanggal_restrukturisasi',
        'kode_sebab_macet',
        'kode_sebab_macet_ket',
        'tanggal_macet',
        'kode_kondisi',
        'kode_kondisi_ket',
        'tanggal_kondisi',
        'nilai_agunan',
        'nilai_agunan_ket',
        'jenis_agunan',
        'kode_agunan',
        'kode_agunan_ket',
        'peringkat_agunan',
        'peringkat_agunan_ket',
        'nama_debitur',
        'npwp',
        'no_ktp',
        'no_telp',
        'kode_kab_kota',
        'kode_kab_kota_ket',
        'kode_negara_domisili',
        'kode_negara_domisili_ket',
        'kode_pos',
        'alamat',
        'fasilitas',
        'status_agunan',
        'tanggal_lapor',
        'status',
        'created_by',
        'updated_by',
    ];

    protected $casts = [
        'created_at' => 'datetime',
        'updated_at' => 'datetime',
    ];

    public function slik()
    {
        return $this->belongsTo(Slik::class, 'slik_id');
    }

    public function creator()
    {
        return $this->belongsTo(User::class, 'created_by');
    }

    public function updater()
    {
        return $this->belongsTo(User::class, 'updated_by');
    }

    /**
     * Scope untuk filter berdasarkan status
     */
    public function scopeActive($query)
    {
        return $query->where('status', 'aktif');
    }

    /**
     * Accessor untuk nilai agunan yang diformat
     */
    public function getNilaiAgunanFormattedAttribute()
    {
        return number_format($this->nilai_agunan ?? 0, 0, ',', '.');
    }

    /**
     * Accessor untuk status badge
     */
    public function getStatusBadgeAttribute()
    {
        $status = $this->status ?? 'aktif';
        $class = $status == 'aktif' ? 'success' : 'danger';

        return '<span class="badge badge-light-' . $class . '">' . ucfirst($status) . '</span>';
    }
}
