예제 #1
0
        public async Task <IActionResult> EditFood(MealFoodViewModel mealFoodView)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    bool foodExists = await _mealService.ExistsFood(mealFoodView.Food.Id);

                    if (foodExists)
                    {
                        var canUpdateFood = await _authorizationService.AuthorizeAsync(User, mealFoodView.Food, UserOperations.Update);

                        if (canUpdateFood.Succeeded)
                        {
                            await _mealService.EditFoodAsync(mealFoodView.Food);
                        }
                        else
                        {
                            return(new ChallengeResult());
                        }
                    }
                    else
                    {
                        return(NotFound());
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
                return(RedirectToAction("Details", "Sesshins", new { id = mealFoodView.SesshinId, mealId = mealFoodView.MealId }));
            }
            return(View(mealFoodView));
        }
예제 #2
0
        // GET: Meals/EditFood
        public async Task <IActionResult> EditFood(int mealId, int foodId, int sesshinId)
        {
            Food food = await _mealService.GetFoodByIdAsync(foodId);

            MealFoodViewModel mealFoodView = new MealFoodViewModel {
                MealId = mealId, SesshinId = sesshinId, Food = food
            };

            return(View(mealFoodView));
        }
예제 #3
0
 public MealsControllerTest()
 {
     _mockService          = new MockMealService();
     _controller           = GetMealsController(_mockService, true);
     _controllerWithNoRole = GetMealsController(_mockService, false);
     _testFood             = new Food {
         Id = 1, Name = "Test Food"
     };
     _testMealFoodViewModel = new MealFoodViewModel {
         Food = _testFood, MealId = 1, SesshinId = 1
     };
 }
예제 #4
0
        public async Task <MealFoodViewModel> GetMealFoodViewModel(int mealId, int sesshinId)
        {
            //We want the number of people of the day of the meal
            Meal meal = await GetByIdAsync(mealId);

            DayOfSesshin day = await _dayOfSesshinRepository.GetByIdAsync(meal.DayOfSesshinId);

            MealFoodViewModel vm = new MealFoodViewModel {
                MealId = mealId, SesshinId = sesshinId, Food = new Food {
                    NumberOfPeople = day.NumberOfPeople
                }
            };

            return(vm);
        }
예제 #5
0
        public async Task <IActionResult> AddFood(MealFoodViewModel mealFoodView)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var foodExists = await _mealService.ExistsFood(mealFoodView.Food.Id);

                    if (!foodExists)
                    {
                        var canCreateFood = await _authorizationService.AuthorizeAsync(User, mealFoodView.Food, UserOperations.Create);

                        if (canCreateFood.Succeeded)
                        {
                            await _mealService.CreateFoodAsync(mealFoodView.Food);
                        }
                        else
                        {
                            return(new ChallengeResult());
                        }
                    }

                    MealFood mealFood = new MealFood {
                        FoodId = mealFoodView.Food.Id, MealId = mealFoodView.MealId
                    };
                    var isAuthorized = await _authorizationService.AuthorizeAsync(User, mealFood, UserOperations.Create);

                    if (isAuthorized.Succeeded)
                    {
                        await _mealService.CreateMealFoodAsync(mealFood);
                    }
                    else
                    {
                        return(new ChallengeResult());
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw;
                }
                return(RedirectToAction("EditFood", "Meals", new { sesshinId = mealFoodView.SesshinId, mealId = mealFoodView.MealId, foodId = mealFoodView.Food.Id }));
            }
            return(View(mealFoodView));
        }
예제 #6
0
        private async void OpenEditMealFoodDialogAsync(MealFood mealFood)
        {
            var mealFoodClone = mealFood.Clone();

            var dialog = _dialogs.For <MealFoodDialogViewModel>(DialogsIdentifier);

            dialog.Data.DialogTitle       = "Modified meal food";
            dialog.Data.SubmitButtonTitle = "Save";
            dialog.Data.MealFood          = MealFoodViewModel.FromModel(mealFoodClone);

            var dialogResult = await dialog.Show();

            if (dialogResult != DialogResult.Ok)
            {
                return;
            }

            mealFoodClone = dialog.Data.MealFood.ToModel();
            Meal.Foods.Edit(mealFood, mealFoodClone);
        }
예제 #7
0
        private async void OpenAddMealFoodDialogAsync()
        {
            var mealFood = new MealFood
            {
                Amount = 1d
            };

            var dialog = _dialogs.For <MealFoodDialogViewModel>(DialogsIdentifier);

            dialog.Data.DialogTitle       = "New meal food";
            dialog.Data.SubmitButtonTitle = "Add";
            dialog.Data.MealFood          = MealFoodViewModel.FromModel(mealFood);

            var dialogResult = await dialog.Show();

            if (dialogResult != DialogResult.Ok)
            {
                return;
            }

            mealFood = dialog.Data.MealFood.ToModel();
            Meal.Foods.Add(mealFood);
        }
예제 #8
0
        // GET: Meals/AddFood
        public async Task <IActionResult> AddFood(int mealId, int sesshinId)
        {
            MealFoodViewModel mealFoodView = await _mealService.GetMealFoodViewModel(mealId, sesshinId);

            return(View(mealFoodView));
        }