44 lines
1.3 KiB
C#
44 lines
1.3 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using NHibernate;
|
|||
|
using Tanshu.Accounts.Entities;
|
|||
|
|
|||
|
namespace Tanshu.Accounts.Repository
|
|||
|
{
|
|||
|
public class VoucherDirty : EmptyInterceptor
|
|||
|
{
|
|||
|
public override int[] FindDirty(object entity, object id, object[] currentState, object[] previousState, string[] propertyNames, NHibernate.Type.IType[] types)
|
|||
|
{
|
|||
|
var result = new List<int>();
|
|||
|
|
|||
|
// we do not care about other entities here
|
|||
|
if (!(entity is Voucher))
|
|||
|
{
|
|||
|
return null;
|
|||
|
}
|
|||
|
|
|||
|
var length = propertyNames.Length;
|
|||
|
|
|||
|
// iterate all properties
|
|||
|
for (var i = 0; i < length; i++)
|
|||
|
{
|
|||
|
bool areEqual;
|
|||
|
if (currentState[i] == null)
|
|||
|
areEqual = previousState[i] == null;
|
|||
|
else
|
|||
|
areEqual = currentState[i].Equals(previousState[i]);
|
|||
|
var isResettingProperty = propertyNames[i] == "LastEditDate";
|
|||
|
|
|||
|
if (!areEqual || isResettingProperty)
|
|||
|
{
|
|||
|
result.Add(i); // the index of "Code" property will be added always
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return result.ToArray();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|