Пример #1
0
 protected void ViewAudit_OnPageIndexChanging(object sender, GridViewPageEventArgs e)
 {
     TrackPageIndex();
     ViewAudit.PageIndex  = PageIndex;
     ViewAudit.DataSource = Session["ViewAuditDataSource"];
     ViewAudit.DataBind();
 }
Пример #2
0
        protected void ViewButton_Click(object sender, EventArgs e)
        {
            var entitySysName = Storage.Select <Entity>(Frame.EntityListAudit.SelectedValue).SystemName;

            if (entitySysName == "__Empty" || string.IsNullOrEmpty(entitySysName))
            {
                entitySysName = string.Empty;
            }
            int userID;// = -1;

            if (string.IsNullOrEmpty(Frame.UserListAudit.SelectedValue))
            {
                userID = -1;
            }
            else
            {
                Int32.TryParse(Frame.UserListAudit.SelectedValue, out userID);
            }

            var dateFrom = Frame.DateFrom.Text.Replace("T", " ");

            var dateTo = Frame.DateTo.Text.Replace("T", " ");
            var query  = string.Format("set dateformat ymd;EXEC report.getAudit @entity ='{0}', @userID={1}, @from='{2}', @to='{3}'", entitySysName, userID, dateFrom, dateTo);
            var dt     = QueryToDB(query);

            Session["ViewAuditDataSource"] = dt;

            ViewAudit.DataSource = dt;
            ViewAudit.DataBind();
        }
Пример #3
0
        async Task <IEnumerable <Tuple <EntityEntry, AuditTrail> > > AuditNonTemporaryProperties()
        {
            Dictionary <string, string> abc = new Dictionary <string, string>();

            ChangeTracker.DetectChanges();
            var entitiesToTrack = ChangeTracker.Entries().Where(e => !(e.Entity is AuditTrail) && e.State != EntityState.Detached && e.State != EntityState.Unchanged);
            var a = entitiesToTrack.Where(e => !e.Properties.Any(p => p.IsTemporary)).Select(e => new AuditTrail()
            {
                Action    = Enum.GetName(typeof(EntityState), e.State),
                Table     = e.Metadata.Relational().TableName,
                Date      = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"),
                KeyValues = JsonConvert.SerializeObject(e.Properties.Where(p => p.Metadata.IsPrimaryKey()).ToDictionary(p => p.Metadata.Name, p => p.CurrentValue).NullIfEmpty()),
                NewValue  = JsonConvert.SerializeObject(e.Properties.Where(p => e.State == EntityState.Added || e.State == EntityState.Modified).ToDictionary(p => p.Metadata.Name, p => p.CurrentValue).NullIfEmpty()),
                OldValue  = JsonConvert.SerializeObject(e.Properties.Where(p => e.State == EntityState.Deleted || e.State == EntityState.Modified).ToDictionary(p => p.Metadata.Name, p => p.OriginalValue).NullIfEmpty())
            }).ToList();
            List <AuditTrail> lsAuditTrail = new List <AuditTrail>();

            foreach (var res in a)
            {
                string     json          = JsonConvert.DeserializeObject(res.OldValue.ToString() == "null" ? "{}" : res.OldValue.ToString()).DetailedCompare(JsonConvert.DeserializeObject(res.NewValue.ToString() == "null" ? "{}" : res.NewValue.ToString()));
                ViewAudit  CompareObject = JsonConvert.DeserializeObject <ViewAudit>(json);
                AuditTrail auditTrailObj = new AuditTrail();
                auditTrailObj.AuditTrailId = Guid.NewGuid().ToString();
                auditTrailObj.Action       = res.Action;
                auditTrailObj.Table        = res.Table;
                auditTrailObj.KeyValues    = res.KeyValues;
                auditTrailObj.Date         = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss");
                auditTrailObj.OldValue     = JsonConvert.SerializeObject(CompareObject.oldValue);
                auditTrailObj.NewValue     = JsonConvert.SerializeObject(CompareObject.newValue);
                lsAuditTrail.Add(auditTrailObj);
            }
            await AuditTrail.AddRangeAsync(
                lsAuditTrail.Where(p => p.NewValue != "{}" && p.OldValue != "{}").ToList()
                );

            return(entitiesToTrack.Where(e => e.Properties.Any(p => p.IsTemporary))
                   .Select(e => new Tuple <EntityEntry, AuditTrail>(
                               e,
                               new AuditTrail()
            {
                AuditTrailId = Guid.NewGuid().ToString(),
                Action = Enum.GetName(typeof(EntityState), e.State),
                Table = e.Metadata.Relational().TableName,
                Date = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss"),
                KeyValues = JsonConvert.SerializeObject(e.Properties.Where(p => p.Metadata.IsPrimaryKey()).ToDictionary(p => p.Metadata.Name, p => p.CurrentValue).NullIfEmpty()),
                NewValue = JsonConvert.SerializeObject(e.Properties.Where(p => e.State == EntityState.Added || e.State == EntityState.Modified).ToDictionary(p => p.Metadata.Name, p => p.CurrentValue)),
                OldValue = JsonConvert.SerializeObject(e.Properties.Where(p => e.State == EntityState.Deleted || e.State == EntityState.Modified).ToDictionary(p => p.Metadata.Name, p => p.OriginalValue))
            }
                               )).ToList());
        }