<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class OdooExecution extends Model
{
    protected $table = 'odoo_executions';

    protected $fillable = [
        'application_id',
        'loan_no',
        'customer_name',
        'business_name',
        'system_slug',
        'partner_id',
        'partner_name',
        'transaction_type',
        'step_key',
        'voucher_type',
        'month',
        'year',
        'total_debit',
        'total_credit',
        'amount',
        'entries_json',
        'maker_id',
        'maker_name',
        'initiated_at',
        'l1_status',
        'l1_user_id',
        'l1_user_name',
        'l1_approved_at',
        'l1_remarks',
        'l2_status',
        'l2_user_id',
        'l2_user_name',
        'l2_approved_at',
        'l2_remarks',
        'odoo_status',
        'transaction_number',
        'odoo_move_id',
        'odoo_voucher_number',
        'odoo_response',
        'pushed_at'
    ];

    protected $dates = [
        'initiated_at',
        'l1_approved_at',
        'l2_approved_at',
        'pushed_at'
    ];

    protected $casts = [
        'total_debit' => 'float',
        'total_credit' => 'float',
        'amount' => 'float',
    ];

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

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

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

    public function getEntriesAttribute()
    {
        return $this->entries_json ? json_decode($this->entries_json, true) : [];
    }
}
