Пример #1
0
        public async Task <CommandResult> Handle(RemoveMealFoodCommand request, CancellationToken cancellationToken)
        {
            Meal meal = await _mealRepository.GetByIdAsync(request.MealId);

            if (!FoundValidMeal(meal))
            {
                return(FailureDueToMealNotFound());
            }

            MealFood mealFood = meal.FindMealFood(request.MealFoodId);

            meal.RemoveMealFood(mealFood);
            if (!mealFood.IsValid)
            {
                return(FailureDueToEntityStateInconsistency(meal));
            }

            await _mealRepository.UpdateAsync(meal);

            return(await CommitAndPublishAsync(new MealFoodRemovedDomainEvent(
                                                   meal.Id,
                                                   meal.DietId,
                                                   mealFood.FoodId
                                                   )));
        }
Пример #2
0
        public async Task <CommandResult> Handle(AddMealFoodCommand request, CancellationToken cancellationToken)
        {
            Meal meal = await _mealRepository.GetByIdAsync(request.MealId);

            if (!FoundValidMeal(meal))
            {
                return(FailureDueToMealNotFound());
            }

            Food food = await _foodRepository.GetByIdAndProfileIdAsync(request.FoodId, _currentProfileId);

            if (food == null)
            {
                return(FailureDueToCustomFoodNotFound());
            }

            MealFood mealFood = new MealFood(
                food,
                request.Quantity
                );

            meal.AddMealFood(mealFood);
            if (!meal.IsValid)
            {
                return(FailureDueToEntityStateInconsistency(meal));
            }

            await _mealRepository.UpdateAsync(meal);

            return(await CommitAndPublishAsync(new MealFoodAddedDomainEvent(
                                                   meal.Id,
                                                   meal.DietId,
                                                   mealFood.FoodId
                                                   )));
        }
Пример #3
0
        public void ShouldFailToAddMealFoodToMealTwice()
        {
            Meal     meal     = GetMeal();
            FoodUnit foodUnit = new FoodUnit(UnitType.Grams, 1);

            Food     food     = new Food("Bacon", "Bacon de testes", Guid.NewGuid(), MacronutrientTable.Default(), MicronutrientTable.Default(), foodUnit);
            MealFood mealFood = new MealFood(food, 1);

            meal.AddMealFood(mealFood);
            meal.AddMealFood(mealFood);

            Assert.IsFalse(meal.IsValid);
        }
Пример #4
0
        public void ShouldFailToRemoveMealFoodFromMealTwice()
        {
            Meal     meal     = GetMeal();
            FoodUnit foodUnit = new FoodUnit(UnitType.Grams, 1);

            Food     food     = new Food("Bacon", "Bacon de testes", Guid.NewGuid(), MacronutrientTable.Default(), MicronutrientTable.Default(), foodUnit);
            MealFood mealFood = new MealFood(food, 0);

            meal.RemoveMealFood(mealFood);
            meal.RemoveMealFood(mealFood);

            Assert.IsFalse(meal.IsValid);
            Assert.AreEqual("A lista de alimentos dessa refeição não contém esse alimento.", meal.GetNotifications().FirstOrDefault().Description);
        }
Пример #5
0
        public void ShouldAddAndRemoveMealFoodFromMeal()
        {
            Meal     meal     = GetMeal();
            FoodUnit foodUnit = new FoodUnit(UnitType.Grams, 1);

            Food     food     = new Food("Bacon", "Bacon de testes", Guid.NewGuid(), MacronutrientTable.Default(), MicronutrientTable.Default(), foodUnit);
            MealFood mealFood = new MealFood(food, 0);

            meal.AddMealFood(mealFood);
            Assert.AreEqual(1, meal.MealFoodCount);

            meal.RemoveMealFood(mealFood);
            Assert.AreEqual(0, meal.MealFoodCount);
        }
