private async Task <Response <Sandwich> > IsValid(CreateSandwichCommand request) { if (string.IsNullOrEmpty(request.Name)) { return(new Response <Sandwich>("Informe o nome do lanche!")); } if (request.Ingredients == null || request.Ingredients.Count == 0) { return(new Response <Sandwich>("Nenhum ingrediente informado!")); } //Atualiza os ingredientes com a posição atual do db. for (var i = 0; i < request.Ingredients.Count; i++) { request.Ingredients[i].Ingredient = await _ingredientRepository.FindByIdAsync(request.Ingredients[i].IngredientId); } if (request.Ingredients.Any(i => (i.Ingredient.Deleted.HasValue && i.Ingredient.Deleted.Value) && !i.Deleted.HasValue || !i.Deleted.Value)) { return(new Response <Sandwich>($"Ingrediente {request.Ingredients.First(i => (i.Ingredient.Deleted.HasValue && i.Ingredient.Deleted.Value) && !i.Deleted.HasValue || !i.Deleted.Value).Ingredient.Name} indisponível!")); } if (request.Ingredients.Any(i => (!i.Deleted.HasValue || !i.Deleted.Value) && i.Quantity <= 0)) { return(new Response <Sandwich>($"Ingrediente {request.Ingredients.First(i => (!i.Deleted.HasValue || !i.Deleted.Value) && i.Quantity <= 0).Ingredient.Name} com quantidade inválida!")); } return(null); }
public async Task <Response <Sandwich> > Handle(CreateSandwichCommand request, CancellationToken cancellationToken) { var sandwichEntity = new Sandwich() { Id = Guid.NewGuid(), Created = DateTime.Now, CreatedBy = _appContext.UserName }; var response = await IsValid(request); if (response == null) { sandwichEntity.Ingredients = request.Ingredients; sandwichEntity.Name = request.Name; await _repository.AddAsync(sandwichEntity); await _unitOfWork.CompleteAsync(); response = new Response <Sandwich>(sandwichEntity); } return(response); }