public async Task <IActionResult> Create() { var categories = await this.categoriesService.GetAll <CategoryDropdownViewModel>(); var viewModel = new AdminProductCreateInputModel(); viewModel.Categories = categories; return(this.View(viewModel)); }
public async Task <IActionResult> Create(AdminProductCreateInputModel inputModel) { if (!this.ModelState.IsValid) { // Pass back the categories list because POST Requests lose Collections var categories = await this.categoriesService.GetAll <CategoryDropdownViewModel>(); inputModel.Categories = categories; return(this.View(inputModel)); } var imageUploadModel = new ImageUploadInputModel(); if (inputModel.ImageModel.ImageFile != null) { imageUploadModel = new ImageUploadInputModel { ImageFile = inputModel.ImageModel.ImageFile, }; await this.UploadProductImage(imageUploadModel); } var filteredSizesInputs = inputModel.Sizes .Where(s => !string.IsNullOrEmpty(s.Name) && s.Price >= 0M).ToList(); List <ProductSize> sizes = this.mapper.Map <List <ProductSize> >(filteredSizesInputs); var product = new Product { Name = inputModel.Name, Description = inputModel.Description, CategoryId = inputModel.CategoryId, Sizes = sizes, ImageUrl = imageUploadModel.ImageUrl, ImageStorageName = imageUploadModel.ImageStorageName, }; await this.productsService.CreateAsync(product); return(this.RedirectToAction("View", new { id = product.Id })); }