protected virtual async Task <ProductViewModel> GetProductViewModelAsync(string id, string variantId = null)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(ContextHelper.HandlePreviewMode(() => GetProductViewModelAsync(PreviewModeService.Value.GetProductId()).Result));
            }

            var productViewModel = await ProductService.GetProductViewModelAsync(new GetProductParam
            {
                ProductId   = id,
                CultureInfo = ComposerContext.CultureInfo,
                Scope       = ComposerContext.Scope,
                VariantId   = variantId,
                BaseUrl     = RequestUtils.GetBaseUrl(Request).ToString()
            }).ConfigureAwait(false);


            if (productViewModel == null)
            {
                throw new HttpException(404, "Product Not Found");
            }

            return(productViewModel);
        }