. */ declare(strict_types=1); namespace App\Services\InfoProviderSystem\Providers; /** * This enum contains all capabilities (which data it can provide) a provider can have. */ enum ProviderCapabilities { /** Basic information about a part, like the name, description, part number, manufacturer etc */ case BASIC; /** Information about the footprint of a part */ case FOOTPRINT; /** Provider can provide a picture for a part */ case PICTURE; /** Provider can provide datasheets for a part */ case DATASHEET; /** Provider can provide prices for a part */ case PRICE; public function getTranslationKey(): string { return 'info_providers.capabilities.' . match($this) { self::BASIC => 'basic', self::FOOTPRINT => 'footprint', self::PICTURE => 'picture', self::DATASHEET => 'datasheet', self::PRICE => 'price', }; } public function getFAIconClass(): string { return 'fa-solid ' . match($this) { self::BASIC => 'fa-info-circle', self::FOOTPRINT => 'fa-microchip', self::PICTURE => 'fa-image', self::DATASHEET => 'fa-file-alt', self::PRICE => 'fa-money-bill-wave', }; } }