<?php

namespace Database\Factories;

use App\Models\Credit;
use App\Models\Installment;
use Illuminate\Database\Eloquent\Factories\Factory;

class InstallmentFactory extends Factory
{
    protected $model = Installment::class;

    public function definition()
    {
        return [
            'credit_id' => Credit::factory(),
            'installment_number' => 1,
            'status' => Installment::STATUS_PENDING,
            'due_date' => now()->addDays(7),
            'paid_date' => null,
            'principal_amount' => 50000,
            'interest_amount' => 10000,
            'total_amount' => 60000,
            'principal_balance_after' => 60000,
            'amount_paid' => 0,
        ];
    }

    public function paid()
    {
        return $this->state(function () {
            return [
                'status' => Installment::STATUS_PAID,
                'amount_paid' => 60000,
                'principal_balance_after' => 0,
                'paid_date' => now(),
            ];
        });
    }

    public function partial()
    {
        return $this->state(function () {
            return [
                'status' => Installment::STATUS_PARTIAL_PAID,
                'amount_paid' => 20000,
                'principal_balance_after' => 40000,
            ];
        });
    }

    public function overdue()
    {
        return $this->state(function () {
            return [
                'status' => Installment::STATUS_OVERDUE,
                'due_date' => now()->subDays(5),
                'amount_paid' => 0,
                'principal_balance_after' => 60000,
            ];
        });
    }
}
