simedkom/app/Enums/ApprovalStatus.php

44 lines
1.2 KiB
PHP

<?php
namespace App\Enums;
use App\Filament\Support\CheerfulNotification;
use App\Traits\Enum\WithComment;
use App\Traits\Enum\WithValue;
use Filament\Support\Contracts\HasColor;
use Filament\Support\Contracts\HasLabel;
enum ApprovalStatus: int implements HasColor, HasLabel
{
use WithComment, WithValue;
case PENDING = 1;
case ACCEPTED = 2;
case REJECTED = 3;
public function getLabel(): ?string
{
return match ($this) {
self::PENDING => CheerfulNotification::getMessage('Menunggu Persetujuan ⏳✨', 'Menunggu'),
self::ACCEPTED => CheerfulNotification::getMessage('Diterima! ✅🚀', 'Menerima'),
self::REJECTED => CheerfulNotification::getMessage('Ditolak, Tetap Semangat! 🛑😔', 'Menolak'),
};
}
public function getColor(): string|array|null
{
return match ($this) {
self::PENDING => 'warning',
self::ACCEPTED => 'success',
self::REJECTED => 'danger',
};
}
public static function options(): array
{
return collect(self::cases())
->mapWithKeys(fn ($case) => [$case->value => $case->getLabel()])
->toArray();
}
}