Пример #6
0
 public MealFoodRepositoryTest() : base()
 {
     _testMealFood = new MealFood
     {
         Food = new Food {
             Name = "Ratatouille"
         },
         Meal = new Meal {
             Type = MealType.Lunch, DayOfSesshin = new DayOfSesshin {
                 Date = DateTime.Today.AddDays(-7), NumberOfPeople = 50, Sesshin = new Sesshin {
                     Name = "DayOfSesshin 1", Description = "Description 1", StartDate = DateTime.Today.AddDays(-7), EndDate = DateTime.Today.AddDays(-6), NumberOfPeople = 50, AppUserId = "AppUserId"
                 }
             }
         }
     };
 }
Пример #7
0
        private bool SaveNewMealFood(MealFood mealFood, int mealID)
        {
            NpgsqlConnection con = connectionPostgres.GetConnection();

            con.Open();
            NpgsqlCommand command = new NpgsqlCommand(INSERT_INTO_MEAL_FOOD, con);

            command.Parameters.AddWithValue(":id_meal", mealID);
            command.Parameters.AddWithValue(":id_food", mealFood.FoodId);
            command.Parameters.AddWithValue(":amount", mealFood.Amount);
            command.Parameters.AddWithValue(":weight", "g");
            bool value = (command.ExecuteNonQuery() > 0);

            con.Close();
            return(value);
        }
Пример #8
0
        public void Add(MealFood food)
        {
            var originalFood = List.FirstOrDefault(
                mealFood => mealFood.Food.Equals(food.Food) &&
                mealFood.FoodUnit.Equals(food.FoodUnit)
                );

            if (originalFood != null)
            {
                food.Amount += originalFood.Amount;

                List.Replace(originalFood, food);
            }
            else
            {
                List.Add(food);
            }
        }
Пример #9
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));
        }
Пример #10
0
        public void Edit(MealFood originalFood, MealFood newFood)
        {
            var existingFood = List.FirstOrDefault(
                mealFood => !ReferenceEquals(mealFood, originalFood) &&
                mealFood.Food.Equals(newFood.Food) &&
                mealFood.FoodUnit.Equals(newFood.FoodUnit)
                );

            if (existingFood != null)
            {
                newFood.Amount += existingFood.Amount;
                List.Remove(originalFood);
                List.Replace(existingFood, newFood);
            }
            else
            {
                List.Replace(originalFood, newFood);
            }
        }
Пример #11
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);
        }
Пример #12
0
        private Meal CreateMeal(int id, User user, DateTime mealDate)
        {
            MealFood mealFood = new MealFood()
            {
                FoodId = 1,
                Amount = 150,
                Weigth = "g"
            };

            var meal = new Meal()
            {
                Date  = mealDate,
                Id    = id,
                User  = user,
                Foods = new List <MealFood>()
                {
                    mealFood
                }
            };

            return(meal);
        }
Пример #13
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);
        }
Пример #14
0
 private void AssertEntityEqual(MealFood mf, MealFood testMealFood)
 {
     Assert.Equal(mf.MealId, testMealFood.MealId);
     Assert.Equal(mf.FoodId, testMealFood.FoodId);
 }
Пример #15
0
        public async Task CreateMealFoodAsync(MealFood mealFood)
        {
            await _mealFoodRepository.AddAsync(mealFood);

            await _unitOfWork.CommitAsync();
        }
Пример #16
0
        private bool IsAuthorizedMealFoodOperation(AuthorizationHandlerContext context, OperationAuthorizationRequirement requirement, MealFood mealFood)
        {
            if (requirement.Name == Constants.ReadOperationName)
            {
                return(true);
            }
            //Get the sesshin tenzo
            string mealFoodOwner = _mealService.GetMealSesshinOwner(mealFood.MealId);

            return(mealFoodOwner == _userManager.GetUserId(context.User));
        }
Пример #17
0
 public async Task AddAsync(MealFood mealFood)
 {
     await _dbSet.AddAsync(mealFood);
 }