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); }
public void SetUp() { pedidoRepository = Substitute.For <IPedidoRepository>(); adicionaisPizzaRepository = Substitute.For <IAdicionaisPizzaRepository>(); tamanhosPizzaRepository = Substitute.For <ITamanhosPizzaRepository>(); saboresPizzaRepository = Substitute.For <ISaboresPizzaRepository>(); adicionaisPedidoRepository = Substitute.For <IAdicionaisPedidoRepository>(); mapper = Substitute.For <IMapper>(); personalizacaoPedidoDto = Substitute.For <PersonalizacaoPedidoDto>(); personalizacaoPedidoDto.IdentificadorPedido = 1; personalizacaoPedidoDto.AdicionalPizza = "extra bacon"; pedido = Substitute.For <Pedidos>(); pedido.Id = personalizacaoPedidoDto.IdentificadorPedido; pedido.Finalizado = false; adicionalPizza = Substitute.For <AdicionaisPizza>(); adicionalPizza.Id = 1; adicionalPizza.Adicional = personalizacaoPedidoDto.AdicionalPizza; adicionalPizza.Valor = 3; adicionalPizza.Tempo = 0; }