65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Enums;
|
|
|
|
enum NotificationFilterAttribute: string
|
|
{
|
|
case ProjectId = 'project.id';
|
|
case ProjectKey = 'project.key';
|
|
case ProjectName = 'project.name';
|
|
case TicketId = 'ticket.id';
|
|
case TicketKey = 'ticket.key';
|
|
case TicketTitle = 'ticket.title';
|
|
case TicketUrl = 'ticket.url';
|
|
case ActorId = 'actor.id';
|
|
case ActorName = 'actor.name';
|
|
case StatusFromId = 'status.from.id';
|
|
case StatusFromLabel = 'status.from.label';
|
|
case StatusToId = 'status.to.id';
|
|
case StatusToLabel = 'status.to.label';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::ProjectId => 'Project ID',
|
|
self::ProjectKey => 'Project key',
|
|
self::ProjectName => 'Project name',
|
|
self::TicketId => 'Ticket ID',
|
|
self::TicketKey => 'Ticket key',
|
|
self::TicketTitle => 'Ticket title',
|
|
self::TicketUrl => 'Ticket URL',
|
|
self::ActorId => 'Actor ID',
|
|
self::ActorName => 'Actor name',
|
|
self::StatusFromId => 'From status ID',
|
|
self::StatusFromLabel => 'From status label',
|
|
self::StatusToId => 'To status ID',
|
|
self::StatusToLabel => 'To status label',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @return array<int, array{label: string, value: string}>
|
|
*/
|
|
public static function options(): array
|
|
{
|
|
return array_map(
|
|
static fn (self $attribute): array => [
|
|
'label' => $attribute->label(),
|
|
'value' => $attribute->value,
|
|
],
|
|
self::cases(),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @return array<int, string>
|
|
*/
|
|
public static function values(): array
|
|
{
|
|
return array_map(
|
|
static fn (self $attribute): string => $attribute->value,
|
|
self::cases(),
|
|
);
|
|
}
|
|
}
|