Exemplo n.º 1
0
        //protected override DbEntityValidationResult ValidateEntity(System.Data.Entity.Infrastructure.DbEntityEntry entityEntry, IDictionary<object, object> items)
        //{
        //    var result = new DbEntityValidationResult(entityEntry, new List<DbValidationError>());
        //    if (entityEntry.Entity is AliasChapterRel && entityEntry.State == EntityState.Added)
        //    {
        //        AliasChapterRel entity = entityEntry.Entity as AliasChapterRel;
        //        if (entity.FirstKnownUseDate > entity.LastKnownUseDate)
        //        {
        //            result.ValidationErrors.Add(new System.Data.Entity.Validation.DbValidationError("FirstKnownUseDate", "Date error."));
        //        }
        //    }

        //    if (result.ValidationErrors.Count > 0)
        //    {
        //        return result;
        //    }
        //    else
        //    {
        //        return base.ValidateEntity(entityEntry, items);
        //    }
        //}

        private DBAudit AuditTrailFactory(ObjectStateEntry entry, int userId)
        {
            //var userRepo = new UserRepository(this);
            //var user = userRepo.Find(userId);

            DBAudit audit = new DBAudit();

            audit.RevisionStamp = DateTime.Now;
            audit.TableName     = entry.EntitySet.Name;
            audit.KeyValue      = (int?)entry.CurrentValues.GetValue(0);
            audit.UserName      = userName;

            if (entry.State == EntityState.Added)
            {//entry is Added
                audit.NewData = GetEntryValueInString(entry, false);
                audit.Actions = "Added";
            }
            else if (entry.State == EntityState.Deleted)
            {//entry in deleted
                audit.OldData = GetEntryValueInString(entry, true);
                audit.Actions = "Deleted";
            }
            else
            {//entry is modified
                //audit.OldData = GetEntryValueInString(entry, true);
                audit.NewData = GetEntryValueInString(entry, false);
                audit.Actions = "Modified";

                IEnumerable <string> modifiedProperties = entry.GetModifiedProperties();
                //assing collection of mismatched Columns name as serialized string
                audit.ChangedColumns = XMLSerializationHelper.XmlSerialize(modifiedProperties.ToArray());
            }

            return(audit);
        }
Exemplo n.º 2
0
        public void Audit(MonkeyWrench.DataClasses.Logic.WebServiceLogin who, string action, params object [] args)
        {
            var audit = new DBAudit();

            audit.action       = string.Format(action, args);
            audit.person_login = who.User;
            audit.ip           = who.Ip4;
            audit.stamp        = Now;
            audit.Save(this);
        }
Exemplo n.º 3
0
    public override int SaveChanges()
    {
        ChangeTracker.DetectChanges();         // Important!
        ObjectContext ctx = ((IObjectContextAdapter)this).ObjectContext;
        IEnumerable <ObjectStateEntry> changes = ctx.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified);

        foreach (ObjectStateEntry stateEntryEntity in changes)
        {
            if (stateEntryEntity.EntitySet.Name != "MobileLoginDatas" && stateEntryEntity.EntitySet.Name != "SystemLookUps") //eliminate these tables
            {
                if (SessionData.userId != null && SessionData.userId != 0)                                                   //execute only after user login
                {
                    if (!stateEntryEntity.IsRelationship &&
                        stateEntryEntity.Entity != null &&
                        !(stateEntryEntity.Entity is DBAudit))
                    {
                        DBAudit audit = new DBAudit();
                        audit.RevisionStamp = DateTime.Now;
                        audit.UserId        = SessionData.userId;
                        audit.TableName     = stateEntryEntity.EntitySet.Name;
                        audit.IPAddress     = SessionData.clientIpAddress;
                        if (stateEntryEntity.State == EntityState.Added)
                        {        //entry is Added
                            audit.Data   = DictionaryToJsonConverter(GetEntryValueString(stateEntryEntity, false));
                            audit.Action = AuditActions.I.ToString();
                        }
                        else if (stateEntryEntity.State == EntityState.Deleted)
                        {        //entry in deleted
                            audit.Data   = DictionaryToJsonConverter(GetEntryValueString(stateEntryEntity, true));
                            audit.Action = AuditActions.D.ToString();
                        }
                        else
                        {        //entry is modified
                            audit.Data   = DictionaryToJsonConverter(GetEntryValueString(stateEntryEntity, false));
                            audit.Action = AuditActions.U.ToString();
                        }
                        this.Entry(audit).State = System.Data.EntityState.Added;
                    }
                }
            }
        }
        //  }
        return(base.SaveChanges());
    }
