// Removes student from guests of a meal
        public IActionResult Leave(int mealId)
        {
            // Get student
            Student student = studentRepository.GetStudent(GetUserId());
            // Get meal
            Meal meal = mealRepository.GetMeal(mealId);

            // Attempt to leave student from meal
            DomainMethodResult result = meal.Leave(student);

            // Save to database -> show success message
            if (result.WasSuccessful)
            {
                mealRepository.Save();
                TempData["success"] = result.Message;
            }
            // Show error message
            else
            {
                TempData["error"] = result.Message;
            }

            // Render main view
            return(RedirectToAction("List"));
        }
        public IActionResult Edit(MealDate mealDate)
        {
            // Check if user filled in form correctly
            if (!ModelState.IsValid)
            {
                // If not => return edit view again => send meal date to fill in values
                return(View(mealDate));
            }

            // Get meal
            Meal meal = mealRepository.GetMeal(mealDate.Meal.Id);
            // Get student
            Student student = studentRepository.GetStudent(GetUserId());

            // Check if meal can be edited by student
            DomainMethodResult result = meal.AllowedToEdit(student);

            // Meal cannot be edited by student -> add with error
            if (!result.WasSuccessful)
            {
                TempData["error"] = result.Message;
            }
            // Meal can be edited by student -> update meal -> add success message
            else
            {
                // Combine date and time
                mealDate.Meal.DateTime = new DateTime(mealDate.Meal.DateTime.Year, mealDate.Meal.DateTime.Month, mealDate.Meal.DateTime.Day, mealDate.Time.Hour, mealDate.Time.Minute, 0);
                // Update meal in database
                mealRepository.SaveMeal(mealDate.Meal);
                TempData["success"] = "Maaltijd succesvol bijgewerkt";
            }

            return(RedirectToAction("List"));
        }
Exemple #3
0
        public void Students_Cannot_Leave_Meal_Which_They_Did_Not_Join()
        {
            // Arrange
            Meal meal = new Meal()
            {
                MaxGuests = 3, Cook = new Student()
                {
                    Id = 1, Name = "Test student"
                }
            };
            Student student = new Student()
            {
                Id = 2, Name = "Test student"
            };
            Student anotherStudent = new Student()
            {
                Id = 3, Name = "Test student"
            };

            meal.Join(student);

            // Act
            DomainMethodResult result = meal.Leave(anotherStudent);

            // Assert
            Assert.False(result.WasSuccessful);
        }
        public IActionResult Edit(int mealId)
        {
            // Get meal
            Meal meal = mealRepository.GetMeal(mealId);
            // Get student
            Student student = studentRepository.GetStudent(GetUserId());

            // Check if meal can be edited by student
            DomainMethodResult result = meal.AllowedToEdit(student);

            // Render edit view
            if (result.WasSuccessful)
            {
                // Render edit view with => pass meal date to fill in values
                return(View(MealTransformer.TransformIntoMealDate(meal)));
            }
            // Render main view -> Show error message
            else
            {
                TempData["error"] = result.Message;
                return(RedirectToAction("List"));
            }
        }
        public IActionResult Delete(int mealId)
        {
            // Get meal
            Meal meal = mealRepository.GetMeal(mealId);
            // Get student
            Student student = studentRepository.GetStudent(GetUserId());

            // Check if student is allowed to delete meal
            DomainMethodResult result = meal.AllowedToEdit(student);

            // Check for result
            if (result.WasSuccessful)
            {
                mealRepository.DeleteMeal(meal);
                TempData["success"] = "Maaltijd succesvol verwijderd";
            }
            else
            {
                TempData["error"] = result.Message;
            }

            // Render main view
            return(RedirectToAction("List"));
        }