adrema/app/Prevention/Enums/Prevention.php

54 lines
1.3 KiB
PHP

<?php
namespace App\Prevention\Enums;
use App\Member\Member;
use Carbon\Carbon;
use Illuminate\Support\Collection;
enum Prevention
{
case EFZ;
case PS;
case MOREPS;
case VK;
public function text(): string
{
return match ($this) {
static::EFZ => 'erweitertes Führungszeugnis',
static::PS => 'Präventionsschulung Basis Plus',
static::MOREPS => 'Präventionsschulung (Auffrischung)',
static::VK => 'Verhaltenskodex',
};
}
public function tooltip(bool $value): string
{
return $this->text() . ' ' . ($value ? 'vorhanden' : 'nicht vorhanden');
}
public function letter(): string
{
return match ($this) {
static::EFZ => 'F',
static::PS => 'P',
static::MOREPS => 'A',
static::VK => 'V',
};
}
/**
* @param array<int, self> $preventions
* @return Collection<int, array{letter: string, value: bool, tooltip: string}>
*/
public static function items(array $preventions): Collection
{
return collect(static::cases())->map(fn ($case) => [
'letter' => $case->letter(),
'value' => !in_array($case, $preventions),
'tooltip' => $case->tooltip(!in_array($case, $preventions)),
]);
}
}