// GET: Pedidos
        public ActionResult Index(string sortOrder, string filtroAtual,
                                    int? page,
                                    string situacaoPedidoFiltro,
                                    string situacaoPedidoAtual,
                                    string clienteFiltro,
                                    string clienteFiltroAtual,
                                    string codigoInternoFiltro,
                                    string codigoInternoFiltroAtual)
        {
            try
            {
                ViewBag.CurrentSort = sortOrder;
                ViewBag.RazaoSocialSort = string.IsNullOrEmpty(sortOrder) ? "razaosocial_desc" : "";
                ViewBag.DataPedidoSort = sortOrder == "DataPedido" ? "datapedido_desc" : "DataPedido";


                if (clienteFiltro != null)
                {
                    page = 1;
                }
                else 
                {
                    clienteFiltro = clienteFiltroAtual;
                }
                
                if (situacaoPedidoFiltro != null)
                {
                    page = 1;
                }
                else
                {
                    situacaoPedidoFiltro = situacaoPedidoAtual;
                }

                if (codigoInternoFiltro != null)
                {
                    page = 1;
                }
                else
                {
                    codigoInternoFiltro = codigoInternoFiltroAtual;
                }

                ViewBag.ClienteFiltroAtual = clienteFiltro;
                ViewBag.SituacaoPedidoAtual = situacaoPedidoFiltro;                

                PedidoBll pedidoBll = new PedidoBll();

                return View(pedidoBll.ListaPedidosPaginacao(page, clienteFiltro, situacaoPedidoFiltro, sortOrder, codigoInternoFiltro));
            }

            catch (Exception ex) 
            {
                return RedirectToAction("Index");
            }
            
        }
        public ActionResult ItemPedido([Bind(Include = "ID,IDPedido,Quantidade,PrecoCompra,TotalItem,IDProduto")] ItemPedido itemPedido)
        {
            PedidoBll pedidoBll = new PedidoBll();

            if (itemPedido.ID > 0)
            {
                pedidoBll.Atualizar(itemPedido);
            }
            else
            {
                pedidoBll.Criar(itemPedido);
            }

            return RedirectToAction("Pedido", "Pedidos", new { ID = itemPedido.IDPedido });
        }        
        public ActionResult Pedidos(int? idCliente, string dataInicial, string dataFinal)
        {
            DateTime inicio = DateTime.TryParse(dataInicial, out inicio) ? inicio : DateTime.MinValue;
            DateTime fim = DateTime.TryParse(dataFinal, out fim) ? fim : DateTime.MaxValue;

            PedidoBll pedidoBll = new PedidoBll();

            List<Pedido> pedidos = pedidoBll.RelatorioPedidos(idCliente, inicio, fim);

            ViewBag.Total = string.Format("{0:N2}", pedidos.Sum(x => x.ValorTotal));

            return new Rotativa.ViewAsPdf("Pedidos", pedidos);
        }
        // GET: Pedidos/Create
        public ActionResult Pedido(int? id, int? idcli)
        {
            try
            {
                ProdutoBll produtoBll = new ProdutoBll();
                List<Cliente> clientes = ClienteBll.ListarClientes();

                ViewBag.Produtos = produtoBll.ListarProdutosAtivos();
                ViewBag.Clientes = clientes;

                Pedido pedido = new Pedido();

                if (id != null)
                {
                    PedidoBll pedidoBll = new PedidoBll();
                    pedido = PedidoBll.RetornarPedido(id);
                    pedido.ValorTotal = pedidoBll.CalcularTotal(pedido.ID) + pedido.ValorFrete;
                }

                return View(pedido);
            }
            catch(Exception exception)
            {
                return RedirectToAction("Index").ComMensagem(Resources.Geral.TenteNovamente, TipoMensagem.Erro);
            }
        }
        public ActionResult Pedido([Bind(Include = "ID,CodigoInterno,DataPedido, DataEntrega,ValorTotal,ValorFrete,SituacaoPedido,ClienteID")] Pedido pedido, string ClienteID, string Permanecer)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    PedidoBll pedidoBll = new PedidoBll();

                    pedido.ClienteID = int.Parse(ClienteID);

                    if (pedido.ID > 0)
                    {
                        pedidoBll.Atualizar(pedido);
                    }
                    else
                    {
                        pedidoBll.Criar(pedido);
                    }

                    if (string.IsNullOrEmpty(Permanecer))
                    {
                        return RedirectToAction("Index");
                    }
                    else
                    {
                        return RedirectToAction("Pedido", new { id = pedido.ID });
                    }
                }

                ProdutoBll produtoBll = new ProdutoBll();
                List<Cliente> clientes = ClienteBll.ListarClientes();

                ViewBag.Produtos = produtoBll.ListarProdutosAtivos();
                ViewBag.Clientes = clientes;

                return View(pedido);
            }
            catch(Exception ex)
            {
                return RedirectToAction("Index").ComMensagem(Resources.Geral.TenteNovamente, TipoMensagem.Erro);
            }
        }