Example #1
0
 /// <summary>
 /// Atualiza uma lista de valores passada pelo usuário, podendo ou não excluir os dados logicamente.
 /// </summary>
 /// <typeparam name="E">Tipo da entidade do banco de dados que vai ser atualizada</typeparam>
 /// <typeparam name="L">Tipo da entidade DTO a ser atualizada</typeparam>
 /// <param name="lista">Lista de entidade DTO</param>
 /// <param name="keyComparer">Chave para comparação da lista</param>
 /// <param name="valueComparer">Valor usado para comparação na lista</param>
 /// <param name="listAttributes">Lista de atributos a ser atualizado</param>
 /// <param name="listSetValues">Lista de valores usados para atualizar os campos da lista de atributos.</param>
 public static List <L> UpdateList <E, L>(this List <L> lista, FiltroServico servico, string keyType, Object valueComparer, bool deleteLogic = true, string[] listAttributes = null, Object[] listSetValues = null)
     where E : class
     where L : class
 {
     if (lista != null)
     {
         List <int>      listId      = lista.Where(x => (int)x.GetType().GetProperty("id").GetValue(x) > 0).Select(y => (int)y.GetType().GetProperty("id").GetValue(y)).ToList();
         IEnumerable <E> listaDelete = servico.ObterTodos <E>().PropertyEquals(keyType, valueComparer).ToList().Where(x => !listId.Contains((int)x.GetType().GetProperty("id").GetValue(x)));
         lista.RemoveAll(x => (int)x.GetType().GetProperty("id").GetValue(x) > 0);
         if (deleteLogic)
         {
             listaDelete.ToList().DeleteLogicList <E, E>(servico, null, listAttributes, listSetValues);
         }
         else
         {
             servico.Excluir(listaDelete.AsQueryable(), true);
         }
         lista.ForEach(delegate(L obj)
         {
             obj.SetValues(listAttributes, listSetValues);
         });
         servico.Salvar <E>(lista);
     }
     return(new List <L>());
 }
Example #2
0
 /// <summary>
 /// Realiza uma deleção lógica de uma lista de objetos L, atualizando também atributos que são passados pela lista listAttributes setando os valores através dos indexs correspondentes da lista listSetValues
 /// </summary>
 /// <typeparam name="E"></typeparam>
 /// <typeparam name="L"></typeparam>
 /// <param name="lista"></param>
 /// <param name="partial"></param>
 /// <param name="listAttributes"></param>
 /// <param name="listSetValues"></param>
 public static void DeleteLogicList <E, L>(this List <L> lista, FiltroServico servico, string[] partial = null, IEnumerable <string> listAttributes = null, IEnumerable <Object> listSetValues = null)
     where E : class
     where L : class
 {
     lista.ForEach(delegate(L obj)
     {
         obj.UpdateObject <E>(servico, partial, listAttributes, listSetValues);
     });
 }
Example #3
0
 /// <summary>
 /// Realiza a deleção lógica de um objeto e atualiza os atributos passados pelo usuário.
 /// </summary>
 /// <typeparam name="E"></typeparam>
 /// <param name="obj">Objeto principal</param>
 /// <param name="partial">Lista de atributos parciais a ser atualizados, caso o parâmetro deletLogic não seja passado, não é necessário adicionar o campo data_exclusao pois o mesmo será adicionado a lista.</param>
 /// <param name="listAttributes">Lista de atributos a ser atualizado</param>
 /// <param name="listSetValues">Lista dos valores a ser usado para atualizar os campos da lista de atributos</param>
 /// <param name="deleteLogic">Campo para verificar se ocorrerá a deleção lógica, valor default = true</param>
 public static void UpdateObject <E>(this object obj, FiltroServico servico, IEnumerable <string> partial = null, IEnumerable <string> listAttributes = null, IEnumerable <Object> listSetValues = null, bool deleteLogic = true)
     where E : class
 {
     if (deleteLogic)
     {
         partial = partial == null ? new string[] { "data_exclusao" }
     }
     : partial.Contains("data_exclusao") ? partial : partial.Concat(new string[] { "data_exclusao" });
     if ((int)obj.getPropertyByName("id") > 0)
     {
         servico.Atualizar <E>(obj.SetValues(listAttributes, listSetValues), partial);
     }
 }
Example #4
0
        /// <summary>
        /// Gera um guid único para a entidade passada comparando no banco se esse guid já existe.. caso exista o método é re-executado.
        /// </summary>
        /// <typeparam name="UC">tipo do objeto a ser usado na comparação</typeparam>
        /// <param name="obj">objeto usado para pegar o valor chave</param>
        /// <param name="keyValue">Campo chave para geração do guid</param>
        /// <param name="fieldComparer">Campo usado para comparar se a chave já foi cadastrada no banco</param>
        /// <param name="maxLength">Tamanho máximo para o retorno da guid valor máximo = 20, valor default = 20.</param>
        /// <param name="minLentgh">Tamanho mínimo para o retorno da guid valor máximo = 20, valor default = 0.</param>
        /// <returns></returns>
        public static string GenerateUniqueCode <UC>(this object obj, FiltroServico servico, string fieldComparer, int maxLength = 20)
            where UC : class
        {
            string code = Guid.NewGuid().ToString("N").Substring(0, maxLength).ToUpper();


            if (servico.ObterTodos <UC>().PropertyEquals(fieldComparer, code).Count() < 1)
            {
                return(code);
            }
            else
            {
                return(obj.GenerateUniqueCode <UC>(servico, fieldComparer, maxLength));
            }
        }