Exemplo n.º 4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        GetAuditResponse response;
        int limit;
        int page;

        if (!int.TryParse(Request.QueryString ["limit"], out limit))
        {
            limit = 25;
        }
        if (!int.TryParse(Request.QueryString ["page"], out page))
        {
            page = 0;
        }

        response = Utils.LocalWebService.GetAuditHistory(Master.WebServiceLogin, limit, limit * page);

        StringBuilder table = new StringBuilder();

        table.AppendLine("<table class='buildstatus'>");
        table.AppendLine("<tr><td>Timstamp</td><td>User</td><td>IP</td><td>Action</td></tr>");

        for (int i = 0; i < response.AuditEntries.Count; i++)
        {
            DBAudit audit = response.AuditEntries [i];

            table.Append("<tr>");
            table.AppendFormat("<td>{0}</td>", audit.stamp.ToString("yyyy/MM/dd HH:mm:ss UTC"));
            table.AppendFormat("<td style='text-align: left;'>{0}</td>", audit.person_login);
            table.AppendFormat("<td style='text-align: left;'>{0}</td>", !string.IsNullOrEmpty(audit.ip) ? audit.ip : "127.0.0.1");
            table.AppendFormat("<td style='text-align: left;'>{0}</td>", audit.action);
            table.AppendLine("</tr>");
        }

        table.AppendLine("</table>");

        // Add the pager at the bottom
        table.AppendLine(GeneratePager(response.Count, page, limit));
        auditList.InnerHtml = table.ToString();
    }
Exemplo n.º 5
0
        public override int SaveChanges()
        {
            //ChangeTracker.DetectChanges(); // Important!
            ObjectContext ctx = ((IObjectContextAdapter)this).ObjectContext;

            userRepo = new UserRepository(this);
            userId   = userRepo.GetUsers(x => x.UserName == userName).FirstOrDefault().Id;

            List <DBAudit> auditTrailList = new List <DBAudit>();


            //handle soft delete.
            foreach (var stateinfo in this.ChangeTracker.Entries()
                     .Where(e => e.Entity is StateInfo && e.State == EntityState.Deleted))
            {
                stateinfo.State = EntityState.Unchanged;
                ((StateInfo)stateinfo.Entity).DateDeleted   = DateTime.Now;
                ((StateInfo)stateinfo.Entity).DeletedUserId = userId;
            }

            List <ObjectStateEntry> objectStateEntryList = ctx.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted).ToList();

            foreach (ObjectStateEntry entry in objectStateEntryList)
            {
                if (entry.Entity is StateInfo)
                {
                    //Update modified
                    if (entry.State == EntityState.Modified || entry.State == EntityState.Added)
                    {
                        ((StateInfo)entry.Entity).DateModified   = DateTime.Now;
                        ((StateInfo)entry.Entity).ModifiedUserId = userId;
                    }
                    //Update added
                    if (entry.State == EntityState.Added)
                    {
                        ((StateInfo)entry.Entity).DateCreated    = DateTime.Now;
                        ((StateInfo)entry.Entity).DateModified   = DateTime.Now;
                        ((StateInfo)entry.Entity).CreatedUserId  = userId;
                        ((StateInfo)entry.Entity).ModifiedUserId = userId;
                    }
                    //handle audit log
                    if (!(entry.Entity is DBAudit) && !entry.IsRelationship)
                    {
                        DBAudit audit = this.AuditTrailFactory(entry, userId);
                        auditTrailList.Add(audit);
                    }
                }
            }

            if (auditTrailList.Count > 0)
            {
                foreach (var audit in auditTrailList)
                {//add all audits
                    this.DBAudit.Add(audit);
                }
            }


            //foreach (var stateinfo in this.ChangeTracker.Entries()
            //    .Where(e => e.Entity is StateInfo && e.State == EntityState.Deleted)
            //    .Select(e => e.Entity as StateInfo))
            //{
            //    stateinfo.
            //    stateinfo.DateModified = DateTime.Now;
            //    //stateinfo.CreatedUserId = 1;
            //}


            //foreach (var stateinfo in this.ChangeTracker.Entries()
            //    .Where(e => e.Entity is StateInfo && (e.State == EntityState.Added || e.State == EntityState.Modified))
            //    .Select(e => e.Entity as StateInfo))
            //{

            //    stateinfo.DateModified = DateTime.Now;
            //    //stateinfo.CreatedUserId = 1;
            //}

            //foreach (var stateinfo in this.ChangeTracker.Entries()
            //    .Where(e => e.Entity is StateInfo && (e.State == EntityState.Added))
            //    .Select(e => e.Entity as StateInfo))
            //{
            //    stateinfo.DateCreated = DateTime.Now;
            //    //stateinfo.ModifiedUserId = 1;
            //}
            //try
            //{
            int result = base.SaveChanges();

            return(result);

            //}
            //catch (DbEntityValidationException dbValEx)
            //{
            //    var outputLines = new StringBuilder();
            //    foreach (var eve in dbValEx.EntityValidationErrors)
            //    {
            //        outputLines.AppendFormat(
            //            "{0}: Entity of type \"{1}\" in state \"{2}\" has the following validation errors:"
            //            , DateTime.Now, eve.Entry.Entity.GetType().Name, eve.Entry.State);

            //        foreach (var ve in eve.ValidationErrors)
            //        {
            //            outputLines.AppendFormat("- Property: \"{0}\", Error: \"{1}\""
            //                , ve.PropertyName, ve.ErrorMessage);
            //        }
            //    }
            //}

            //foreach (var stateinfo in this.ChangeTracker.Entries()
            //                              .Where(e => e.Entity is StateInfo)
            //                              .Select(e => e.Entity as StateInfo))
            //{
            //    stateinfo.IsDirty = false;
            //}

            return(0);
        }