<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class CollectionAction extends Model
{
    use SoftDeletes;

    protected $table = 'collection_actions';

    protected $fillable = [
        'application_id',
        'user_id',
        'action_date',
        'dispo_code',
        'customer_response_code',
        'remarks',
        'next_action_date',
        'actual_amount_to_be_collected',
        'amount_to_be_received',
        'ptp_date',
        'on_field_visit',
        'installment_details',
        'created_at',
        'updated_at',
    ];

    protected $casts = [
        'action_date' => 'date',
        'next_action_date' => 'date',
        'ptp_date' => 'date',
        'actual_amount_to_be_collected' => 'decimal:2',
        'amount_to_be_received' => 'decimal:2',
    ];

    public function setInstallmentDetailsAttribute($value)
    {
        $decoded = is_string($value) ? json_decode($value, true) : $value;
        if (is_array($decoded) && request()->has('installment_dates')) {
            $dates = request()->input('installment_dates', []);
            $combined = [];
            foreach ($decoded as $key => $amount) {
                if (is_array($amount)) {
                    $combined[$key] = $amount;
                } else {
                    $combined[$key] = [
                        'amount' => $amount,
                        'date'   => $dates[$key] ?? null
                    ];
                }
            }
            $this->attributes['installment_details'] = json_encode($combined);
        } else {
            $this->attributes['installment_details'] = is_array($value) ? json_encode($value) : $value;
        }
    }
}
