/// <summary> /// PostFlush /// </summary> /// <param name="entities"></param> public override void PostFlush(System.Collections.ICollection entities) { try { if (m_logRecords.Count > 0) { AuditLogRecord log = CreateNew(null, null, AuditLogType.TransactionBegin); m_session.Save(log); for (int i = 0; i < m_logRecords.Count; ++i) { m_session.Save(m_logRecords[i]); } log = CreateNew(null, null, AuditLogType.TransactionCompletion); m_session.Save(log); } } catch (HibernateException ex) { throw new CallbackException(ex); } finally { m_logRecords.Clear(); } }
/// <summary> /// OnDelete /// </summary> /// <param name="entity"></param> /// <param name="id"></param> /// <param name="state"></param> /// <param name="propertyNames"></param> /// <param name="types"></param> public override void OnDelete(object entity, object id, object[] state, string[] propertyNames, IType[] types) { AuditLogRecord log = AuditLogInterceptor.CreateNew(entity, id, AuditLogType.Delete, m_session); m_logRecords.Add(log); base.OnDelete(entity, id, state, propertyNames, types); }
public void Get_audit_logs_from_payer_audit_logs() { var user = _client.Users[0]; user.Accounting.Payment = 1000; session.SaveOrUpdate(user); Flush(); var logs = AuditLogRecord.GetLogs(session, user.Payer, false); Assert.That(logs.Count, Is.GreaterThan(0), logs.Implode(l => l.Message)); Assert.AreEqual("Изменено 'Платеж' было '800' стало '1000'", logs[0].Message, logs.Implode()); }
public void AuditLogInterceptor_Records_Log_Entry_When_Item_Persisted() { // Save a user without audit logging UserDAO userDAO = new UserDAO(); User seller = new User("Christian", "Bauer", "turin", "abc123", "*****@*****.**"); userDAO.MakePersistent(seller); NHibernateHelper.CommitTransaction(); NHibernateHelper.CloseSession(); // Enable interceptor AuditLogInterceptor interceptor = new AuditLogInterceptor(); NHibernateHelper.RegisterInterceptor(interceptor); interceptor.Session = NHibernateHelper.Session; interceptor.UserId = seller.Id; // Save an item with audit logging enabled Item item = new Item( "Warfdale Nearfield Monitors", "Pair of 150W nearfield monitors for the home studio.", seller, new MonetaryAmount(1.99, "USD"), new MonetaryAmount(50.33, "USD"), DateTime.Now, DateTime.Now.AddDays(1) ); ItemDAO itemDAO = new ItemDAO(); itemDAO.MakePersistent(item); // Synchronize state to trigger interceptor NHibernateHelper.Session.Flush(); // Check audit log IQuery findAuditLogRecord = NHibernateHelper.Session.CreateQuery("from AuditLogRecord record where record.EntityId = :id"); findAuditLogRecord.SetParameter("id", item.Id); AuditLogRecord foundRecord = findAuditLogRecord.UniqueResult <AuditLogRecord>(); Assert.IsNotNull(foundRecord); Assert.AreEqual(foundRecord.UserId, seller.Id); NHibernateHelper.CommitTransaction(); NHibernateHelper.CloseSession(); // Deregister interceptor NHibernateHelper.RegisterInterceptor(null); }
internal static AuditLogRecord CreateNew(object entity, object id, AuditLogType logType, ISession session) { AuditLogRecord log = new AuditLogRecord(); log.EntityId = id == null ? string.Empty : id.ToString(); log.EntityName = entity == null ? string.Empty : session.GetEntityName(entity); log.LogType = logType.ToString(); log.Created = DateTime.Now; log.CreatedBy = SystemConfiguration.UserName; log.ClientId = SystemConfiguration.ClientId; log.OrgId = SystemConfiguration.OrgId; log.IsActive = true; return(log); }
public IList <AuditRecord> ForPayer(Payer payer, ISession session) { if (payer != null && Types.Contains(LogMessageType.Payer)) { var payerMessages = AuditLogRecord.GetLogs(session, payer, false); return(payerMessages.Select(m => new AuditRecord { Message = m.Message, ObjectId = m.ObjectId, Name = m.Name, Type = m.LogType, WriteTime = m.LogTime, UserName = m.OperatorName, MessageType = LogMessageType.System, ShowOnlyPayer = m.ShowOnlyPayer }).ToList()); } return(new List <AuditRecord>()); }
/// <summary> /// OnDelete /// </summary> /// <param name="entity"></param> /// <param name="id"></param> /// <param name="state"></param> /// <param name="propertyNames"></param> /// <param name="types"></param> public override void OnDelete(object entity, object id, object[] state, string[] propertyNames, IType[] types) { if (IsAuditable(entity)) { AuditLogRecord log = CreateNew(entity, id, AuditLogType.Delete); StringBuilder sb = new StringBuilder(); for (int i = 0; i < propertyNames.Length; ++i) { sb.Append(propertyNames[i]); sb.Append(":"); sb.Append(GetStateString(state, types, i)); sb.Append(" | "); } log.Message = sb.ToString().Substring(0, Math.Min(sb.Length, 4000)); m_logRecords.Add(log); } base.OnDelete(entity, id, state, propertyNames, types); }
/// <summary> /// OnFlushDirty /// </summary> /// <param name="entity"></param> /// <param name="id"></param> /// <param name="currentState"></param> /// <param name="previousState"></param> /// <param name="propertyNames"></param> /// <param name="types"></param> /// <returns></returns> public override bool OnFlushDirty(object entity, object id, object[] currentState, object[] previousState, string[] propertyNames, IType[] types) { if (IsAuditable(entity)) { AuditLogRecord log = CreateNew(entity, id, AuditLogType.Update); StringBuilder sb = new StringBuilder(); for (int i = 0; i < propertyNames.Length; ++i) { sb.Append(propertyNames[i]); sb.Append(":"); sb.Append(GetStateString(previousState, types, i)); sb.Append("->"); sb.Append(GetStateString(currentState, types, i)); sb.Append(" | "); } log.Message = sb.ToString().Substring(0, Math.Min(sb.Length, 4000)); m_logRecords.Add(log); } return(base.OnFlushDirty(entity, id, currentState, previousState, propertyNames, types)); }
public void Edit(uint billingCode, uint clientCode, string tab, uint currentJuridicalOrganizationId, [SmartBinder(Expect = "filter.Types")] BillingFilter filter) { filter.ServiceId = clientCode; filter.PayerId = billingCode; filter.Tab = tab; var payer = filter.Payer; var userIds = payer.Users.Select(u => u.Id).ToArray(); PropertyBag["UsersMessages"] = DbSession.Query <UserMessage>() .Where(m => userIds.Contains(m.Id) && m.ShowMessageCount > 0) .ToList(); PropertyBag["filter"] = filter; PropertyBag["LogRecords"] = AuditLogRecord.GetLogs(DbSession, payer, filter.Types.Contains(LogMessageType.System)); PropertyBag["Instance"] = payer; PropertyBag["payer"] = payer; PropertyBag["MailSentHistory"] = MailSentEntity.GetHistory(payer); PropertyBag["Today"] = DateTime.Today; PropertyBag["Recipients"] = DbSession.Query <Recipient>().OrderBy(r => r.Name).ToList(); PropertyBag["suppliers"] = DbSession.Query <Supplier>().Where(s => s.Payer == payer).OrderBy(s => s.Name).ToList(); PropertyBag["clients"] = payer.Clients.OrderBy(c => c.Name).ToList(); PropertyBag["Users"] = payer.Users.Where(u => u.RootService.Type != ServiceType.Supplier).ToList(); PropertyBag["Addresses"] = payer.Addresses; PropertyBag["Reports"] = payer.GetReportAccounts(); PropertyBag["userMessage"] = new UserMessage(); if (currentJuridicalOrganizationId > 0) { PropertyBag["currentJuridicalOrganizationId"] = currentJuridicalOrganizationId; } }
internal static AuditLogRecord CreateNew(object entity, object id, AuditLogType logType, ISession session) { AuditLogRecord log = new AuditLogRecord(); log.EntityId = id == null ? string.Empty : id.ToString(); log.EntityName = entity == null ? string.Empty : session.GetEntityName(entity); log.LogType = logType.ToString(); log.Created = DateTime.Now; log.CreatedBy = SystemConfiguration.UserName; log.ClientId = SystemConfiguration.ClientId; log.OrgId = SystemConfiguration.OrgId; log.IsActive = true; return log; }