ldc-supportweb/app/Enums/Planning/CellModelEnum.php
2023-08-14 09:23:39 +00:00

82 lines
1.8 KiB
PHP

<?php
namespace App\Enums\Planning;
use App\Traits\Enums\BaseEnum;
use JsonSerializable;
enum CellModelEnum: string implements JsonSerializable
{
use BaseEnum;
case ticket = 'tickets';
case site = 'sites';
case project = 'projects';
/**
* Optionnal labels definition
*/
private const LABELS = [
self::ticket->name => 'Ticket',
self::site->name => 'Site',
self::project->name => 'Projet',
];
/**
* Optionnal tables definition
*
* This is now a const, so we can't do (new Ticket())->getTable() anymore,
* we need to write it as a constant string.
*/
private const TABLES = [
self::ticket->name => 'tickets',
self::site->name => 'sites',
self::project->name => 'projects',
];
/**
* Get Table
*
* @return string
*/
public function table(): string
{
return self::TABLES[$this->name];
}
/**
* Get enum tables
*
* @return array<string>
*/
public static function toTables(): array
{
return self::TABLES;
}
/**
* Datas to send with json_encode.
*
* @return mixed
*/
public function jsonSerialize(): mixed
{
return match ($this) {
self::ticket => [
'label' => self::ticket->label(),
'name' => self::ticket->name(),
'value' => self::ticket->value()
],
self::site => [
'label' => self::site->label(),
'name' => self::site->name(),
'value' => self::site->value()
],
self::project => [
'label' => self::project->label(),
'name' => self::project->name(),
'value' => self::project->value()
],
}; //end match
}
}