예제 #1
0
        public void GetHistory_WithChanges()
        {
            Assert.That(Records, Is.Empty);

            AreaValueModel model = new AreaValueModel {
                Area = "ROM", Value = 100
            };

            Repository.Add(model);
            Assert.That(Records.Count, Is.EqualTo(1));

            AmplaRecord record = Repository.FindRecord(model.Id);

            Assert.That(record, Is.Not.Null);

            Assert.That(record.GetValue("Area"), Is.EqualTo(model.Area));
            Assert.That(record.GetValue("Value"), Is.EqualTo(model.Value));
            Assert.That(record.Location, Is.EqualTo(location));
            Assert.That(record.Id, Is.EqualTo(model.Id));

            AreaValueModel updated = new AreaValueModel {
                Id = model.Id, Area = "ROM", Value = 200
            };

            DateTime before = DateTime.Now.AddMinutes(-1);
            DateTime after  = DateTime.Now.AddMinutes(+1);

            Repository.Update(updated);
            record = Repository.FindRecord(model.Id);
            Assert.That(record, Is.Not.Null);

            Assert.That(record.GetValue("Area"), Is.EqualTo(model.Area));
            Assert.That(record.GetValue("Value"), Is.EqualTo(200));
            Assert.That(record.Location, Is.EqualTo(location));
            Assert.That(record.Id, Is.EqualTo(model.Id));

            AmplaAuditRecord auditRecord = Repository.GetHistory(model.Id);

            Assert.That(auditRecord, Is.Not.Null);

            Assert.That(auditRecord.Id, Is.EqualTo(model.Id));
            Assert.That(auditRecord.Location, Is.EqualTo(location));
            Assert.That(auditRecord.Module, Is.EqualTo(module));
            Assert.That(auditRecord.Changes, Is.Not.Empty);
            Assert.That(auditRecord.Changes.Count, Is.EqualTo(1));

            AmplaAuditSession session = auditRecord.Changes[0];

            Assert.That(session.User, Is.EqualTo("User"));
            Assert.That(session.EditedTime, Is.InRange(before, after));
            Assert.That(session.Fields, Is.Not.Empty);

            AssertAuditField(session, "Value", "100", "200");
        }
        public bool Bind()
        {
            if (response.RowSets.Length == 0)
            {
                return(false);
            }

            GetAuditDataRowSet rowSet = response.RowSets[0];

            AmplaAuditRecord model = new AmplaAuditRecord {
                Id = record.Id, Location = record.Location, Module = record.Module
            };

            List <AmplaAuditSession> changes = new List <AmplaAuditSession>();

            foreach (GetAuditDataRow row in rowSet.Rows)
            {
                if (row.Field != "LastModified")
                {
                    DateTime editTime = Iso8601DateTimeConverter.ConvertToLocalDateTime(row.EditedDateTime);
                    string   user     = row.EditedBy.StartsWith(systemConfigUsers)
                                      ? row.EditedBy.Substring(systemConfigUsers.Length)
                                      : row.EditedBy;
                    AmplaAuditSession session = changes.Find(s => s.EditedTime == editTime && s.User == user);
                    if (session == null)
                    {
                        session = new AmplaAuditSession(user, editTime);
                        changes.Add(session);
                    }

                    session.Fields.Add(new AmplaAuditField
                    {
                        Name          = row.Field,
                        OriginalValue = row.OriginalValue,
                        EditedValue   = row.EditedValue
                    });
                }
            }

            changes.Sort();

            model.Changes = changes;
            records.Add(model);
            return(true);
        }
        protected static AmplaAuditSession AddSession(string user, DateTime time, string[] fields, string[] oldValues,
                                                      string[] newValues)
        {
            AmplaAuditSession session = new AmplaAuditSession(user, time);

            Assert.That(fields.Length, Is.GreaterThan(0));
            Assert.That(fields.Length, Is.EqualTo(oldValues.Length));
            Assert.That(fields.Length, Is.EqualTo(newValues.Length));
            for (int i = 0; i < fields.Length; i++)
            {
                AmplaAuditField field = new AmplaAuditField
                {
                    Name          = fields[i],
                    OriginalValue = oldValues[i],
                    EditedValue   = newValues[i]
                };
                session.Fields.Add(field);
            }
            return(session);
        }