public ActionResult PesquisaPedido(PesquisaAdmin pesquisa)
        {
            Usuario admin = (Usuario)HttpContext.Session["admin"];

            if (admin == null)
            {
                return(new RedirectResult("~/Admin/Admin/Login"));
            }
            string        data        = pesquisa.Data.Replace("/", "");
            List <Pedido> listaPedido = PedidoBO.ListarPedido(data.Substring(4, 4), data.Substring(2, 2), data.Substring(0, 2), true);

            ViewBag.ListaPedido = listaPedido.OrderByDescending(c => c.Id);
            if (listaPedido == null || listaPedido.Count == 0)
            {
                TempData["Erro"] = "Pesquisa não retornou resultados.";
            }
            return(View("PesquisaPedido", pesquisa));
        }
        public ActionResult PesquisaUsuario(PesquisaAdmin pesquisa)
        {
            Usuario admin = (Usuario)HttpContext.Session["admin"];

            if (admin == null)
            {
                return(new RedirectResult("~/Admin/Admin/Login"));
            }
            Usuario usuario = UsuarioBO.ObterUsuario(pesquisa.Usuario);

            if (usuario == null)
            {
                TempData["Erro"] = "Pesquisa não retornou resultados.";
            }
            usuario.ListaPedido = PedidoBO.ListarPedidoUsuario(usuario.Id);
            usuario.ListaPedido = usuario.ListaPedido.OrderByDescending(c => c.Id).ToList();
            ViewBag.Usuario     = usuario;
            return(View("PesquisaUsuario", pesquisa));
        }
        public ActionResult AtualizarStatus(PesquisaAdmin pesquisa)
        {
            log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
            log.Debug("-------------------------------Atualizar Status");
            Usuario admin = (Usuario)HttpContext.Session["admin"];

            if (admin == null)
            {
                return(new RedirectResult("~/Admin/Admin/Login"));
            }
            List <Pedido> listaPedidosAlterados = new List <Pedido>();
            string        erro = "Não atualizou o dia: ";

            try
            {
                string data = pesquisa.Data.Replace("/", "");

                DateTime diaPesquisa = new DateTime(Int32.Parse(data.Substring(4, 4)), Int32.Parse(data.Substring(2, 2)), Int32.Parse(data.Substring(0, 2)));
                log.Debug("-------------------------------ListarPedido");
                List <Pedido> listaPedido = PedidoBO.ListarPedido(diaPesquisa.Year.ToString(), diaPesquisa.Month.ToString().PadLeft(2, '0'), diaPesquisa.Day.ToString().PadLeft(2, '0'), true);
                try
                {
                    log.Debug("-------------------------------Salvar1");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    erro = erro + diaPesquisa + "/n";
                    log.Debug("-------------------------------Erro1:" + e.ToString());
                }
                listaPedido.Clear();
                DateTime diaPesquisa1 = diaPesquisa.AddDays(-1);
                listaPedido.AddRange(PedidoBO.ListarPedido(diaPesquisa1.Year.ToString(), diaPesquisa1.Month.ToString().PadLeft(2, '0'), diaPesquisa1.Day.ToString().PadLeft(2, '0'), true));
                try
                {
                    log.Debug("-------------------------------Salvar2");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    log.Debug("-------------------------------Erro2:" + e.ToString());
                    erro = erro + diaPesquisa1 + "/n";
                }

                listaPedido.Clear();
                DateTime diaPesquisa2 = diaPesquisa.AddDays(-2);
                listaPedido.AddRange(PedidoBO.ListarPedido(diaPesquisa2.Year.ToString(), diaPesquisa2.Month.ToString().PadLeft(2, '0'), diaPesquisa2.Day.ToString().PadLeft(2, '0'), true));
                try
                {
                    log.Debug("-------------------------------Salvar3");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    log.Debug("-------------------------------Erro3:" + e.ToString());
                    erro = erro + diaPesquisa2 + "/n";
                }
                listaPedido.Clear();

                DateTime diaPesquisa3 = diaPesquisa.AddDays(-3);
                listaPedido.AddRange(PedidoBO.ListarPedido(diaPesquisa3.Year.ToString(), diaPesquisa3.Month.ToString().PadLeft(2, '0'), diaPesquisa3.Day.ToString().PadLeft(2, '0'), true));
                try
                {
                    log.Debug("-------------------------------Salvar4");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    log.Debug("-------------------------------Erro4:" + e.ToString());
                    erro = erro + diaPesquisa3 + "/n";
                }
                listaPedido.Clear();

                DateTime diaPesquisa4 = diaPesquisa.AddDays(-4);
                listaPedido.AddRange(PedidoBO.ListarPedido(diaPesquisa4.Year.ToString(), diaPesquisa4.Month.ToString().PadLeft(2, '0'), diaPesquisa4.Day.ToString().PadLeft(2, '0'), true));
                try
                {
                    log.Debug("-------------------------------Salvar5");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    log.Debug("-------------------------------Erro5:" + e.ToString());
                    erro = erro + diaPesquisa4 + "/n";
                }
                listaPedido.Clear();

                DateTime diaPesquisa5 = diaPesquisa.AddDays(-5);
                listaPedido.AddRange(PedidoBO.ListarPedido(diaPesquisa5.Year.ToString(), diaPesquisa5.Month.ToString().PadLeft(2, '0'), diaPesquisa5.Day.ToString().PadLeft(2, '0'), true));
                try
                {
                    log.Debug("-------------------------------Salvar6");
                    this.SalvarStatusAlterado(listaPedido, listaPedidosAlterados);
                }
                catch (Exception e)
                {
                    log.Debug("-------------------------------Erro6:" + e.ToString());
                    erro = erro + diaPesquisa5 + "/n";
                }



                // https://dev.pagseguro.uol.com.br/docs/checkout-web-consulta#parametros-da-api

                /*
                 * https://ws.pagseguro.uol.com.br/v2/transactions/9E884542-81B3-4419-9A75-BCC6FB495EF1
                 *  [email protected]
                 *  &token=95112EE828D94278BD394E91C4388F20
                 * <transactionSearchResult>
                 *  <transactions>
                 *  <transaction>
                 *  <status>
                 * Codigo	Significado
                 * 1	Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.
                 * 2	Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.
                 * 3	Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.
                 * 4	Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.
                 * 5	Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.
                 * 6	Devolvida: o valor da transação foi devolvido para o comprador.
                 * 7	Cancelada: a transação foi cancelada sem ter sido finalizada.
                 * 8	Debitado: o valor da transação foi devolvido para o comprador.
                 * 9	Retenção temporária: o comprador abriu uma solicitação de chargeback junto à operadora do cartão de crédito.*/
                //XmlDocument doc = new XmlDocument();
                // XmlNodeList infoElem = doc.GetElementsByTagName("status");
            }
            catch (Exception e)
            {
                TempData["Erro"] = e.ToString();
            }
            AtualizarStatus statusObj = new AtualizarStatus();

            statusObj.HoraAtualizacao    = DateTime.Now;
            statusObj.UsuarioAlteracao   = admin;
            statusObj.NrPedidosAlterados = listaPedidosAlterados.Count;
            foreach (Pedido pedido in listaPedidosAlterados)
            {
                AtualizarStatusPedido asPedido = new AtualizarStatusPedido();
                asPedido.PedidoId        = pedido.Id;
                asPedido.Pedido          = pedido;
                asPedido.AtualizarStatus = statusObj;
                statusObj.ListaPedidosAlterados.Add(asPedido);
            }
            //statusObj.ListaPedidosAlterados = listaPedidosAlterados;
            AtualizarStatusBO.CriarAtualizacaoStatus(statusObj);
            ViewBag.Status = statusObj;
            foreach (Pedido pedido in listaPedidosAlterados)
            {
                if (pedido.Status.Equals("3"))
                {
                    this.EnviarEmailEnviarPedido(pedido);
                }
            }
            if (!string.IsNullOrEmpty(erro) && !erro.Equals("Não atualizou o dia: "))
            {
                TempData["Erro"] = erro;
            }
            TempData["Mensagem"] = " Atualizacao efetuada com sucesso. Foram alterados:" + listaPedidosAlterados.Count + " registros.";
            return(View("Status"));
        }