Exemple #1
0
 public ActionResult PersonalizarPizza([FromBody] SolicitacaoPersonalizacaoPedidoDTO personalizacao)
 {
     try
     {
         return(Ok(_pizzaService.PersonalizarPizza(personalizacao)));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
Exemple #2
0
        public PedidoDTO PersonalizarPizza(SolicitacaoPersonalizacaoPedidoDTO personalizacao)
        {
            Pedido pedido = _pedidoService.ObterPedidoPorId(personalizacao.IdPedido);

            if (pedido == null)
            {
                throw new Exception("Pedido não encontrado.");
            }

            if (pedido.StatusPedido != StatusPedidoEnum.Pendente)
            {
                throw new Exception("Não é possível personalizar o pedido pois o mesmo não está em andamento.");
            }

            List <Personalizacoes> lista = new List <Personalizacoes>();

            foreach (var p in personalizacao.Personalizacoes)
            {
                lista.Add(_personalizacaoService.Find(p));
            }

            if (lista.Count(x => x.TipoPersonalizacaoEnum == TipoPersonalizacaoEnum.BordaRecheada) > 1)
            {
                throw new Exception("Não é possível inserir mais de uma boarda recheada.");
            }

            pedido.PersonalizacaoPedido = new List <PersonalizacaoPedido>();
            foreach (var p in lista)
            {
                pedido.PersonalizacaoPedido.Add(new PersonalizacaoPedido()
                {
                    IdPedido = pedido.Id, IdPersonalizacao = p.Id, Personalizacoes = p
                });
            }

            pedido = _pedidoService.CalcularPrecoPedido(pedido);
            pedido = _pedidoService.CalcularTempoDePreparoDoPedido(pedido);

            return(_pedidoService.AtualizarPedido(pedido).ConverterParaPedidoDTO());
        }