public JsonResult CancelarPedido(PedidoCancelamentoModel PedidoCancelamento)
        {
            try
            {
                using (var manterPedido = new ManterPedido())
                {
                    manterPedido.CancelarPedido(new PedidoCancelamento()
                    {
                        DataCancelamnto = DateTime.Now,
                        IpCancelamento = Request.ServerVariables["REMOTE_ADDR"],
                        Pedido = manterPedido.GetPedidoById(PedidoCancelamento.IdPedido),
                        TextoCancelamento = PedidoCancelamento.TextoCancelamento,
                        TipoCancelamento = (TipoCancelamenoPedido)PedidoCancelamento.IdTipoCancelamento,
                        UsuarioCancelamento = manterPedido.GetUsuarioByLogin(User.Identity.Name)
                    });

                    return Json(new { TipoMensagem = TipoMensagemRetorno.Ok }, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ex)
            {
                return Json(
                       new
                       {
                           TipoMensagem = TipoMensagemRetorno.Erro,
                           Mensagem = ex.Message

                       }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult RegistrarEntrega(int IdPedido, int EventoEntrega, string Justificativa)
        {
            try
            {
                using (var manterPedido = new ManterPedido())
                {

                    manterPedido.RegistrarEntrega(new PedidoRegistroEntrega()
                    {
                        Pedido = manterPedido.GetPedidoById(IdPedido),
                        Evento = (EventoEntrega)EventoEntrega,
                        Justificativa = Justificativa
                    },User.Identity.Name);

                    return Json(new { TipoMensagem = TipoMensagemRetorno.Ok }, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ex)
            {
                return Json(
                       new
                       {
                           TipoMensagem = TipoMensagemRetorno.Erro,
                           Mensagem = ex.Message

                       }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult GetViewPedido(int IdPedido)
        {
            using (var manterPedido = new ManterPedido())
            {
                var pedido = manterPedido.GetPedidoById(IdPedido);

                return Json(MVCHelper.RenderRazorViewToString(this, Url.Content("~/Views/ManterPedidos/VizualizarPedido.cshtml"), ParsePedidoToPedidoModel(manterPedido, pedido)), JsonRequestBehavior.AllowGet);

            }
        }
        public JsonResult AtualizarProdutoMaterialAdicional(string ListaProduto, string ListaMateraial, int IdPedido)
        {
            try
            {

                if (ModelState.IsValid)
                {

                    using (var manterPedido = new ManterPedido())
                    {
                        var listaProdutoModel = JsonConvert.DeserializeObject<IList<PedidoProdutoModel>>(ListaProduto);
                        var listaProduto = listaProdutoModel.Select(x => new PedidoProduto()
                        {
                            Pedido = manterPedido.GetPedidoById(IdPedido),
                            PrecoTotal = x.Quantidade * x.PrecoUnitario,
                            Produto = manterPedido.GetProdutoById(x.IdProduto),
                            Quantidade = x.Quantidade,
                            PrecoUnitario = x.PrecoUnitario,
                            Status = StatusPedidoProduto.Pendente

                        }).ToList();

                        var listaMaterialAdicional = JsonConvert.DeserializeObject<IList<PedidoMaterialAdiconalModel>>(ListaMateraial).Select(x => new PedidoMaterialAdiconal()
                        {
                            Pedido = manterPedido.GetPedidoById(IdPedido),
                            Material = manterPedido.GetMaterialAdcionalById(x.Material.IdMaterialAdicional),
                            PrecoTotal = x.Quantidade * x.PrecoUnitario,
                            Quantidade = x.Quantidade,
                            PrecoUnitario = x.PrecoUnitario,
                            TipoAquisicao = (TipoAquisicaoTemporaria)x.TipoAquisicao.IdTipoAquisicaoTemporaria
                        }).ToList();

                        manterPedido.AtualizarProdutoMaterialAdicional(listaProduto, listaMaterialAdicional, manterPedido.GetPedidoById(IdPedido));

                        return Json(
                               new
                               {
                                   TipoMensagem = TipoMensagemRetorno.Ok,
                                   Mensagem = "Pedido Inserido com sucesso!"

                               }, "text/html", JsonRequestBehavior.AllowGet);
                    }

                }
                else
                {

                    return Json(
                       new
                       {
                           TipoMensagem = TipoMensagemRetorno.Erro,
                           Mensagem = "Erro ao Inserir o Pedido. Verifique o dados informados."

                       }, "text/html", JsonRequestBehavior.AllowGet);

                }

            }

            catch (Exception ex)
            {
                return Json(
                            new
                            {
                                TipoMensagem = TipoMensagemRetorno.Erro,
                                Mensagem = ex.Message

                            }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
        public JsonResult Editar(string strPedido)
        {
            try
            {

                if (ModelState.IsValid)
                {
                    var pedidoModel = JsonConvert.DeserializeObject<PedidoModel>(strPedido);

                    using (var manterPedido = new ManterPedido())
                    {
                        Pedido pedido = manterPedido.GetPedidoById(pedidoModel.IdPedido);
                        pedido.Bairro = pedidoModel.Bairro.ToUpper();
                        pedido.CEP = pedidoModel.CEP;
                        pedido.Cidade = pedidoModel.Cidade.ToUpper();
                        pedido.Cliente = manterPedido.GetListaClienteById(pedidoModel.Cliente.IdCliente);
                        pedido.Complemento = pedidoModel.Complemento.ToUpper();
                        pedido.CondicaoPagamento = manterPedido.GetCondicaoPagamentoById(pedidoModel.CondicaoPagamento.IdCondicaoPagamento);
                        pedido.DataEvento = pedidoModel.DataEvento;
                        pedido.DataHoraEntrega = new DateTime(pedidoModel.DataEvento.Year,
                                                       pedidoModel.DataEvento.Month,
                                                       pedidoModel.DataEvento.Day,
                                                       pedidoModel.DataHoraEntrega.Hour,
                                                       pedidoModel.DataHoraEntrega.Minute, 0);
                        pedido.FuncionarioContato = manterPedido.GetFuncionarioById(pedidoModel.FuncionarioContato.IdFuncionario);
                        pedido.PessoaResponsavel = pedidoModel.PessoaResponsavel.ToUpper();
                        pedido.TipoContato = pedidoModel.TipoContato.IdTipoContato == 0 ? TipoContato.Site :
                             (TipoContato)Enum.Parse(typeof(TipoContato), pedidoModel.TipoContato.IdTipoContato.ToString());
                        pedido.LocalEvento = pedidoModel.LocalEvento.ToUpper();
                        pedido.Logradouro = pedidoModel.Logradouro.ToUpper();
                        pedido.Numero = pedidoModel.Numero.ToUpper();
                        pedido.PrecoVenda = pedidoModel.PrecoVenda;
                        pedido.TelefoneResponsavel = pedidoModel.TelefoneResponsavel;
                        pedido.TipoPedido = manterPedido.GetTipoPedidoById(pedidoModel.TipoPedido.IdTipoPedido);
                        pedido.UF = pedidoModel.UF;

                        manterPedido.AlterarPedido(pedido);

                        return Json(new { IdPedido = pedido.IdPedido, TipoMensagem = TipoMensagemRetorno.Ok }, JsonRequestBehavior.AllowGet);
                    }

                }
                else
                {

                    return Json(
                       new
                       {
                           TipoMensagem = TipoMensagemRetorno.Erro,
                           Mensagem = "Erro ao Inserir o Pedido. Verifique o dados informados."

                       }, "text/html", JsonRequestBehavior.AllowGet);

                }

            }

            catch (Exception ex)
            {
                return Json(
                            new
                            {
                                TipoMensagem = TipoMensagemRetorno.Erro,
                                Mensagem = ex.Message

                            }, "text/html", JsonRequestBehavior.AllowGet);
            }
        }
        public ActionResult Edit(int Id)
        {
            setViewData();

            using (var manterPedido = new ManterPedido())
            {
                var pedido = manterPedido.GetPedidoById(Id);

                return View(ParsePedidoToPedidoModel(manterPedido, pedido));
            }
        }