adrema/app/Invoice/Enums/InvoiceStatus.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());
}
}