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 <IActionResult> RemoveMealAsync(Guid mealId, Guid mealFoodId) { RemoveMealFoodCommand command = new RemoveMealFoodCommand { MealId = mealId, MealFoodId = mealFoodId, }; return(await CreateCommandResponse(command)); }