<?php

namespace App\Enums;

use Filament\Support\Contracts\HasDescription;
use Filament\Support\Contracts\HasIcon;
use Filament\Support\Contracts\HasLabel;
use ToneGabes\BetterOptions\Contracts\HasExtraText;
use ToneGabes\Filament\Icons\Enums\Phosphor;

enum Plan: string implements HasDescription, HasExtraText, HasIcon, HasLabel
{
    case Standard = 'standard';
    case Smart = 'smart';
    case Premium = 'premium';

    public function getDescription(): string
    {
        return match ($this) {
            self::Standard => 'Zahlungen können für jedes Gutachten einzeln getätigt werden',
            self::Smart => 'Zahlung erfolgt monatlich, ohne Begrenzung für die erstellten Gutachten',
            self::Premium => 'Zahlung erfolgt jährlich, ohne Begrenzung für die erstellten Gutachten, Gutachter oder Auftraggeber',
        };
    }

    public function getExtraText(): string
    {
        return match ($this) {
            self::Standard => 'model.standard',
            self::Smart => 'model.smart',
            self::Premium => 'model.premium',
        };
    }

    public function getIcon(): string
    {
        return match ($this) {
            self::Standard => Phosphor::Airplane->thin(),
            self::Smart => Phosphor::AirplaneTakeoff->thin(),
            self::Premium => Phosphor::AirplaneInFlight->thin(),
        };
    }

    public function getLabel(): ?string
    {
        return match ($this) {
            self::Standard => 'Per Gutachten',
            self::Smart => 'Monatlich',
            self::Premium => 'Jährlich',
        };
    }
}
