1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
-
- namespace App\Enums\Accounting;
-
- use Filament\Support\Contracts\HasColor;
- use Filament\Support\Contracts\HasLabel;
-
- enum BillStatus: string implements HasColor, HasLabel
- {
- case Overdue = 'overdue';
- case Partial = 'partial';
- case Paid = 'paid';
- case Open = 'open';
- case Void = 'void';
-
- public function getLabel(): ?string
- {
- return $this->name;
- }
-
- public function getColor(): string | array | null
- {
- return match ($this) {
- self::Open => 'info',
- self::Overdue => 'danger',
- self::Partial => 'warning',
- self::Paid => 'success',
- self::Void => 'gray',
- };
- }
-
- public static function canBeOverdue(): array
- {
- return [
- self::Partial,
- self::Open,
- ];
- }
-
- public static function unpaidStatuses(): array
- {
- return [
- self::Open,
- self::Partial,
- self::Overdue,
- ];
- }
-
- public static function getUnpaidOptions(): array
- {
- return collect(self::cases())
- ->filter(fn (self $case) => in_array($case, self::unpaidStatuses()))
- ->mapWithKeys(fn (self $case) => [$case->value => $case->getLabel()])
- ->toArray();
- }
- }
|