<?php

namespace Modules\Lpj\Models;

use Illuminate\Foundation\Auth\User;

class Noc extends Base
{
    protected $table = 'noc';

    protected $fillable = [
        'permohonan_id',
        'persetujuan_penawaran_id',
        'bukti_bayar',
        'nominal_bayar',
        'total_pembukuan',
        'status_bayar',
        'status_kurang_bayar',
        'nominal_kurang_bayar',
        'status_lebih_bayar',
        'nominal_lebih_bayar',
        'bukti_pengembalian',
        'tanggal_pembayaran',
        'nominal_penyelesaian',
        'status_penyelesaiaan',
        'tanggal_penyelesaian',
        'bukti_penyelesaian',
        'bukti_ksl',
        'memo_penyelesaian',
        'memo_penyelesaian_number',
        'memo_penyelesaian_date',
        'memo_penyelesaian_payment_date',
        'memo_penyelesaian_created_at',
        'catatan_noc',
        'status',
        'authorized_status',
        'authorized_at',
        'authorized_by',
    ];

    protected $casts = [
        'nominal_bayar' => 'decimal:2',
        'status_bayar' => 'boolean',
        'status_kurang_bayar' => 'boolean',
        'nominal_kurang_bayar' => 'decimal:2',
        'status_lebih_bayar' => 'boolean',
        'nominal_lebih_bayar' => 'decimal:2',
        'tanggal_pembayaran' => 'date',
        'nominal_penyelesaian' => 'decimal:2',
        'status_penyelesaiaan' => 'boolean',
        'tanggal_penyelesaian' => 'date',
        'memo_penyelesaian_date' => 'date',
        'memo_penyelesaian_payment_date' => 'date',
        'memo_penyelesaian_created_at' => 'datetime',
        'status' => 'boolean',
        'authorized_status' => 'boolean',
        'authorized_at' => 'datetime',
    ];

    // Relationship with Permohonan
    public function permohonan()
    {
        return $this->belongsTo(Permohonan::class, 'permohonan_id');
    }

    // Relationship with PersetujuanPenawaran
    public function persetujuanPenawaran()
    {
        return $this->belongsTo(PersetujuanPenawaran::class, 'persetujuan_penawaran_id');
    }

    // Relationship with User (for authorized_by)
    public function authorizedBy()
    {
        return $this->belongsTo(User::class, 'authorized_by');
    }
}
