// 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);
            }
        }
예제 #3
0
        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());
            }
        }