Exemplo n.º 1
0
        public void Deve_Retornar_Excecao_Ao_Personalizar_Um_Pedido_Com_Personalizacao_Ja_Adicionada_No_Pedido()
        {
            pedidoRepository.GetById(Arg.Any <int>()).Returns(pedido);
            adicionaisPizzaRepository.GetAll().Returns(new List <AdicionaisPizza> {
                adicionalPizza
            });
            adicionaisPedidoRepository.ExisteAdicionalCadastroNoPedido(Arg.Any <int>(), Arg.Any <int>()).Returns(true);

            Assert.Throws <Exception>(
                () => new PersonalizacaoPedidoBusiness(pedidoRepository, adicionaisPizzaRepository,
                                                       tamanhosPizzaRepository, saboresPizzaRepository, adicionaisPedidoRepository, mapper).PersonalizarPedido(personalizacaoPedidoDto),
                "Não deve ser possível adicionar a personalização ao pedido!");
        }
Exemplo n.º 2
0
        public ResumoPedidoDto PersonalizarPedido(PersonalizacaoPedidoDto personalizacaoPedido)
        {
            var identificadorPedido = personalizacaoPedido.IdentificadorPedido;

            var pedido = _pedidoRepository.GetById(identificadorPedido);

            if (pedido == null)
            {
                throw new Exception($"O pedido {identificadorPedido} não existe!");
            }

            if (pedido.Finalizado.GetValueOrDefault(true))
            {
                throw new Exception($"O pedido já esta finalizado não é possível adicionar incrementos!");
            }

            var adicionalPizza = personalizacaoPedido.AdicionalPizza;

            var personalizacaoPizza = _adicionaisPizzaRepository.GetAll()
                                      .FirstOrDefault(x => x.Adicional.ToUpper() == adicionalPizza.ToUpper());

            if (personalizacaoPizza == null)
            {
                throw new Exception($"A personalização {adicionalPizza} informada não esta cadastrada!");
            }

            if (_adicionaisPedidoRepository.ExisteAdicionalCadastroNoPedido(identificadorPedido, personalizacaoPizza.Id))
            {
                throw new Exception($"A personalização {adicionalPizza} informada já esta cadastrada no pedido!");
            }

            pedido.Total        += personalizacaoPizza.Valor ?? 0;
            pedido.Tempo        += personalizacaoPizza.Tempo ?? 0;
            pedido.TamanhosPizza = _tamanhosPizzaRepository.GetById(pedido.TamanhosPizzaId);
            pedido.SaboresPizza  = _saboresPizzaRepository.GetById(pedido.SaboresPizzaId);

            pedido.AdicionaisPedido = _adicionaisPedidoRepository.BuscarAdicionaisPorPedido(identificadorPedido);

            pedido.AdicionaisPedido.Add(new AdicionaisPedido
            {
                AdicionaisPizza = personalizacaoPizza,
                Pedidos         = pedido
            });

            _pedidoRepository.Update(pedido);

            var resumoPedido = _mapper.Map <ResumoPedidoDto>(pedido);

            return(resumoPedido);
        }