예제 #1
0
        public IActionResult RankingClientes()
        {
            try
            {
                List <RankingCliente> rankingClientes = new List <RankingCliente>();
                List <RankingCliente> ListaFinal      = new List <RankingCliente>();
                List <String>         ListaValores    = new List <string>();
                List <Venda>          listaDoForeach  = new List <Venda>();
                var vendas = _context.Vendas.Include(v => v.Clientes).Include(v => v.Status).Where(v => v.Clientes.StatusId == 1).ToList();
                foreach (var item in vendas)
                {
                    item.ValorVenda = item.ValorVenda.Substring(2).Replace('.', ',');
                    listaDoForeach.Add(item);
                }

                var clientes = listaDoForeach.Where(v => v.Clientes.NomeCliente != "Sem Cliente" && v.StatusId == 1).Select(v => v.Clientes).Distinct().ToList();
                int posicao  = 1;
                foreach (var data in clientes)
                {
                    RankingCliente rcObject = new RankingCliente();

                    var soma = vendas.Where(v => v.Clientes.NomeCliente == data.NomeCliente).Sum(v => Convert.ToDouble(v.ValorVenda));
                    rcObject.Posicao         = posicao.ToString() + "º";
                    rcObject.NomeCliente     = data.NomeCliente;
                    rcObject.EmailCliente    = data.EmailCliente;
                    rcObject.TelefoneCliente = data.TelefoneCliente;
                    rcObject.ValorVenda      = soma.ToString();
                    rcObject.CEP             = data.CEPcliente;
                    ListaFinal.Add(rcObject);
                }
                ListaFinal = ListaFinal.OrderByDescending(b => Convert.ToDouble(b.ValorVenda.Replace('.', ','))).ToList();
                foreach (var obj in ListaFinal)
                {
                    obj.Posicao    = posicao.ToString() + "º";
                    obj.ValorVenda = "R$" + obj.ValorVenda;
                    posicao++;
                    rankingClientes.Add(obj);
                }
                ListaParaCsvRanking = rankingClientes;
                ViewBag.ranking     = rankingClientes;
                ViewBag.count       = rankingClientes.Count();

                ViewBag.filtro = "Filtrado por - Todos";
            }
            catch (Exception ex)
            {
                TempData["msgSucesso"] = "Erro na sua solicitação, favor tentar novamente!";
            }
            var ceps = _context.Vendas.Include(v => v.Bancas).Where(v => v.Clientes.NomeCliente != "Sem cliente").Select(v => v.Clientes.CEPcliente).Distinct();

            ViewBag.cep  = ceps;
            ViewBag.anos = _context.Vendas.Select(v => v.DataVenda.Year).Distinct().ToList();
            return(View());
        }
예제 #2
0
        public List <RankingCliente> ObtenerRankingCliente(DateTime fechaInicio, DateTime fechaFin)
        {
            List <RankingCliente> listaCliente = new List <RankingCliente>();

            String sql = "SELECT R.NombreCliente as NombreCliente , R.CorreoCliente, O.Nombre,COUNT(1) AS Cantidad FROM (TH_CLIENTE C INNER JOIN TH_RESERVA R ON R.IDCLIENTE = C.IDCLIENTE) INNER JOIN TH_OBRA O ON O.IDOBRA = R.IDOBRA WHERE R.IDESTADORESERVA <> 2 AND R.FECHARESERVA BETWEEN @fechaInicio and @fechaFin GROUP BY R.NombreCliente, R.CorreoCliente, O.Nombre ORDER BY COUNT(1) DESC";

            OleDbParameter pFechaInicio = UtilDA.SetParameters("@fechaInicio", OleDbType.Date, fechaInicio);
            OleDbParameter pFechaFin    = UtilDA.SetParameters("@fechaFin", OleDbType.Date, fechaFin);

            using (var dtr = UtilDA.ExecuteReader(cmd, CommandType.Text, sql, cnx, pFechaInicio, pFechaFin))
            {
                while (dtr.Read())
                {
                    RankingCliente objCliente = new RankingCliente();
                    objCliente.Nombre           = DataConvert.ToString(dtr["NombreCliente"]);
                    objCliente.Correo           = DataConvert.ToString(dtr["CorreoCliente"]);
                    objCliente.NombreObra       = DataConvert.ToString(dtr["Nombre"]);
                    objCliente.CantidadReservas = DataConvert.ToInt(dtr["Cantidad"]);
                    listaCliente.Add(objCliente);
                }
            }
            UtilDA.Close(cnx);
            return(listaCliente);
        }