public static object ObterRelatorioReceitas(ModeloDeCorteEnum corte, int[] autoresId = null, string dataInicial = null, string dataFinal = null, int TopItens = 5) { DTOGrafico dtoGrafico = new DTOGrafico(); try { Receita ReceitaAlias = null; Autor AutorAlias = null; var query = Session.Current.QueryOver <Receita>(() => ReceitaAlias); query = query.JoinAlias(() => ReceitaAlias.Autor, () => AutorAlias); query.Where(Restrictions.IsNull(Projections.Property(() => ReceitaAlias.Parente))); if (autoresId != null && autoresId.Count() > 0) { query.Where(Restrictions.On(() => AutorAlias.Id).IsIn(autoresId)); } if (dataInicial != null && dataFinal != null) { DateTime DataInicial = DateTime.Parse(dataInicial).Date; DateTime DataFinal = DateTime.Parse(dataFinal).Date.AddHours(23).AddMinutes(59).AddSeconds(59); query.Where(Restrictions.And(Restrictions.Ge(Projections.Property(() => ReceitaAlias.Data), DataInicial), Restrictions.Le(Projections.Property(() => ReceitaAlias.Data), DataFinal))); } DTODado dto = new DTODado(); var nomeAutorProperty = Projections.Property(() => AutorAlias.Nome); var nomeAutorGroup = Projections.GroupProperty(nomeAutorProperty); var nomeAlias = nomeAutorGroup.WithAlias(() => dto.Label); var quantAlias = Projections.RowCount().WithAlias(() => dto.Quantidade); var corteAlias = new SQLCorteService().Executar(corte).WithAlias(() => dto.Corte); var projections = Projections.ProjectionList() .Add(nomeAlias) .Add(quantAlias) .Add(corteAlias) ; var Dados = query.OrderBy(() => ReceitaAlias.Data).Asc() .ThenBy(() => AutorAlias.Nome).Asc() .Select(projections) .TransformUsing(Transformers.AliasToBean <DTODado>()) .List <DTODado>(); ObterGrafico(dtoGrafico, Dados, TopItens); } catch (Exception) { throw; } return(dtoGrafico); }
private static void ObterGrafico(DTOGrafico dtoGrafico, IList <DTODado> dados, int topItens) { dtoGrafico.datasets = dados.GroupBy(x => new { label = x.Label }) .Take(topItens) .Select(x => new DTOItem() { label = x.Key.label, data = dados.Where(dado => dado.Label == x.Key.label).Select(item => item.Quantidade).ToList(), backgroundColor = "rgba(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + ", 0.8)" }).ToList(); dtoGrafico.labels = dados.Select(x => x.Corte).Distinct().ToList(); }
public static object ObterRelatorioAcessos(bool inAnonimos, int[] navegadores, string[] usuariosId, string dataInicial, string dataFinal, ModeloDeCorteEnum corte, int TopItens = 5) { DTOGrafico dtoGrafico = new DTOGrafico(); try { Acesso AcessoAlias = null; var query = Session.Current.QueryOver <Acesso>(() => AcessoAlias); if (!inAnonimos) { query.Where(Restrictions.IsNotNull(Projections.Property(() => AcessoAlias.Usuario))); } if (navegadores != null && navegadores.Count() > 0) { IList <string> NavegadoresList = new List <string>(); for (int i = 0; i < navegadores.Count(); i++) { NavegadoresList.Add(((NavegadorEnum)navegadores[i]).GetDescription()); } query = query.Where(Restrictions.On(() => AcessoAlias.Navegador).IsIn(NavegadoresList.ToArray())); } if (dataInicial != null && dataFinal != null) { DateTime DataInicial = DateTime.Parse(dataInicial).Date; DateTime DataFinal = DateTime.Parse(dataFinal).Date.AddHours(23).AddMinutes(59).AddSeconds(59); query.Where(Restrictions.And(Restrictions.Ge(Projections.Property(() => AcessoAlias.Data), DataInicial), Restrictions.Le(Projections.Property(() => AcessoAlias.Data), DataFinal))); } DTODado dto = new DTODado(); var PaginaGroup = Projections.GroupProperty(Projections.Property(() => AcessoAlias.Pagina)); var nomeAlias = PaginaGroup.WithAlias(() => dto.Label); var quantAlias = Projections.RowCount().WithAlias(() => dto.Quantidade); var corteAlias = new SQLCorteService().Executar(corte).WithAlias(() => dto.Corte); var projections = Projections.ProjectionList() .Add(nomeAlias) .Add(quantAlias) .Add(corteAlias) .Add(PaginaGroup) ; var Dados = query.OrderBy(() => AcessoAlias.Data).Asc() .ThenBy(() => AcessoAlias.Navegador).Asc() .Select(projections) .TransformUsing(Transformers.AliasToBean <DTODado>()) .List <DTODado>(); ObterGrafico(dtoGrafico, Dados, TopItens); } catch (Exception) { throw; } return(dtoGrafico); }
public static object ObterRelatorioReceitasPorBuscas(bool inBuscas, string[] buscas, ModeloDeCorteEnum corte, string dataInicial, string dataFinal, int TopItens = 5) { DTOGrafico dtoGrafico = new DTOGrafico(); try { Busca BuscasAlias = null; Receita ReceitaAlias = null; var query = Session.Current.QueryOver <Busca>(() => BuscasAlias); query = query.JoinAlias(() => BuscasAlias.Receita, () => ReceitaAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin); query.Where(Restrictions.IsNull(Projections.Property(() => ReceitaAlias.Parente))); if (!inBuscas) { query.Where(Restrictions.IsNotNull(Projections.Property(() => BuscasAlias.Receita))); } if (buscas != null && buscas.Count() > 0) { query.Where(Restrictions.On(() => BuscasAlias.Termo).IsIn(buscas)); } if (dataInicial != null && dataFinal != null) { DateTime DataInicial = DateTime.Parse(dataInicial).Date; DateTime DataFinal = DateTime.Parse(dataFinal).Date.AddHours(23).AddMinutes(59).AddSeconds(59); query.Where(Restrictions.And(Restrictions.Ge(Projections.Property(() => BuscasAlias.Data), DataInicial), Restrictions.Le(Projections.Property(() => BuscasAlias.Data), DataFinal))); } DTODado dto = new DTODado(); var nomeReceitaProperty = Projections.Conditional(Restrictions.IsNotNull(Projections.Property(() => BuscasAlias.Receita)), Projections.Cast(NHibernateUtil.String, Projections.Property(() => ReceitaAlias.Titulo)), Projections.Constant("Busca sem receita", NHibernateUtil.String)); var nomeAlias = nomeReceitaProperty.WithAlias(() => dto.Label); var idReceitaGroup = Projections.GroupProperty(Projections.Property(() => BuscasAlias.Receita)); var quantAlias = Projections.RowCount().WithAlias(() => dto.Quantidade); var corteAlias = new SQLCorteService().Executar(corte).WithAlias(() => dto.Corte); var projections = Projections.ProjectionList() .Add(nomeAlias) .Add(quantAlias) .Add(corteAlias) .Add(idReceitaGroup) ; var Dados = query.OrderBy(() => BuscasAlias.Data).Asc() .ThenBy(() => ReceitaAlias.Titulo).Asc() .Select(projections) .TransformUsing(Transformers.AliasToBean <DTODado>()) .List <DTODado>(); ObterGrafico(dtoGrafico, Dados, TopItens); } catch (Exception) { throw; } return(dtoGrafico); }