<?php

namespace App\Enums;

enum PaymentMethod: string
{
    case Transfer = 'transfer';
    case Qris     = 'qris';
    case Cod      = 'cod';

    public function label(): string
    {
        return match ($this) {
            self::Transfer => 'Transfer Bank',
            self::Qris     => 'QRIS',
            self::Cod      => 'Bayar di Tempat (COD)',
        };
    }

    /**
     * Apakah metode ini memerlukan bukti pembayaran.
     * COD tidak perlu, verifikasi dilakukan oleh kurir saat antar.
     */
    public function requiresProof(): bool
    {
        return match ($this) {
            self::Transfer, self::Qris => true,
            self::Cod                  => false,
        };
    }

    public static function forSelect(): array
    {
        return array_map(fn ($case) => [
            'value' => $case->value,
            'label' => $case->label(),
        ], self::cases());
    }
}
