public static function getRouteName(bool $isAdmin = true, string $routePrefix = null, string $routeType = null, string $requestMethod = null): string
    {
        $routeName = '';

        if ($isAdmin) {
            $routeName .= ROUTEPREFIX_ADMIN;
        }

        if ($routePrefix !== null) {
            $routeName .= '.' . $routePrefix;
        }

        if ($requestMethod !== null) {
            $validActionMethods = ['put', 'post'];
            if (!in_array($requestMethod, $validActionMethods)) {
                throw new \Exception("Invalid request method $requestMethod. Only post and put accepted in route names.");
            }

            $routeName .= '.' . $requestMethod;
        }

        if ($routeType !== null) {
            if (!in_array($routeType, self::VALID_ROUTE_TYPES)) {
                throw new \Exception("Invalid route type $routeType");
            }

            $routeName .= '.' . $routeType;
        }

        return $routeName;
    }