Exemplo n.º 1
0
        public ControllerMessage Update(DishEditDTO dishEditDTO)
        {
            string message = String.Empty;
            bool   success = Validate(dishEditDTO, ref message);

            if (success)
            {
                try
                {
                    DishEntity dishEntity = unitOfWork.Dishes.Get(dishEditDTO.OldName);
                    dishEntity.Name  = dishEditDTO.NewName;
                    dishEntity.Price = dishEditDTO.Price;

                    unitOfWork.Commit();

                    message = "Dish changed";
                }
                catch (Exception ex)
                {
                    success = false;
                    message = ExceptionMessageBuilder.BuildMessage(ex);
                }
            }

            return(new ControllerMessage(success, message));
        }
Exemplo n.º 2
0
        public async Task <bool> EditDishAsync(DishEditDTO dishEditDTO, string webRootPath)
        {
            Dish dishToUpdate = await _dishRepository.GetAsync(dishEditDTO.Id);

            if (dishToUpdate != null)
            {
                dishToUpdate.Name        = dishEditDTO.Name;
                dishToUpdate.Description = dishEditDTO.Description;
                dishToUpdate.Weight      = dishEditDTO.Weight;
                dishToUpdate.Price       = dishEditDTO.Price;
                dishToUpdate.DishGroupId = dishEditDTO.DishGroupId;

                string oldImageUrl = dishToUpdate.ImageURL;

                if (!String.IsNullOrEmpty(dishEditDTO.ImageURL))
                {
                    dishToUpdate.ImageURL = dishEditDTO.ImageURL;
                }

                _dishRepository.Update(dishToUpdate);

                if (await _unitOfWork.SaveChangesAsync() > 0)
                {
                    if (!String.IsNullOrEmpty(dishEditDTO.ImageURL) && File.Exists($"{webRootPath}/{oldImageUrl}"))
                    {
                        File.Delete($"{webRootPath}/{oldImageUrl}");
                    }

                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Edit(DishEditViewModel dishEditViewModel, IFormFile uploadedImage)
        {
            try
            {
                DishEditDTO dishEditDTO = new DishEditDTO()
                {
                    Id          = dishEditViewModel.Id,
                    Name        = dishEditViewModel.Name,
                    Description = dishEditViewModel.Description,
                    Weight      = dishEditViewModel.Weight,
                    Price       = dishEditViewModel.Price,
                    DishGroupId = dishEditViewModel.DishGroupId,
                    ImageURL    = await SaveDishImageAsync(uploadedImage, dishEditViewModel.Id)
                };

                bool response = await _dishService.EditDishAsync(dishEditDTO, _hostingEnvironment.WebRootPath);

                if (response)
                {
                    return(RedirectToAction("Info", new { id = dishEditDTO.Id }));
                }
            }
            catch (Exception ex)
            {
                //logging
            }

            return(ErrorView());
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Create()
        {
            try
            {
                DishEditDTO dishEditDTO = await _dishService.GetCreateDishEditDTOAsync();

                DishEditViewModel dishEditViewModel = new DishEditViewModel()
                {
                    DishGroups = dishEditDTO.DishGroups
                                 .Select(x => new SelectListItem()
                    {
                        Text  = x.Text,
                        Value = x.Value
                    }).ToList()
                };

                return(View(dishEditViewModel));
            }
            catch (Exception)
            {
                //logging
            }

            return(ErrorView());
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Edit(int id)
        {
            try
            {
                DishEditDTO dishEditDTO = await _dishService.GetDishByIdForEditAsync(id);

                if (dishEditDTO != null)
                {
                    DishEditViewModel dishEditViewModel = new DishEditViewModel()
                    {
                        Name        = dishEditDTO.Name,
                        Description = dishEditDTO.Description,
                        Weight      = dishEditDTO.Weight,
                        Price       = dishEditDTO.Price,
                        DishGroupId = dishEditDTO.DishGroupId,
                        ImageURL    = dishEditDTO.ImageURL,
                        DishGroups  = dishEditDTO.DishGroups
                                      .Select(x => new SelectListItem()
                        {
                            Text  = x.Text,
                            Value = x.Value
                        }).ToList()
                    };

                    return(View(dishEditViewModel));
                }
            }
            catch (Exception)
            {
                //logging
            }

            return(ErrorView());
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Create(DishEditViewModel dishEditViewModel, IFormFile uploadedImage)
        {
            try
            {
                DishEditDTO dishEditDTO = new DishEditDTO()
                {
                    Name        = dishEditViewModel.Name,
                    Description = dishEditViewModel.Description,
                    Weight      = dishEditViewModel.Weight,
                    Price       = dishEditViewModel.Price,
                    DishGroupId = dishEditViewModel.DishGroupId,
                    ImageURL    = "/images/No_Image_Available.jpg"
                };

                bool response = await _dishService.CreateNewDishAsync(dishEditDTO);

                if (response)
                {
                    dishEditDTO.ImageURL = await SaveDishImageAsync(uploadedImage, dishEditDTO.Id);

                    bool responseImg = await _dishService.EditDishImageAsync(dishEditDTO);

                    if (responseImg)
                    {
                        return(RedirectToAction("Info", new { id = dishEditDTO.Id }));
                    }
                }
            }
            catch (Exception ex)
            {
                //logging
            }

            return(ErrorView());
        }
Exemplo n.º 7
0
        public UIElement GetEditView(IIngredientSubject subject, DishEditDTO dishEditDTO)
        {
            IngredientListViewModel ingredientListViewModel = new IngredientListViewModel(factory, subject);
            RecipeAddViewModel      recipeAddViewModel      = new RecipeAddViewModel(factory, this, ingredientListViewModel);

            recipeAddViewModel.MustSelectDish = false;

            DishEditViewModel viewModel = new DishEditViewModel(dishEditDTO, recipeAddViewModel);
            DishEditView      view      = new DishEditView(viewModel);

            viewModel.DishSaveRequest += (s, e) =>
            {
                using (IDishController controller = factory.CreateDishController())
                {
                    ControllerMessage controllerMessage = controller.Update(e.Data);
                    if (controllerMessage.IsSuccess)
                    {
                        Notify();
                    }
                    else
                    {
                        MessageBox.Show(controllerMessage.Message);
                    }
                }
            };
            viewModel.DishSaveRecipesRequest += (s, e) =>
            {
                using (IDishController controller = factory.CreateDishController())
                {
                    ControllerMessage controllerMessage = controller.UpdateRecipes(e.Data);
                    if (controllerMessage.IsSuccess)
                    {
                        Notify();
                    }
                    else
                    {
                        MessageBox.Show(controllerMessage.Message);
                    }
                }
            };
            viewModel.DishDeleteRequest += (s, e) =>
            {
                using (IDishController controller = factory.CreateDishController())
                {
                    ControllerMessage controllerMessage = controller.Delete(e.Data.OldName);
                    if (controllerMessage.IsSuccess)
                    {
                        Notify();
                        RaiseDishDeletedEvent(e.Data.OldName);
                    }
                    else
                    {
                        MessageBox.Show(controllerMessage.Message);
                    }
                }
            };

            return(view);
        }
Exemplo n.º 8
0
        public ControllerMessage UpdateRecipes(DishEditDTO dishEditDTO)
        {
            string message = String.Empty;
            bool   success = Validate(dishEditDTO, ref message);

            if (success)
            {
                try
                {
                    DishEntity dishEntity = unitOfWork.Dishes.Get(dishEditDTO.OldName);

                    IEnumerable <string> added = dishEditDTO.Recipes
                                                 .Select(recipe => recipe.Name)
                                                 .Where(recipeName => !dishEntity.Recipes.Select(recipe => recipe.Name).Contains(recipeName));
                    IEnumerable <string> deleted = dishEntity.Recipes
                                                   .Select(recipe => recipe.Name)
                                                   .Where(recipeName => !dishEditDTO.Recipes.Select(recipe => recipe.Name).Contains(recipeName))
                                                   .ToList();

                    foreach (DishRecipeEditDTO recipe in dishEditDTO.Recipes.Where(recipe => added.Contains(recipe.Name)))
                    {
                        if (!unitOfWork.Recipes.Exists(recipe.Name))
                        {
                            RecipeEntity recipeEntity = new RecipeEntity
                            {
                                Name              = recipe.Name,
                                Description       = recipe.Description,
                                Dish              = dishEntity,
                                RecipeIngredients = recipe.Ingredients.Select(ingredient => new RecipeIngredientEntity
                                {
                                    Portion    = ingredient.Portion,
                                    Ingredient = unitOfWork.Ingredients.Get(ingredient.Ingredient)
                                })
                                                    .ToList()
                            };
                            unitOfWork.Recipes.Add(recipeEntity);
                        }
                    }
                    foreach (string recipeName in deleted)
                    {
                        RecipeEntity recipeEntity = dishEntity.Recipes.Single(recipe => recipe.Name == recipeName);
                        unitOfWork.Recipes.Remove(recipeEntity);
                    }

                    unitOfWork.Commit();

                    message = "Dish's recipes changed";
                }
                catch (Exception ex)
                {
                    success = false;
                    message = ExceptionMessageBuilder.BuildMessage(ex);
                }
            }

            return(new ControllerMessage(success, message));
        }
        private void RaiseDishDeleteRequestEvent(DishEditDTO dish)
        {
            var handler = DishDeleteRequest;

            if (handler != null)
            {
                GenericEventArgs <DishEditDTO> e = new GenericEventArgs <DishEditDTO>(dish);
                handler(this, e);
            }
        }
Exemplo n.º 10
0
        public DataControllerMessage <DishEditDTO> Get(string dishName)
        {
            string      message = String.Empty;
            bool        success = true;
            DishEditDTO data    = null;

            try
            {
                DishEntity dishEntity = unitOfWork.Dishes.Get(dishName);
                if (dishEntity != null)
                {
                    data = new DishEditDTO
                    {
                        NewName      = dishEntity.Name,
                        OldName      = dishEntity.Name,
                        Price        = dishEntity.Price,
                        CategoryName = dishEntity.Category.Name
                    };

                    foreach (RecipeEntity recipeEntity in dishEntity.Recipes)
                    {
                        DishRecipeEditDTO dishRecipe = new DishRecipeEditDTO
                        {
                            Name        = recipeEntity.Name,
                            Description = recipeEntity.Description
                        };

                        var ingredients = recipeEntity.RecipeIngredients.Select(ri => new IngredientPortion
                        {
                            Ingredient = ri.Ingredient.Name,
                            Portion    = ri.Portion
                        })
                                          .OrderBy(ingredient => ingredient.Ingredient);
                        dishRecipe.Ingredients.AddRange(ingredients);

                        data.Recipes.Add(dishRecipe);
                    }
                }
                else
                {
                    success = false;
                    message = "Dish not found";
                }
            }
            catch (Exception ex)
            {
                success = false;
                message = ExceptionMessageBuilder.BuildMessage(ex);
            }

            return(new DataControllerMessage <DishEditDTO>(success, message, data));
        }
Exemplo n.º 11
0
        /// <summary>
        /// Get DishEditDTO to create new dish
        /// </summary>
        /// <returns></returns>
        public async Task <DishEditDTO> GetCreateDishEditDTOAsync()
        {
            DishEditDTO dishEditDTO = new DishEditDTO()
            {
                DishGroups = (await _dishGroupRepository.GetAllAsync())
                             .Select(x => new ListItemDTO()
                {
                    Text  = x.Name,
                    Value = x.Id.ToString()
                }).ToList()
            };

            return(dishEditDTO);
        }
Exemplo n.º 12
0
        public async Task <bool> EditDishImageAsync(DishEditDTO dishEditDTO)
        {
            Dish dishToUpdateImage = await _dishRepository.GetAsync(dishEditDTO.Id);

            if (dishToUpdateImage != null)
            {
                dishToUpdateImage.ImageURL = dishEditDTO.ImageURL;
                _dishRepository.Update(dishToUpdateImage);

                return(await _unitOfWork.SaveChangesAsync() > 0);
            }

            return(false);
        }
Exemplo n.º 13
0
        private void Edit(DishEditDTO dishEditDTO, IIngredientSubject subject)
        {
            IngredientListViewModel ingredientListViewModel = new IngredientListViewModel(factory, subject);
            RecipeAddViewModel      recipeAddViewModel      = new RecipeAddViewModel(factory, this, ingredientListViewModel);

            recipeAddViewModel.MustSelectDish = false;

            DishEditViewModel viewModel = new DishEditViewModel(dishEditDTO, recipeAddViewModel);
            DishEditView      view      = new DishEditView(viewModel);
            Window            window    = WindowFactory.CreateByContentsSize(view);

            window.MinWidth = view.MinWidth;

            viewModel.DishSaveRequest += (s, e) =>
            {
                using (IDishController controller = factory.CreateDishController())
                {
                    ControllerMessage controllerMessage = controller.Update(e.Data);
                    if (controllerMessage.IsSuccess)
                    {
                        Notify();
                    }
                    else
                    {
                        MessageBox.Show(controllerMessage.Message);
                    }
                }
            };
            viewModel.DishSaveRecipesRequest += (s, e) =>
            {
                using (IDishController controller = factory.CreateDishController())
                {
                    ControllerMessage controllerMessage = controller.UpdateRecipes(e.Data);
                    if (controllerMessage.IsSuccess)
                    {
                        Notify();
                    }
                    else
                    {
                        MessageBox.Show(controllerMessage.Message);
                    }
                }
            };

            window.Show();
        }
Exemplo n.º 14
0
        public async Task <bool> CreateNewDishAsync(DishEditDTO dishEditDTO)
        {
            Dish dishToCreate = new Dish()
            {
                Name        = dishEditDTO.Name,
                Description = dishEditDTO.Description,
                Weight      = dishEditDTO.Weight,
                Price       = dishEditDTO.Price,
                DishGroupId = dishEditDTO.DishGroupId,
                ImageURL    = dishEditDTO.ImageURL
            };

            _dishRepository.Add(dishToCreate);

            if (await _unitOfWork.SaveChangesAsync() > 0)
            {
                dishEditDTO.Id = dishToCreate.Id;

                return(true);
            }

            return(false);
        }
Exemplo n.º 15
0
        public DishEditViewModel(DishEditDTO dish, RecipeAddViewModel viewModel)
        {
            this.dish = dish;
            this.RecipeAddViewModel = viewModel;

            this.RemoveRecipeCommand = new DelegateCommand(
                () => Recipes.Remove(Recipe),
                obj => Recipe != null
                );
            this.SaveRecipesCommand = new DelegateCommand(
                () => Save(dish),
                obj => CanSave()
                );
            this.SaveCommand = new DelegateCommand(
                () => RaiseDishSaveRequestEvent(dish),
                obj => CanSave()
                );
            this.DeleteCommand = new DelegateCommand(() => RaiseDishDeleteRequestEvent(dish));

            this.Recipes = new ObservableCollection <DishRecipeEditDTO>(dish.Recipes);

            viewModel.RecipeAdded += (s, e) =>
            {
                var addedRecipe = e.Data;
                if (!Recipes.Select(recipe => recipe.Name).Contains(addedRecipe.Name))
                {
                    DishRecipeEditDTO recipe = new DishRecipeEditDTO
                    {
                        Name        = addedRecipe.Name,
                        Description = addedRecipe.Description
                    };
                    recipe.Ingredients.AddRange(addedRecipe.Ingredients);

                    Recipes.Add(recipe);
                }
            };
        }
Exemplo n.º 16
0
        private bool Validate(DishEditDTO dishEditDTO, ref string message)
        {
            bool    isValid      = true;
            string  oldName      = dishEditDTO.OldName;
            string  newName      = dishEditDTO.NewName;
            string  categoryName = dishEditDTO.CategoryName;
            decimal price        = dishEditDTO.Price;

            if (String.IsNullOrEmpty(newName))
            {
                isValid = false;
                message = "Dish's name cannot be empty";
            }
            if (newName.Length > 40)
            {
                isValid = false;
                message = "Dish's name cannot be more then 40 symbols";
            }
            else if (String.IsNullOrEmpty(categoryName))
            {
                isValid = false;
                message = "Dish's category's name cannot be empty";
            }
            else if (price < 0)
            {
                isValid = false;
                message = "Dish's price cannot be less then 0";
            }
            else if (oldName != newName && unitOfWork.Dishes.GetAll().Any(dish => dish.Name == newName))
            {
                isValid = false;
                message = "Dish with such name already exists";
            }

            return(isValid);
        }
Exemplo n.º 17
0
 private void Save(DishEditDTO dish)
 {
     dish.Recipes.Clear();
     dish.Recipes.AddRange(Recipes);
     RaiseDishSaveRecipesRequestEvent(dish);
 }