예제 #1
0
        public ActionResult EfetuarPedido(PedidoViewModel pedidoViewModel)
        {
            TempData["Menu"] = "efetuar-pedido";
            if (!ModelState.IsValid)
            {
                return(View(pedidoViewModel));
            }

            try
            {
                var lista = (List <KeyValuePair <Guid, PedidoDetalheViewModel> >)Session["Produtos"];

                Pedido pedido = Mapper.Map <PedidoViewModel, Pedido>(pedidoViewModel);

                foreach (var item in lista)
                {
                    if (item.Value.ValorFinal != null)
                    {
                        pedido.ValorTotal = pedido.ValorTotal + Convert.ToDecimal(item.Value.ValorFinal);
                    }
                }

                _pedidoAppService.Add(pedido);

                List <PedidoDetalhes> pedidoDetalhes = new List <PedidoDetalhes>();

                foreach (var item in lista)
                {
                    item.Value.PedidoId = pedido.PedidoId;
                    pedidoDetalhes.Add(Mapper.Map <PedidoDetalheViewModel, PedidoDetalhes>(item.Value));
                }

                _pedidoAppService.AddPedidoDetalheRange(pedidoDetalhes);
            }
            catch (DbEntityValidationException ex)
            {
                string errors = "";
                foreach (var eve in ex.EntityValidationErrors)
                {
                    errors += "Entity of type " + eve.Entry.Entity.GetType().Name + " in state " + eve.Entry.State + " has the following validation errors:\n";
                    foreach (var ve in eve.ValidationErrors)
                    {
                        errors += "- Property: " + ve.PropertyName + ", Error: " + ve.ErrorMessage + "\n";
                    }
                }
                throw new Exception(errors);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(RedirectToAction("Index"));
        }