protected string ObtenhaValoresInsercao(TEntidade entidade)
        {
            string valores = string.Empty;
            string dado    = string.Empty;
            string tipoBD  = string.Empty;
            bool   propriedadeEhLista;
            bool   entreApostrofos;

            foreach (var propriedade in entidade.GetType().GetProperties())
            {
                if (propriedade.GetValue(entidade, null) == null && !GSUtilitarios.VerifiqueSePropriedadeEhEntidadeRelacionalUmParaMuitos(propriedade))
                {
                    valores += "NULL, ";
                    continue;
                }

                Type tipoSistema = propriedade.PropertyType;
                propriedadeEhLista = GSUtilitarios.VerifiqueSeTipoEhLista(propriedade.PropertyType);

                if (!propriedadeEhLista)
                {
                    tipoBD = GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.GetValue(entidade, null).GetType());
                    dado   = propriedade.GetValue(entidade, null).ToString();

                    entreApostrofos = (tipoBD != "INT" && tipoBD != "DECIMAL") ? true : false;
                    valores        += String.Format("{0}{1}{2}, ",
                                                    entreApostrofos ? "'" : String.Empty,
                                                    !tipoSistema.Equals(typeof(Guid)) ? dado : dado.ToUpper(),
                                                    entreApostrofos ? "'" : String.Empty);
                }
                else
                {
                    if (propriedade.GetValue(entidade, null) == null || (propriedade.GetValue(entidade, null) as IList <dynamic>).Count == 0)
                    {
                        continue;
                    }

                    Type tipoElementos      = GSUtilitarios.ObtenhaTipoLista(propriedade.GetValue(entidade, null) as List <dynamic>);
                    Type tipoChaveElementos = GSUtilitarios.EncontrePropriedadeChaveDoTipo(tipoElementos).PropertyType;

                    //Melhorar isso aqui, colocar um Attribute no objetos, que vai dizer quem é o mapeador dele
                    var servicoMapeadorElementosLista = Activator.CreateInstance(null, Namespaces.MAPEADORES_CONCRETOS + ".Mapeador" + tipoElementos.Name).Unwrap() as IDisposable;

                    foreach (var elemento in propriedade.GetValue(entidade, null) as List <dynamic> )
                    {
                        servicoMapeadorElementosLista.GetType()
                        .GetMethod("Insira", new Type[] { tipoElementos })
                        .Invoke(servicoMapeadorElementosLista, new object[] { elemento });
                    }

                    servicoMapeadorElementosLista.Dispose();
                }
            }

            //Remove a última vírgula
            valores = valores.Trim();
            valores = valores.Remove(valores.Length - 1);

            return(valores);
        }
Exemplo n.º 2
0
        private string ObtenhaStringColunasETiposDadosBD()
        {
            string retorno = String.Empty;

            foreach (var propriedade in Colunas)
            {
                retorno += String.Format("{0} {1}{2}{3}",
                                         propriedade.Key,
                                         GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.Value.PropertyType),
                                         propriedade.Value.PropertyType.Equals(typeof(string)) ? "(255)" : String.Empty,
                                         !propriedade.Equals(Colunas.Last()) ? ", " : String.Empty);
            }

            return(retorno);
        }
Exemplo n.º 3
0
        protected string ObtenhaValoresModificacao(TEntidade entidade)
        {
            List <string> valores  = this.Colunas.Keys.ToList();
            int           auxiliar = 0;

            string dado   = string.Empty;
            string tipoBD = string.Empty;
            bool   propriedadeEhLista;
            bool   entreApostrofos;

            foreach (var propriedade in entidade.GetType().GetProperties())
            {
                Type tipoSistema = propriedade.PropertyType;
                propriedadeEhLista = GSUtilitarios.VerifiqueSeTipoEhLista(tipoSistema);

                if (!propriedadeEhLista)
                {
                    tipoBD          = GSUtilitarios.ConvertaTipoDadosAplicacaoBanco(propriedade.GetValue(entidade, null).GetType());
                    dado            = propriedade.GetValue(entidade, null).ToString();
                    entreApostrofos = (tipoBD != "INT" && tipoBD != "DECIMAL") ? true : false;

                    valores[auxiliar] = valores[auxiliar] + String.Format(" = {0}{1}{2}",
                                                                          entreApostrofos ? "'" : String.Empty,
                                                                          dado,
                                                                          entreApostrofos ? "'" : String.Empty);
                }
                else
                {
                    Type tipoElementos      = GSUtilitarios.ObtenhaTipoLista(propriedade.GetValue(entidade, null) as List <dynamic>);
                    Type tipoChaveElementos = GSUtilitarios.EncontrePropriedadeChaveDoTipo(tipoElementos).PropertyType;

                    var servicoMapeadorElementosLista = Activator.CreateInstance(null, Namespaces.MAPEADORES_CONCRETOS + ".Mapeador" + tipoElementos.Name).Unwrap() as IDisposable;

                    foreach (var elemento in dado)
                    {
                        servicoMapeadorElementosLista.GetType()
                        .GetMethod("Modifique", new Type[] { tipoElementos })
                        .Invoke(servicoMapeadorElementosLista, new object[] { elemento });
                    }

                    servicoMapeadorElementosLista.Dispose();
                }

                auxiliar++;
            }

            return(String.Join(", ", valores));
        }