public ActionResult GetListadoSearch(string busqueda, int pagina, int numreg, string estado) { List <OportunidadCategoria> listaCategoria = new List <OportunidadCategoria>(); OportunidadConsulta oportunidadConsulta = new OportunidadConsulta(); OportunidadCategoria categoria = new OportunidadCategoria(); List <int> listAgente = new List <int>(); if (!this.TodosMisAgentes) { listAgente.Add(this.AgenteWork.IdAgente); } else { foreach (var agente in this.AgentesWork) { listAgente.Add(agente.IdAgente); } } var data = DataBase.Oportunidades.GetListadoFullTextSearch(listAgente, busqueda, pagina, numreg, estado); categoria = new OportunidadCategoria(); if (data.Count > 0) { if (data[0].TotalPages > 1) { categoria.Nombre = data[0].CurrentPage.ToString() + "/" + data[0].TotalPages.ToString() + " " + Rp3.AgendaComercial.Resources.LabelFor.Paginas + " [" + data[0].TotalRows.ToString() + " " + Rp3.AgendaComercial.Resources.LabelFor.Registros + "]"; } else { categoria.Nombre = "[" + data[0].TotalRows.ToString() + " " + Rp3.AgendaComercial.Resources.LabelFor.Registros + "]"; } } else { categoria.Nombre = data.Count.ToString() + " " + Rp3.AgendaComercial.Resources.LabelFor.Registros; } categoria.isBusqueda = true; if (data.Count > 0) { categoria.FechaInicio = DateTime.Today; categoria.FechaFin = DateTime.Today; categoria.Oportunidad = data.ToList(); } listaCategoria.Add(categoria); oportunidadConsulta.OportunidadCategorias = listaCategoria; return(PartialView("_OportunidadListaDetalle", oportunidadConsulta)); }
public ActionResult GetListado(DateTime fechaInicial, DateTime fechaFinal, string estado, string sortField, int sortMode, int?diasInactividad, int?tipo, string groupMode = Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Calendario) { fechaInicial = fechaInicial.Date; fechaFinal = fechaFinal.Date.AddHours(23).AddMinutes(59).AddSeconds(59);; /* * 1 = Next Few Days * 2 = Next Weeks (Until last Week of Month) * 3 = Next Month */ //Modelo List <OportunidadCategoria> listaOportunidad = new List <OportunidadCategoria>(); OportunidadConsulta oportunidadConsulta = new OportunidadConsulta(); OportunidadCategoria categoria = new OportunidadCategoria(); //Current Day DateTime currentDay = DateTime.Now; //Find Remainder Sundays int remainderSundays = GetRemainderSundays(fechaInicial); // (currentDay); //First Sunday DateTime beginDate = GetNextSunday(fechaInicial); // (currentDay); //Range of Search int dayRange = (fechaFinal - fechaInicial).Days; //Days Left Until End of Week int daysLeft = (GetNextSunday(fechaInicial) - fechaInicial).Days; List <int> listAgente = new List <int>(); if (!this.TodosMisAgentes) { listAgente.Add(this.AgenteWork.IdAgente); } else { foreach (var agente in this.AgentesWork) { listAgente.Add(agente.IdAgente); } } var data = DataBase.Oportunidades.GetOportunidadListado(listAgente, fechaInicial, fechaFinal, estado); if (diasInactividad != null) { data = data.Where(p => p.DiasInactividad > diasInactividad.Value).ToList(); } if (tipo.HasValue) { data = data.Where(p => p.IdOportunidadTipo == tipo.Value).ToList(); } switch (groupMode) { case Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Calendario: bool exit = false; if (dayRange <= 7) { for (int x = 0; x <= 7; x++) { if (!exit) { categoria = new OportunidadCategoria(); categoria.isBusqueda = false; if (fechaInicial.Date == currentDay.Date) { if (x == 0) { categoria.Nombre = Rp3.AgendaComercial.Resources.LabelFor.Hoy; } else if (x == 1) { categoria.Nombre = Rp3.AgendaComercial.Resources.LabelFor.Maniana; } else { categoria.Nombre = fechaInicial.AddDays(x).ToString("dddd").First().ToString().ToUpper() + String.Join("", fechaInicial.AddDays(x).ToString("dddd").Skip(1)) + " " + fechaInicial.AddDays(x).Day.ToString() + ", " + fechaInicial.ToString("MMMM").First().ToString().ToUpper() + String.Join("", fechaInicial.ToString("MMMM").Skip(1)); } } else { categoria.Nombre = /*currentDay*/ fechaInicial.AddDays(x).ToString("dddd").First().ToString().ToUpper() + String.Join("", /*currentDay*/ fechaInicial.AddDays(x).ToString("dddd").Skip(1)) + " " + /*currentDay*/ fechaInicial.AddDays(x).Day.ToString() + ", " + fechaInicial.ToString("MMMM").First().ToString().ToUpper() + String.Join("", fechaInicial.ToString("MMMM").Skip(1)); } categoria.FechaInicio = /*currentDay*/ fechaInicial.AddDays(x); categoria.FechaFin = /*currentDay*/ fechaInicial.AddDays(x); categoria.Oportunidad = data.Where(p => p.FechaInicio.Date == /*currentDay*/ fechaInicial.AddDays(x).Date).OrderBy(p => p.FechaInicio).Distinct().ToList(); listaOportunidad.Add(categoria); if (fechaInicial.AddDays(x) >= fechaFinal) { exit = true; } } } } if (dayRange > 7 && dayRange <= 29) { for (int x = 0; x < 5; x++) { if (!exit) { int daysInWeek = 7; DateTime CalFechaInicial = beginDate.AddDays((daysInWeek * (x - 1) + 1)); DateTime CalFechaFinal = beginDate.AddDays(daysInWeek * (x)); if (x == 0) { CalFechaInicial = fechaInicial; CalFechaFinal = beginDate; } if (CalFechaFinal.Date > fechaFinal.Date) { CalFechaFinal = fechaFinal; exit = true; } string beginWeekDay = CalFechaInicial.ToString("dddd").First().ToString().ToUpper() + String.Join("", CalFechaInicial.ToString("dddd").Skip(1)); string beginMontName = String.Empty; if (CalFechaInicial.Year * 100 + CalFechaInicial.Month != CalFechaFinal.Year * 100 + CalFechaFinal.Month) { beginMontName = CalFechaInicial.ToString("MMMM").First().ToString().ToUpper() + String.Join("", CalFechaInicial.ToString("MMMM").Skip(1)); } string endWeekDay = CalFechaFinal.ToString("dddd").First().ToString().ToUpper() + String.Join("", CalFechaFinal.ToString("dddd").Skip(1)); string textoEndMonth = CalFechaFinal.ToString("MMMM").First().ToString().ToUpper() + String.Join("", CalFechaFinal.ToString("MMMM").Skip(1)); categoria = new OportunidadCategoria(); categoria.isBusqueda = false; //categoria.Nombre = beginWeekDay + " " + CalFechaInicial.Day.ToString() + " - " + endWeekDay + " " + CalFechaFinal.Day.ToString() + ", " + textoEndMonth; if (String.IsNullOrEmpty(beginMontName)) { if (beginWeekDay + " " + CalFechaInicial.Day.ToString() != endWeekDay + " " + CalFechaFinal.Day.ToString()) { categoria.Nombre = beginWeekDay + " " + CalFechaInicial.Day.ToString() + " - " + endWeekDay + " " + CalFechaFinal.Day.ToString() + ", " + textoEndMonth; } else { categoria.Nombre = beginWeekDay + " " + CalFechaInicial.Day.ToString() + ", " + textoEndMonth; } } else { categoria.Nombre = beginWeekDay + " " + CalFechaInicial.Day.ToString() + ", " + beginMontName + " - " + endWeekDay + " " + CalFechaFinal.Day.ToString() + ", " + textoEndMonth; } categoria.FechaInicio = CalFechaInicial.AddDays(1); categoria.FechaFin = CalFechaFinal; categoria.Oportunidad = data.Where(p => (p.FechaInicio.Date >= CalFechaInicial.Date) && (p.FechaInicio.Date <= CalFechaFinal.Date)) .OrderBy(p => p.FechaInicio).Distinct().ToList(); listaOportunidad.Add(categoria); } } } if (dayRange > 29) { for (int x = 1; x < 20; x++) { if (!exit) { DateTime CalFechaInicial = fechaInicial.AddDays(-(fechaInicial.Day - 1)).AddMonths(x - 1); DateTime CalFechaFinal = new DateTime(CalFechaInicial.Year, CalFechaInicial.Month, DateTime.DaysInMonth(CalFechaInicial.Year, CalFechaInicial.Month)); if (CalFechaFinal.Date > fechaFinal.Date) { CalFechaFinal = fechaFinal; exit = true; } categoria = new OportunidadCategoria(); categoria.isBusqueda = false; categoria.Nombre = CalFechaInicial.ToString("MMMM").First().ToString().ToUpper() + String.Join("", CalFechaInicial.ToString("MMMM").Skip(1)); if (x == 1) { categoria.FechaInicio = CalFechaInicial; } else { categoria.FechaInicio = CalFechaInicial.AddDays(1); } categoria.FechaFin = CalFechaFinal; categoria.Oportunidad = data.Where(p => (p.FechaInicio.Date >= CalFechaInicial.Date) && (p.FechaInicio.Date <= CalFechaFinal.Date)) .OrderBy(p => p.FechaInicio).Distinct().ToList(); listaOportunidad.Add(categoria); } } } break; case Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Estado: var estados = data.Select(p => p.EstadoDescripcion).Distinct().OrderBy(p => p); foreach (var estadolabel in estados) { categoria = new OportunidadCategoria(); categoria.isBusqueda = false; categoria.Nombre = estadolabel; categoria.Oportunidad = data.Where(p => p.EstadoDescripcion == estadolabel).OrderBy(p => p.FechaInicio).ToList(); listaOportunidad.Add(categoria); } break; case Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Agente: var agentes = data.Select(p => p.Agente).Distinct().OrderBy(p => p); foreach (var agente in agentes) { categoria = new OportunidadCategoria(); categoria.isBusqueda = false; categoria.Nombre = agente; categoria.Oportunidad = data.Where(p => p.Agente == agente).OrderBy(p => p.FechaInicio).ToList(); listaOportunidad.Add(categoria); } break; case Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Listado: categoria = new OportunidadCategoria(); categoria.isBusqueda = false; categoria.Nombre = String.Empty; categoria.Oportunidad = data.OrderBy(p => p.FechaInicio).ToList(); listaOportunidad.Add(categoria); break; } //if (fechaInicial < DateTime.Now.Date) //{ // if (groupMode == Rp3.AgendaComercial.Models.Constantes.OportunidadGroupMode.Calendario) // listaOportunidad = listaOportunidad.OrderByDescending(p => p.FechaInicio).ToList(); //} if (String.IsNullOrEmpty(sortField)) { foreach (var cat in listaOportunidad) { cat.Oportunidad = cat.Oportunidad.OrderByDescending(p => p.Calificacion).ThenByDescending(p => p.Importe).ToList(); } } else { Sort(listaOportunidad, sortField, sortMode); } oportunidadConsulta.OportunidadCategorias = listaOportunidad; return(PartialView("_OportunidadListaDetalle", oportunidadConsulta)); }