Beispiel #1
0
        public override void OnAudit(ISaveRequestHandler handler)
        {
            if (handler.Row == null || captureLogHandler == null)
            {
                return;
            }

            if (handler.IsCreate)
            {
                captureLogHandler.LogSave(handler.UnitOfWork, handler.Row,
                                          Authorization.UserId.TryParseID().Value);

                return;
            }

            var insertLogRow = handler.Row as IInsertLogRow;
            var updateLogRow = handler.Row as IUpdateLogRow;

            bool anyChanged = false;

            foreach (var field in handler.Row.GetTableFields())
            {
                if (insertLogRow != null &&
                    (ReferenceEquals(insertLogRow.InsertDateField, field) ||
                     ReferenceEquals(insertLogRow.InsertUserIdField, field)))
                {
                    continue;
                }

                if (updateLogRow != null &&
                    (ReferenceEquals(updateLogRow.UpdateDateField, field) ||
                     ReferenceEquals(updateLogRow.UpdateUserIdField, field)))
                {
                    continue;
                }

                if (field.IndexCompare(handler.Old, handler.Row) != 0)
                {
                    anyChanged = true;
                    break;
                }
            }

            if (anyChanged)
            {
                captureLogHandler.LogSave(handler.UnitOfWork, handler.Row, Authorization.UserId.TryParseID().Value);
            }
        }