46 lines
1.1 KiB
PHP
46 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Invoice\Enums;
|
|
|
|
use Illuminate\Support\Collection;
|
|
|
|
enum InvoiceStatus: string
|
|
{
|
|
case NEW = 'Neu';
|
|
case SENT = 'Rechnung gestellt';
|
|
case PAID = 'Rechnung beglichen';
|
|
|
|
/**
|
|
* @return Collection<int, string>
|
|
*/
|
|
public static function values(): Collection
|
|
{
|
|
return collect(static::cases())->map(fn ($case) => $case->value);
|
|
}
|
|
|
|
/**
|
|
* @return Collection<int, string>
|
|
*/
|
|
public static function defaultVisibleValues(): Collection
|
|
{
|
|
return collect(static::cases())->filter(fn ($value) => $value->defaultVisible())->map(fn ($case) => $case->value);
|
|
}
|
|
|
|
public function defaultVisible(): bool
|
|
{
|
|
return match ($this) {
|
|
static::NEW => true,
|
|
static::SENT => true,
|
|
static::PAID => false
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @return array<int, array{id: string, name: string}>
|
|
*/
|
|
public static function forSelect(): array
|
|
{
|
|
return array_map(fn ($case) => ['id' => $case->value, 'name' => $case->value], static::cases());
|
|
}
|
|
}
|