// Administration/CateringFood/Edit public async Task SetEditModel(EditCateringFoodModel model) { var cateringProduct = this.cateringRepository .All() .Where(x => x.Id == model.Id) .Include(x => x.Size) .Include(x => x.Allergens) .FirstOrDefault(); if (cateringProduct is null) { throw new ArgumentException(string.Format(ExceptionMessages.NotExists, nameof(cateringProduct))); } if (model.Image != null) { model.ImageUrl = await this.cloudService.UploadImageFromForm(model.Image); } cateringProduct.Name = model.Name; cateringProduct.NumberOfBits = model.NumberOfBits; cateringProduct.Description = model.Description; cateringProduct.ImageUrl = model.ImageUrl; var size = cateringProduct.Size; size.Id = model.Size.SizeId; size.SizeName = model.Size.SizeName; size.MaxProductsInPackage = model.Size.MaxProductsInPackage; size.CareringProductId = cateringProduct.Id; size.PackageId = model.Size.PackageId; size.Price = model.Size.Price; size.Weight = model.Size.Weight; foreach (var item in model.Allergens) { if (item.Selected) { if (!cateringProduct.Allergens.Any(x => x.AllergenId == item.Value)) { cateringProduct.Allergens .Add(new AllergensProducts() { ProductId = cateringProduct.Id, AllergenId = item.Value, }); } } else { if (cateringProduct.Allergens.Any(x => x.AllergenId == item.Value)) { var allergenProduct = cateringProduct.Allergens.FirstOrDefault(x => x.AllergenId == item.Value); this.allergensProductsRepository.HardDelete(allergenProduct); } } } this.allergensProductsRepository.SaveChanges(); this.cateringRepository.SaveChanges(); }
// Administration/CateringFood/Edit public EditCateringFoodModel GetEditModel(string id) { if (string.IsNullOrEmpty(id)) { throw new ArgumentNullException(); } try { var cateringProduct = this.cateringRepository .All() .Where(x => x.Id == id) .FirstOrDefault(); if (cateringProduct is null) { throw new ArgumentNullException(string.Format(ExceptionMessages.NotExists, nameof(cateringProduct))); } var model = new EditCateringFoodModel() { Id = cateringProduct.Id, Name = cateringProduct.Name, ImageUrl = cateringProduct.ImageUrl, NumberOfBits = cateringProduct.NumberOfBits, Description = cateringProduct.Description, Size = new EditProductSizeModel() { SizeId = cateringProduct.Size.Id, SizeName = cateringProduct.Size.SizeName, Price = cateringProduct.Size.Price, Weight = cateringProduct.Size.Weight, PackageId = cateringProduct.Size.PackageId, MaxProductsInPackage = cateringProduct.Size.MaxProductsInPackage, }, AvailablePackages = this.packagesService.All().ToList(), }; model.Allergens = this.allergensService .All() .Select(c => new SelectListItem() { Value = c.Id, Text = c.Name, Selected = cateringProduct.Allergens.Any(a => a.AllergenId == c.Id) ? true : false, }).ToList(); return(model); } catch (Exception e) { throw new Exception(e.Message, e); } }
public IActionResult Edit(EditCateringFoodModel model) { if (!this.ModelState.IsValid) { model.AvailablePackages = this.packagesService.All().ToList(); return(this.View(model)); } try { this.cateringFoodService.SetEditModel(model); return(this.RedirectToAction("Index")); } catch (Exception e) { this.logger.LogInformation(GlobalConstants.DefaultLogPattern, this.User.Identity.Name, e.Message, e.StackTrace); return(this.BadRequest()); } }