public async Task <IActionResult> CreateProduct(AdminPanelCreateProductViewModel data)
        {
            var categories = _dbContext.Categories.Select(c => new CategoryDTO()
            {
                Id   = c.Id,
                Name = c.Name
            }).ToList();

            data.Categories = categories;
            if (data.Image == null)
            {
                ModelState.AddModelError("", "Фото товара должно быть установлено");
            }
            if (!data.Image.IsImage())
            {
                ModelState.AddModelError("", "Загруженный файл не является изображением");
            }
            if (!ModelState.IsValid)
            {
                return(View(data));
            }

            var product = new Product()
            {
                CategoryId  = data.Category.Value,
                Name        = data.ProductName,
                Description = data.ProductDescription,
                Price       = (decimal)data.ProductPrice.Value,
                Rating      = 0
            };

            var imageData = await CreateProductImageMetadata(data.Image);

            await _dbContext.ImageMetadata.AddAsync(imageData);

            await _dbContext.SaveChangesAsync();

            product.ImageId = imageData.Id;
            var attributeValues = new Dictionary <string, string>();

            foreach (var propertyInfo in data.PropertyInfos)
            {
                attributeValues[propertyInfo.PropertyId.ToString()] = propertyInfo.Value;
            }

            var jsonDoc = JsonDocument.Parse(JsonSerializer.SerializeToUtf8Bytes(attributeValues));

            product.AttributeValues = jsonDoc;

            await _dbContext.Products.AddAsync(product);

            await _dbContext.SaveChangesAsync();

            return(RedirectToAction("Products"));
        }
        public IActionResult CreateProduct()
        {
            var model      = new AdminPanelCreateProductViewModel();
            var categories = _dbContext.Categories.Select(c => new CategoryDTO()
            {
                Id   = c.Id,
                Name = c.Name
            }).ToList();

            model.Categories = categories;

            return(View(model));
        }