public ActionResult PersonalizarPizza([FromBody] SolicitacaoPersonalizacaoPedidoDTO personalizacao) { try { return(Ok(_pizzaService.PersonalizarPizza(personalizacao))); } catch (Exception e) { return(BadRequest(e.Message)); } }
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()); }