Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }