public static T Criar <T>(DnServicoTransacionalBase service) where T : DnEspecificacaoBase
        {
            if (!(Activator.CreateInstance(typeof(T)) is T ts))
            {
                throw new DesenvolvimentoIncorretoException($"Failed to initialize specification [{typeof(T).Name}] type with specified constructor parameters not found.");
            }

            ts.DefinirServico(service);
            return(ts);
        }
        public static IQueryable <T> ProjetarDeFormaDinamica <T>(
            this IQueryable <T> consulta,
            DnServicoTransacionalBase servico,
            string[] campos = null) where T : EntidadeBase
        {
            var requisicao = servico.HttpContextLocal?.Request;

            if ((campos == null || campos.Length == 0) && requisicao != null)
            {
                campos = requisicao.ObterPropriedadesAConsiderar();
            }

            if (campos == null || campos.Length == 0)
            {
                return(consulta);
            }

            return(consulta.ProjetarDeFormaDinamica(campos));
        }
        public static IOrderedQueryable <T> ProjetarDeFormaDinamicaOrdenada <T>(this IQueryable <T> consulta, DnServicoTransacionalBase servico, string[] campos = null) where T : EntidadeBase
        {
            var requisicao = servico.HttpContextLocal?.Request;

            if (requisicao != null && (campos == null || campos.Length == 0))
            {
                campos = requisicao?.ObterPropriedadesAConsiderar();
            }

            var ordem        = requisicao?.ObterPropriedadesAOrdenar();
            var ordemEmTexto = ordem?.Length > 0 ? string.Join(",", ordem) : campos?.FirstOrDefault();

            return(string.IsNullOrEmpty(ordemEmTexto) ? consulta.OrderBy(x => x) : consulta.OrderBy(ordemEmTexto));
        }
        //Todo - Não remove. Dei muito trabalho pra desenvolver
        public static IQueryable <object> ProjetarDeFormaDinamicaSelecionada <T>(this IQueryable <T> consulta, DnServicoTransacionalBase servico) where T : EntidadeBase
        {
            var requisicao = servico.HttpContextLocal.Request;
            var campos     = requisicao.ObterPropriedadesAConsiderar();

            if (campos == null || campos.Length == 0)
            {
                return(consulta);
            }

            return(consulta.ProjetarDeFormaDinamicaSelecionada(campos, out _));
        }
        //Todo - Não remove. Dei muito trabalho pra desenvolver
        public static IOrderedQueryable <object> ProjetarDeFormaDinamicaSelecionadaEOrdenada(this IQueryable <object> consulta, DnServicoTransacionalBase servico)
        {
            var requisicao   = servico.HttpContextLocal.Request;
            var considerar   = requisicao.ObterPropriedadesAConsiderar();
            var ordenar      = requisicao.ObterPropriedadesAOrdenar();
            var ordenarTexto = ordenar?.Length > 0 ? string.Join(",", ordenar) : considerar.FirstOrDefault();

            if (string.IsNullOrEmpty(ordenarTexto))
            {
                return(consulta.OrderBy(x => x));
            }

            return(consulta.OrderBy(ordenarTexto));
        }
Esempio n. 6
0
 internal void DefinirServico(DnServicoTransacionalBase servico)
 {
     Servico = servico;
 }