コード例 #1
0
        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);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }