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 ))); }
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 ))); }
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); }
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); }
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); }
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" } } } }; }
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); }
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); } }
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)); }
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); } }
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); }
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); }
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); }
private void AssertEntityEqual(MealFood mf, MealFood testMealFood) { Assert.Equal(mf.MealId, testMealFood.MealId); Assert.Equal(mf.FoodId, testMealFood.FoodId); }
public async Task CreateMealFoodAsync(MealFood mealFood) { await _mealFoodRepository.AddAsync(mealFood); await _unitOfWork.CommitAsync(); }
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)); }
public async Task AddAsync(MealFood mealFood) { await _dbSet.AddAsync(mealFood); }