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