. */ 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; /** 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; /** Information about the footprint of a part */ case FOOTPRINT; /** Provider can provide GTIN for a part */ case GTIN; /** * Get the order index for displaying capabilities in a stable order. * @return int */ public function getOrderIndex(): int { return match($this) { self::BASIC => 1, self::PICTURE => 2, self::DATASHEET => 3, self::PRICE => 4, self::FOOTPRINT => 5, self::GTIN => 6, }; } 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', self::GTIN => 'gtin', }; } 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', self::GTIN => 'fa-barcode', }; } }