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)); }