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()); }
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); }