public async Task <IActionResult> GetProductByIdAsync(string id, CancellationToken cancellationToken)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(BadRequest(new { Message = "Id Cant be null" }));
            }

            var result = await _catalogContext.Products.Where(x => x.Id == id)
                         .Include(x => x.ProductImages)
                         .Include(x => x.ProductColors)
                         .FirstOrDefaultAsync(cancellationToken);

            if (result != null)
            {
                var imagesWithUrl = new List <ProductImage>();
                foreach (var img in result.ProductImages.ToList())
                {
                    var imgWithUrl = await UrlImageHelper <ProductImage> .GetImageBase64UrlAsync(img.ProductId, img,
                                                                                                 _fileUtility, "ProductImage",
                                                                                                 cancellationToken);

                    imagesWithUrl.Add(imgWithUrl);
                }

                var productViewModel = new ProductViewModel
                {
                    CategoryId     = result.CategoryId,
                    ManufacturerId = result.ManufacturerId,
                    Description    = result.Description,
                    Id             = result.Id,
                    Name           = result.Name,
                    Price          = result.Price,
                    ProductColors  = result.ProductColors.ToArray(),
                    ProductImages  = imagesWithUrl.ToArray(),
                    Location       = result.Location,
                    MinPurchase    = result.MinPurchase,
                    HasExpiry      = result.HasExpiry ? "True" : "False",
                    ExpireDate     = result.ExpireDate.ToShortDateString(),
                    Discount       = result.Discount,
                    Stock          = result.AvailableStock
                };
                return(Ok(productViewModel));
            }

            return(NotFound());
        }
        public async Task <IActionResult> GetManufacturerByIdAsync(int id, CancellationToken cancellationToken)
        {
            if (id <= 0)
            {
                return(BadRequest(new { Message = $"Invalid Manufacturer id." }));
            }

            var result = await _catalogContext.Manufacturers.Where(x => x.Id == id)
                         .FirstOrDefaultAsync(cancellationToken);

            if (result != null)
            {
                var withUrl =
                    await UrlImageHelper <Manufacturer> .GetImageBase64UrlAsync(result, _fileUtility, "Manufacturer",
                                                                                cancellationToken);

                return(Ok(withUrl));
            }

            return(NotFound());
        }