Пример #1
0
        /// <summary>
        /// Gera o objeto de Log com as altera�oes realizadas no update
        /// </summary>
        /// <param name="dbEntityEntry"></param>
        /// <param name="entityName"></param>
        /// <param name="primaryKey"></param>
        private void GeraLogUpdate(EntityEntry dbEntityEntry, string entityName, string primaryKey)
        {
            foreach (var prop in dbEntityEntry.OriginalValues.Properties)
            {
                var originalValue = (dbEntityEntry.OriginalValues[prop] != null
                    ? dbEntityEntry.OriginalValues[prop].ToString()
                    : "");
                var currentValue = (dbEntityEntry.CurrentValues[prop] != null
                    ? dbEntityEntry.CurrentValues[prop].ToString()
                    : "");

                if (originalValue == currentValue)
                {
                    continue;
                }

                var log = new LogMeusJogos
                {
                    Tabela = entityName,
                    Acao   = dbEntityEntry.State.ToString(),
                    //Se for uma ação feita por usuário logado ou pelo sistema em background
                    MatriculaUsuario = (_accessor?.HttpContext?.User?.Identity?.Name != null) ? int.Parse(_accessor.HttpContext.User.Identity.Name) : 0,
                    Chaves           = primaryKey,
                    NomeColuna       = prop.Name,
                    Propriedade      = prop.Name,
                    ValorOriginal    = originalValue,
                    ValorAtual       = currentValue,
                    DtcOcorrencia    = DateTime.Now
                };
                Set <LogMeusJogos>().Add(log);
            }
        }
Пример #2
0
        public override int SaveChanges()
        {
            try
            {
                var added = new List <KeyValuePair <object, LogMeusJogos> >();

                var entries = ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified || x.State == EntityState.Deleted).ToList();

                foreach (var dbEntityEntry in entries)
                {
                    var entityName = dbEntityEntry.Entity.GetType().Name;

                    var primaryKey = GetPrimaryKeyValue(dbEntityEntry);


                    switch (dbEntityEntry.State)
                    {
                    case EntityState.Added:
                    case EntityState.Deleted:
                        var log = new LogMeusJogos
                        {
                            Tabela           = entityName,
                            Acao             = dbEntityEntry.State.ToString(),
                            MatriculaUsuario = (_accessor?.HttpContext?.User?.Identity?.Name != null) ? int.Parse(_accessor.HttpContext.User.Identity.Name) : 0,
                            Chaves           = primaryKey,
                            NomeColuna       = "*",
                            Propriedade      = "*",
                            ValorOriginal    = String.Empty,
                            ValorAtual       = String.Empty,
                            DtcOcorrencia    = DateTime.Now
                        };

                        if (dbEntityEntry.State == EntityState.Deleted)
                        {
                            log.ValorOriginal = JsonConvert.SerializeObject(dbEntityEntry.Entity);
                        }

                        Set <LogMeusJogos>().Add(log);

                        if (dbEntityEntry.State != EntityState.Added)
                        {
                            continue;
                        }

                        var kv = new KeyValuePair <object, LogMeusJogos>(dbEntityEntry.Entity, log);
                        added.Add(kv);
                        break;

                    case EntityState.Modified:
                        GeraLogUpdate(dbEntityEntry, entityName, primaryKey);
                        break;
                    }
                }

                var result = base.SaveChanges();
                UpdateInsertedKey(added);
                return(result);
            }
            catch (Exception ex)
            {
                GlobalException.ReturnException(ex);
                return(0);
            }
        }