82 lines
1.8 KiB
PHP
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
|
|
}
|
|
}
|