simedkom/app/Enums/Channel.php

53 lines
1.3 KiB
PHP

<?php
namespace App\Enums;
use App\Traits\Enum\WithComment;
use Filament\Support\Contracts\HasLabel;
enum Channel: string implements HasLabel
{
use WithComment;
case WEBSITE = 'website';
case TIKTOK = 'tiktok';
case YOUTUBE = 'youtube';
case FACEBOOK = 'facebook';
case INSTAGRAM = 'instagram';
case TWITTER = 'twitter';
case OTHER = 'other';
public function getLabel(): ?string
{
return match ($this) {
self::WEBSITE => 'Website',
self::TIKTOK => 'Tiktok',
self::YOUTUBE => 'Youtube',
self::FACEBOOK => 'Facebook',
self::INSTAGRAM => 'Instagram',
self::TWITTER => 'Twitter',
self::OTHER => 'Other',
};
}
public function getColor(): string
{
return match ($this) {
self::WEBSITE => 'info',
self::TIKTOK => 'success',
self::YOUTUBE => 'warning',
self::FACEBOOK => 'danger',
self::INSTAGRAM => 'primary',
self::TWITTER => 'secondary',
self::OTHER => 'gray',
};
}
public static function options(): array
{
return collect(self::cases())
->mapWithKeys(fn ($case) => [$case->value => $case->getLabel()])
->toArray();
}
}