Hi guys, Today I got a requirement If user is changed any value in user info form that time I need to capture the previous value and current value.
For this I have created new table and I have inserting data into that table by using below class.
This class I am calling from write method in form data source.
public class UserModificationLog
{
public static void updateLogTable(Common _common)// This method I am calling from write method.
{
switch (_common.tableId)
{
case tablenum(UserInfo) :
UserModificationLog::updateUserLog(_common);
break;
}
}
public static void updateUserLog(UserInfo _userInfo)
{
DictTable dictTable = new sysDictTable(tableNum(UserInfo));
//DictTable dictTable = new sysDictTable(_userInfo.TableId);
fieldId fieldId = dictTable.fieldNext(0);
dictField dictField;
UserInfo userInfoOrg = _userInfo.orig();
while(fieldId)
{
if (userInfo.(fieldId) != userInfoOrg.(fieldId))
//|| userInfo.(fieldId) != _userInfo.orig().(fieldId))
{
UserModifications userModifications =
UserModificationLog::getUserModifications(fieldId);
if (userModifications != UserModifications::None)
{
UserModificationLog::insertData(_userInfo, userInfoOrg, fieldId,
dictTable.fieldObject(fieldId).name(),
userModifications);
}
}
fieldId = dictTable.fieldNext(fieldId);
}
}
public static void insertData(Common common, Common orgCommon,
fieldId fieldId, str fieldName,
UserModifications _userModifications)
{
SecurityUserRolesLogNew roleLocation;
roleLocation.clear();
roleLocation.ModifiedByUserId = curUserId();
roleLocation.Company = curExt();
roleLocation.ModifiedDateTim = DateTimeUtil::getSystemDateTime();
roleLocation.UserId = _common.(fieldNum(UserInfo, id));
roleLocation.UpdatedRecord = any2Str(_common.(_fieldId));
roleLocation.PreviousRecord = any2Str(_orgCommon.(_fieldId));
roleLocation.UserModifications = _userModifications;
//UserModificationLog::getUserModifications(_fieldId);
roleLocation.insert();
}
} Keep Daxing!!
No comments:
Post a Comment