/// <summary> /// Add record to AuditTrail. Delete or Recover action on a Table /// </summary> /// <param name="recordId">RecordId which was modified</param> /// <param name="recordVersionNo">Record Version o</param> /// <param name="updatedBy">Modified By</param> /// <param name="operation">Delete or Recover operation</param> /// <returns>true if success, False if fail</returns> public bool Add(object recordId, int?recordVersionNo, object updatedBy, RecordOperationEnum operation) { if (operation != RecordOperationEnum.Delete && operation != RecordOperationEnum.Recover) { throw new InvalidOperationException("Invalid call to this method. This method shall be call for Delete and Recover operation only."); } CreateTableIfNotExist(); AuditTrailKeyValue audit = new AuditTrailKeyValue { OperationType = operation, RecordId = recordId.ToString(), RecordVersionNo = (recordVersionNo ?? 0) + 1, TableName = entityTableInfo.Name, CreatedBy = updatedBy, lstAuditTrailDetail = new List <IAuditTrailDetail>() { new AuditTrailKeyValueDetail() { ColumnName = Config.ISACTIVE_COLUMN.Name, ColumnType = (int)DbType.Boolean, OldValue = (operation == RecordOperationEnum.Delete).ToString(), NewValue = (!(operation == RecordOperationEnum.Delete)).ToString() } } }; return(AddAuditTrail(audit)); }
bool AddAuditTrail(AuditTrailKeyValue audit) { audit.AuditTrailId = (long)Add(audit); audit.lstAuditTrailDetail.ForEach(p => p.AuditTrailId = audit.AuditTrailId); //add child records in detail table if (audit.lstAuditTrailDetail != null) { foreach (AuditTrailKeyValueDetail detail in audit.lstAuditTrailDetail) { detail.AuditTrailDetailId = (long)detailRepo.Add(detail); } } return(true); }