2024-09-03 15:15:57 -07:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Enums;
|
|
|
|
|
2024-10-10 15:15:30 -07:00
|
|
|
use Filament\Support\Contracts\HasColor;
|
|
|
|
use Filament\Support\Contracts\HasIcon;
|
|
|
|
use Filament\Support\Contracts\HasLabel;
|
|
|
|
|
|
|
|
enum OrderStatus: string implements HasColor, HasIcon, HasLabel
|
2024-09-03 15:15:57 -07:00
|
|
|
{
|
2025-02-16 23:49:15 -05:00
|
|
|
case DRAFT = 'draft';
|
|
|
|
case APPROVED = 'approved';
|
|
|
|
case PRODUCTION = 'production';
|
|
|
|
case SHIPPED = 'shipped';
|
|
|
|
case READY_FOR_INVOICE = 'ready_for_invoice';
|
|
|
|
case INVOICED = 'invoiced';
|
2024-10-10 15:15:30 -07:00
|
|
|
|
2025-02-16 23:49:15 -05:00
|
|
|
public function getLabel(): string
|
2024-10-10 15:15:30 -07:00
|
|
|
{
|
2025-02-16 23:49:15 -05:00
|
|
|
return match ($this) {
|
|
|
|
self::DRAFT => 'Draft',
|
|
|
|
self::APPROVED => 'Approved',
|
|
|
|
self::PRODUCTION => 'Production',
|
|
|
|
self::SHIPPED => 'Shipped',
|
|
|
|
self::READY_FOR_INVOICE => 'Ready for Invoice',
|
|
|
|
self::INVOICED => 'Invoiced',
|
|
|
|
};
|
2024-10-10 15:15:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
public function getColor(): string|array|null
|
|
|
|
{
|
|
|
|
return match ($this) {
|
2025-02-14 22:23:51 -05:00
|
|
|
self::DRAFT => 'gray',
|
|
|
|
self::APPROVED => 'success',
|
|
|
|
self::PRODUCTION => 'primary',
|
|
|
|
self::SHIPPED => 'warning',
|
|
|
|
self::READY_FOR_INVOICE => 'invoicing',
|
|
|
|
self::INVOICED => 'invoiced',
|
2024-10-10 15:15:30 -07:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
public function getIcon(): ?string
|
|
|
|
{
|
|
|
|
return match ($this) {
|
2025-02-14 22:23:51 -05:00
|
|
|
self::DRAFT => IconEnum::DRAFT->value,
|
|
|
|
self::APPROVED => IconEnum::APPROVED->value,
|
|
|
|
self::PRODUCTION => IconEnum::PRODUCTION->value,
|
|
|
|
self::SHIPPED => IconEnum::SHIPPED->value,
|
|
|
|
self::READY_FOR_INVOICE => IconEnum::INVOICING->value,
|
|
|
|
self::INVOICED => IconEnum::INVOICED->value,
|
2024-10-10 15:15:30 -07:00
|
|
|
};
|
|
|
|
}
|
2024-09-03 15:15:57 -07:00
|
|
|
}
|