コード例 #1
0
        private async Task <GenericCommandResult> CreateRequest(EnderecoModel endereco)
        {
            var sabores = new List <Sabor>
            {
                new Sabor("Mussarela", 10),
                new Sabor("Frango", 15)
            };

            var pizzas = new List <PizzaSaborModel>
            {
                new PizzaSaborModel {
                    Ordem = 0, Sabores = sabores.Select(x => x.Id).ToList()
                }
            };



            var handler = new NewPedidoHandler(_pedidoRepository, _enderecoRepository, _saborRepository);
            await _enderecoRepository.Create(Arg.Any <Endereco>());

            await _pedidoRepository.Create(Arg.Any <Pedido>());

            _saborRepository.Get().ReturnsForAnyArgs(sabores);
            var request = new NewPedidoCommand(pizzas, null, endereco);
            var result  = await handler.Handle(request, CancellationToken.None);

            return(result);
        }
コード例 #2
0
ファイル: PizzaRepository.cs プロジェクト: cryty13/Uds_teste
        public Task <ResultCalcular> Calcular(Pizza pizza)
        {
            try
            {
                ResultCalcular resultCalcular = new ResultCalcular();
                Sabor          sabor          = _iSaborRepository.Get().ToList().Where(x => x.Descricao == pizza.Sabor).FirstOrDefault();
                Tamanho        tamanho        = _iTamanhoRepository.Get().Where(x => x.Descricao == pizza.Tamanho).FirstOrDefault();
                if (pizza.adicionalPizza != null)
                {
                    foreach (var item in pizza.adicionalPizza)
                    {
                        pizza.TempoPreparo = pizza.TempoPreparo + item.Tempo;
                        pizza.ValorTotal   = pizza.ValorTotal + item.Valor;
                    }
                }

                pizza.ValorTotal = pizza.ValorTotal + tamanho.Valor;
                if (sabor.Tempo != 0)
                {
                    pizza.TempoPreparo = pizza.TempoPreparo + tamanho.Tempo + sabor.Tempo;
                }
                else
                {
                    pizza.TempoPreparo = pizza.TempoPreparo + tamanho.Tempo;
                }

                resultCalcular.ValorTotal   = pizza.ValorTotal;
                resultCalcular.TempoPreparo = pizza.TempoPreparo;
                return(Task.FromResult <ResultCalcular>(resultCalcular));
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #3
0
        public async Task <GenericCommandResult> Handle(NewPedidoCommand request, CancellationToken cancellationToken)
        {
            if (request.Pizzas == null || !request.Pizzas.Any())
            {
                return(GenericCommandResult.Failure(new List <string> {
                    ErrorMessages.EmptyPizzas
                }));
            }

            var validator = new NewPedidoCommandValidator();
            var results   = validator.Validate(request);

            if (!results.IsValid)
            {
                return(GenericCommandResult.Failure(results.Errors));
            }


            List <Pizza> pizzas = new List <Pizza>();
            Pedido       pedido;

            if (!request.IdUsuario.HasValue)
            {
                var validatorEndereco = new EnderecoModelValidation();
                var resultEndereco    = validatorEndereco.Validate(request.Endereco);
                if (!resultEndereco.IsValid)
                {
                    return(GenericCommandResult.Failure(resultEndereco.Errors));
                }

                var endereco = new Endereco(request.Endereco.Rua, request.Endereco.Numero, request.Endereco.Complemento, request.Endereco.Bairro, request.Endereco.Cep, request.Endereco.Cidade, request.Endereco.Estado);
                await _enderecoRepository.Create(endereco);

                pedido = new Pedido(pizzas, request.IdUsuario, endereco.Id, DateTime.Now);
            }
            else
            {
                pedido = new Pedido(pizzas, request.IdUsuario, null, DateTime.Now);
            }

            var sabores = await _saborRepository.Get();

            foreach (var p in request.Pizzas)
            {
                var pizza = new Pizza(pedido, sabores.Where(x => p.Sabores.Contains(x.Id)).Sum(s => s.Valor) / p.Sabores.Count);
                pizza.PizzaSabores = p.Sabores.Select(s => new PizzaSabor(pizza.Id, s)).ToList();
                pizzas.Add(pizza);
            }

            await _pedidoRepository.Create(pedido);

            return(GenericCommandResult.Success(pedido.Id));
        }
コード例 #4
0
ファイル: SaborController.cs プロジェクト: cryty13/Uds_teste
 public IEnumerable <Sabor> Get()
 {
     return(_repository.Get());
 }