'Fixed Limit', self::PERCENTAGE => 'Percentage', self::UNLIMITED => 'Unlimited', }; } public static function values(): array { return array_column(self::cases(), 'value'); } public function getAllocationValueRules(): array { return match ($this) { self::FIXED_LIMIT => ['required', 'integer', 'min:0'], self::PERCENTAGE => ['required', 'integer', 'min:1', 'max:10000'], self::UNLIMITED => ['nullable'], }; } }