<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;

class PaymentMethod extends Model
{
    protected $fillable = [
        'name',
        'slug',
        'status',
        'fee_type',
        'fee_value',
        'icon',
        'sort_order',
        'payment_details',
    ];

    protected function casts(): array
    {
        return [
            'fee_value' => 'decimal:2',
        ];
    }

    public function orders(): HasMany
    {
        return $this->hasMany(Order::class);
    }

    public function isActive(): bool
    {
        return $this->status === 'active';
    }

    /**
     * احسب رسوم الدفع.
     * النسبة تُحسب من (صافي المنتجات = subtotal - points_discount).
     */
    public function calculateFee(float $netSubtotal): float
    {
        if ($this->fee_type === 'fixed') {
            return (float) $this->fee_value;
        }

        return round($netSubtotal * ((float) $this->fee_value / 100), 2);
    }

    public static function getActiveOptions(): \Illuminate\Support\Collection
    {
        return static::where('status', 'active')->orderBy('sort_order')->get();
    }

    /**
     * هل هذه الطريقة دفع عند الاستلام (لا تتطلب رفع إيصال)؟
     */
    public function isCod(): bool
    {
        return strtolower($this->slug ?? '') === 'cash';
    }
}
