public IPagedList <Evento> Listar(int pageNumber, int pageSize, string busca = null, int localID = 0, string estado = null, string cidade = null, int tipoID = 0, int subtipoID = 0, enumTipoPeriodo?tipoPeriodo = null, enumTipoDias tipoDias = enumTipoDias.todosDias, double?latitude = null, double?longitude = null, double distancia = 0, enumEventoOrdem ordem = enumEventoOrdem.dataAsc) { var quantidadeDias = (tipoPeriodo == null) ? 0 : tipoPeriodo.Value.ValueAsInt(); List <int> diasSemana = null; switch (tipoDias) { case enumTipoDias.diasUteis: diasSemana = ConfiguracaoAppUtil.GetAsListInt(enumConfiguracaoBO.eventoDiasUteis); break; case enumTipoDias.finaisDeSemana: diasSemana = ConfiguracaoAppUtil.GetAsListInt(enumConfiguracaoBO.eventoFinaisDeSemana); break; } var eventos = ado.Listar(pageNumber, pageSize, busca, localID, estado, cidade, tipoID, subtipoID, quantidadeDias, diasSemana, latitude, longitude, distancia, ordem); //Se não encontrar nenhum evento realizar nova busca. Corrigindo o texto de busca if (eventos.None() && ConfigurationManager.AppSettings["HabilitarSpelling"] != null && Convert.ToBoolean(ConfigurationManager.AppSettings["HabilitarSpelling"])) { if (!string.IsNullOrWhiteSpace(busca)) { busca = busca.CorrigirTexto(); eventos = ado.Listar(pageNumber, pageSize, busca, localID, estado, cidade, tipoID, subtipoID, quantidadeDias, diasSemana, latitude, longitude, distancia, ordem); } } foreach (var item in eventos) { item.EventoMidias = ListarEventoMidiaInEventoAsDictionary(item.IR_EventoID); } return(eventos); }
public IPagedList <Evento> ListarCompleto(int pageNumber, int pageSize, string busca = null, int localID = 0, string estado = null, string cidade = null, int tipoID = 0, int subtipoID = 0, enumTipoPeriodo?tipoPeriodo = null, enumTipoDias tipoDias = enumTipoDias.todosDias, double?latitude = null, double?longitude = null, double distancia = 0, enumEventoOrdem ordem = enumEventoOrdem.dataAsc, bool multiplasQueries = false) { int quantidadeDias = (tipoPeriodo == null) ? 0 : tipoPeriodo.Value.ValueAsInt(); List <int> diasSemana = null; if (tipoDias == enumTipoDias.diasUteis) { diasSemana = ConfiguracaoAppUtil.GetAsListInt(enumConfiguracaoBO.eventoDiasUteis); } else if (tipoDias == enumTipoDias.finaisDeSemana) { diasSemana = ConfiguracaoAppUtil.GetAsListInt(enumConfiguracaoBO.eventoFinaisDeSemana); } IPagedList <Evento> eventos = null; if (multiplasQueries) { var apresentacaoBO = new ApresentacaoBO(); var precoBO = new PrecoBO(); eventos = ado.Listar(pageNumber, pageSize, busca, localID, estado, cidade, tipoID, subtipoID, quantidadeDias, diasSemana, latitude, longitude, distancia, ordem); foreach (var item in eventos) { item.EventoMidias = ListarEventoMidiaInEventoAsDictionary(item.IR_EventoID); item.Apresentacao = apresentacaoBO.Listar(item.IR_EventoID); foreach (var itemAp in item.Apresentacao) { itemAp.MenorPreco = precoBO.ConsultarMaiorMenorPorApresentacao(itemAp.IR_ApresentacaoID); if (itemAp.MenorPreco != null) { itemAp.MaiorPreco = precoBO.ConsultarMaiorMenorPorApresentacao(itemAp.IR_ApresentacaoID, false); if (item.MaiorPreco == null) { item.MaiorPreco = itemAp.MaiorPreco; item.MenorPreco = itemAp.MenorPreco; } else { if (itemAp.MaiorPreco.Valor > item.MaiorPreco.Valor) { item.MaiorPreco = itemAp.MaiorPreco; } if (itemAp.MenorPreco.Valor < item.MenorPreco.Valor) { item.MenorPreco = itemAp.MenorPreco; } } } if (item.PrimeiraApresentacao == null) { item.PrimeiraApresentacao = itemAp; } else if (itemAp.CalcHorario < item.PrimeiraApresentacao.CalcHorario) { if (item.UltimaApresentacao == null) { item.UltimaApresentacao = item.PrimeiraApresentacao; } item.PrimeiraApresentacao = itemAp; } else if ((item.UltimaApresentacao == null) || (itemAp.CalcHorario > item.UltimaApresentacao.CalcHorario)) { item.UltimaApresentacao = itemAp; } item.QtdeDisponivel += itemAp.QtdeDisponivel; } } } else { eventos = ado.ListarCompleto(pageNumber, pageSize, busca, localID, estado, cidade, tipoID, subtipoID, quantidadeDias, diasSemana, latitude, longitude, distancia, ordem); foreach (var item in eventos) { item.EventoMidias = ListarEventoMidiaInEventoAsDictionary(item.IR_EventoID); } } return(eventos); }