protected void Page_Init(object sender, EventArgs e) { Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Expires = -1; lblErrorSite.Visible = false; _DAO = new EPMData(SPContext.Current.Web.Site.ID); _DAO.OpenClientReportingConnection = _DAO.remoteCs; DropDownListScheduleType.SelectedIndexChanged += DropDownListScheduleType_SelectedIndexChanged; try { //using (SPWeb web = SPContext.Current.Web) //{ if (!IsPostBack) { PopulateLists(); loadData(SPContext.Current.Web); } //} } catch (Exception ex) { Response.Write("Error: " + ex.Message); } }
public void CreateEventMessageWithParams_WhenExceptionIsNull_ThrowsException() { using (ShimsContext.Create()) { // Arrange FakesForSpSecurity(); FakesForConstructor(); var epmData = new EPMData(Guid.NewGuid()); _privateObject = new PrivateObject(epmData); _exception = null; var sqlParameters = new List <SqlParameter>(); try { // Act _privateObject.Invoke(CreateEventMessageWithParamsMethod, _exception, DummyCommand, sqlParameters); Assert.Fail("CreateEventMessageWithParamsMethod: not throw ArgumentNullException"); } catch (Exception ex) { // Assert Assert.IsTrue(ex is ArgumentNullException); } }; }
public void execute(SPSite site, SPWeb web, string data) { EPMData epmdata = null; try { epmdata = new EPMData(site.ID); ProcessSecurity.ProcessSecurityGroups(site, epmdata.GetClientReportingConnection, data); } catch { } finally { if (epmdata != null) { epmdata.Dispose(); } if (web != null) { web.Dispose(); } if (site != null) { site.Dispose(); } data = null; } }
private void setRPTSettings(EPMData epmdata, SPSite site) { int hours = 0; string workdays = " "; SPSecurity.RunWithElevatedPrivileges(delegate { int startHour = site.RootWeb.RegionalSettings.WorkDayStartHour / 60; int endHour = site.RootWeb.RegionalSettings.WorkDayEndHour / 60; hours = endHour - startHour - 1; int work = site.RootWeb.RegionalSettings.WorkDays; for (byte x = 0; x < 7; x++) { workdays = ((((work >> x) & 0x01) == 0x01) ? "" : "," + (7 - x)) + workdays; } }); if (workdays.Length > 1) { workdays = workdays.Substring(1); } string sResults = ""; epmdata.UpdateRPTSettings(workdays, hours, out sResults); }
public void Initialize() { shimContext = ShimsContext.Create(); SetupShims(); spSite = new ShimSPSite(); epmData = new ShimEPMData(); }
public void CreateEventMessageWithParams_ShouldFillAllMessageParameters_ReturnsString() { using (ShimsContext.Create()) { // Arrange FakesForSpSecurity(); FakesForConstructor(); var guid = Guid.NewGuid(); var epmData = new EPMData(guid); _privateObject = new PrivateObject(epmData); _exception = new ArgumentNullException(nameof(epmData)); var sqlParameters = new List <SqlParameter> { new SqlParameter(DummyName, SqlDbType.Int), new SqlParameter(DummyString, null) }; var cmdDetails = $"Command: {DummyCommand}"; var cmdParams = CreateParametersResult(sqlParameters); // Act var message = _privateObject.Invoke(CreateEventMessageWithParamsMethod, _exception, DummyCommand, sqlParameters); // Assert var result = $"Name: {DummyName} Url: {DummyUrl} ID: {guid} : {_exception.Message}{cmdDetails}{cmdParams}"; Assert.AreEqual(result, message); }; }
public void SAccountInfo_WhenConnectionIsSuccess_ReturnsNull() { using (ShimsContext.Create()) { // Arrange FakesForSpSecurity(); FakesForConstructor(); SetupParameters(); var guid = Guid.NewGuid(); var epmData = new EPMData(guid); _privateObject = new PrivateObject(epmData); var siteId = Guid.NewGuid(); var webAppId = Guid.NewGuid(); ShimCoreFunctions.getConnectionStringGuid = guid1 => DummyString; ShimSqlConnection.ConstructorString = (connection, s) => new ShimSqlConnection(); ShimSqlConnection.AllInstances.Open = connection => { }; ShimSqlConnection.AllInstances.Close = connection => { }; ShimSqlCommand.ConstructorStringSqlConnection = (command, s, arg3) => new ShimSqlCommand(); // Act var result = EPMData.SAccountInfo(siteId, webAppId); // Assert Assert.IsNull(result); } }
private bool AddField(SPListEventProperties properties) { bool isSuccessful = true; string tableName = string.Empty; string ssTableName = string.Empty; var rb = new ReportBiz(properties.SiteId); try { var rd = new ReportData(properties.SiteId); var cols = new ColumnDefCollection(); tableName = rd.GetTableName(properties.ListId); ssTableName = rd.GetTableNameSnapshot(properties.ListId); if (!rd.ColumnExists(tableName, properties.Field.InternalName)) { cols.AddColumn(properties.Field); rd.AddColumns(tableName, cols); rd.AddColumns(ssTableName, cols); rd.InsertListColumns(properties.ListId, cols); } rd.Dispose(); } catch (Exception ex) { var DAO = new EPMData(properties.SiteId); DAO.LogStatus(properties.ListId.ToString(), properties.FieldName, "Database column add attempt: Unable to add column " + properties.FieldName + ". " + ex.Message, ex.StackTrace, 2, 5, Guid.NewGuid().ToString()); //Logged in the RefreshAll event log. DAO.Dispose(); } if (properties.Field is SPFieldLookup) { try { //FOREIGN IMPLEMENTATION -- START var DAO = new EPMData(properties.SiteId); rb.UpdateForeignKeys(DAO); DAO.Dispose(); // -- END } catch (Exception ex) { isSuccessful = false; SPSecurity.RunWithElevatedPrivileges(delegate { if (!EventLog.SourceExists("EPMLive Reporting - UpdateForeignKeys")) { EventLog.CreateEventSource("EPMLive Reporting - UpdateForeignKeys", "EPM Live"); } LogEntry(ex, "EPMLive Reporting - UpdateForeignKeys"); }); } } return(isSuccessful); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool RefreshTimesheetsException( EPMData empData, out string message, Guid jobUid, bool consolidationDone) { throw new Exception(); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool CleanTablesSPSiteEPMDataGuidStringRefFalse( SPSite site, EPMData epmData, Guid jobId, ref string error) { return(false); }
private static void LogStatusLevel2Type3(string shortMsg, string longMsg, EPMData epmData) { Guard.ArgumentIsNotNull(shortMsg, nameof(shortMsg)); Guard.ArgumentIsNotNull(longMsg, nameof(longMsg)); Guard.ArgumentIsNotNull(epmData, nameof(epmData)); epmData.LogStatus(string.Empty, string.Empty, shortMsg, longMsg, 2, 3, Convert.ToString(timerJobId)); }
private static void LogStatusDataCleaning(string shortMsg, string longMsg, EPMData epmData) { Guard.ArgumentIsNotNull(shortMsg, nameof(shortMsg)); Guard.ArgumentIsNotNull(longMsg, nameof(longMsg)); Guard.ArgumentIsNotNull(epmData, nameof(epmData)); epmData.LogStatus(string.Empty, DataCleaningRefresh, shortMsg, longMsg, 0, 1, string.Empty); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool UpdateRPTSettings( EPMData epmData, string nonWorkingDays, int workHours, out string results) { results = string.Empty; return(true); }
public bool UpdateForeignKeys(EPMData DAO) { DataTable AllForeignKeysByList = GetAllForeignKeys(DAO); //Loop thru list tables and ADD FOREIGN KEYS foreach (DataRow AllListForeignKeys in AllForeignKeysByList.Rows) { //DELETE EXISTING FK's from list table DAO.Command = "BEGIN TRY " + "WHILE EXISTS(select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where CONSTRAINT_NAME like 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " + "BEGIN " + "DECLARE @cName nvarchar(Max) " + "SELECT @cName = (SELECT TOP 1 [CONSTRAINT_NAME] FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE CONSTRAINT_NAME LIKE 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " + "DECLARE @sql nvarchar(Max) " + "SELECT @sql = 'ALTER TABLE ' + @tableName + ' DROP CONSTRAINT ' + @cName " + "EXEC sp_executesql @sql " + "END " + "END TRY " + "BEGIN CATCH " + "PRINT 'Error Detected' " + "END CATCH"; DAO.AddParam("@tableName", AllListForeignKeys["TABLE_NAME"].ToString()); // - CAT.NET false-positive: All single quotes are escaped/removed. DAO.ExecuteNonQuery(DAO.GetClientReportingConnection); //DELETE EXISTING FK's from list snapshot table DAO.Command = "BEGIN TRY " + "WHILE EXISTS(select * from INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE where CONSTRAINT_NAME like 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " + "BEGIN " + "DECLARE @cName nvarchar(Max) " + "SELECT @cName = (SELECT TOP 1 [CONSTRAINT_NAME] FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE WHERE CONSTRAINT_NAME LIKE 'FK_EPMLIVE_%' AND TABLE_NAME=@tableName) " + "DECLARE @sql nvarchar(Max) " + "SELECT @sql = 'ALTER TABLE ' + @tableName + ' DROP CONSTRAINT ' + @cName " + "EXEC sp_executesql @sql " + "END " + "END TRY " + "BEGIN CATCH " + "PRINT 'Error Detected' " + "END CATCH"; DAO.AddParam("@tableName", AllListForeignKeys["SNAPSHOT_TABLE_NAME"].ToString()); // - CAT.NET false-positive: All single quotes are escaped/removed. DAO.ExecuteNonQuery(DAO.GetClientReportingConnection); //ADD FK's to list table DAO.Command = AllListForeignKeys["FK_TABLE_SCRIPT"].ToString(); // - CAT.NET false-positive: All single quotes are escaped/removed. DAO.ExecuteNonQuery(DAO.GetClientReportingConnection); //ADD FK's to list snapshot table DAO.Command = AllListForeignKeys["FK_SNAPSHOT_TABLE_SCRIPT"].ToString(); // - CAT.NET false-positive: All single quotes are escaped/removed. DAO.ExecuteNonQuery(DAO.GetClientReportingConnection); } return(true); }
private void UpgradeDatabase() { Guid siteId = SPContext.Current.Site.ID; using (var epmData = new EPMData(siteId)) { SPSecurity.RunWithElevatedPrivileges(() => { ExecuteUpgradeScripts(epmData, siteId); }); } }
public static bool CleanTables(SPSite site, EPMData epmData, Guid jobId, ref string error) { Guard.ArgumentIsNotNull(site, nameof(site)); Guard.ArgumentIsNotNull(epmData, nameof(epmData)); timerJobId = jobId; WipeData(DeleteReportListIds, WipeDataId, epmData); WipeData(DeleteRptWeb, WipeDataId, epmData); WipeData(DeleteRptWebGroups, WipeDataId, epmData); var listNames = new DataTable(); var listIds = new DataTable(); listIds.Columns.Add(new DataColumn(Id, typeof(Guid))); listIds.Columns.Add(new DataColumn(ListIcon, typeof(string))); var rptWeb = GetRptWebDataTable(); var listIdsTest = new DataTable(); var rptWebTest = new DataTable(); var errMsg = new StringBuilder(); bool hasError = false; SPSecurity.RunWithElevatedPrivileges( delegate { using (var sqlCommand = new SqlCommand(SelectListTableRptList, epmData.GetClientReportingConnection)) { using (var adapter = new SqlDataAdapter(sqlCommand)) { adapter.Fill(listNames); } LogStatusLevel2Type3(RepopulateId, SelectListTableRptList, epmData); } using (var spSite = new SPSite(site.ID)) { foreach (SPWeb spWeb in spSite.AllWebs) { GatherWebInfo(spWeb, rptWeb, spSite); hasError = PopulateRptWebGroups(epmData, spWeb, spSite, errMsg); hasError = GatherValidLists(listNames, spWeb, listIds, hasError, errMsg); spWeb?.Dispose(); } hasError = BulkInsertReportListIds(epmData, listIds, errMsg); BulkInsertRptWeb(epmData, rptWeb, ref hasError, errMsg); } if (CleanLstTables(epmData, listIdsTest, listNames, hasError, errMsg)) { var finalRecent = GetValidFrfRecentItems(epmData, errMsg, listIdsTest, rptWebTest); BulkInsertFrfRecentItems(epmData, finalRecent, rptWeb, errMsg); } }); error = errMsg.ToString(); return(hasError); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool RefreshTimesheets( EPMData empData, out string message, Guid jobUid, bool consolidationDone) { RefreshTimeSheetWasCalled = true; message = DummyString; return(ReturnValue); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool RefreshTimesheetsBatch( EPMData empData, out string message, Guid jobUid, int pageSize) { RefreshTimeSheetWasCalled = true; message = DummyString; return(ReturnValue); }
/// <summary> /// This is a fake method. All the parameters are required, even though not all of them are used /// </summary> private bool CleanTablesSPSiteEPMDataGuidStringRefException( SPSite site, EPMData epmData, Guid jobId, ref string error) { const string DummyError = "Dummy Error"; throw new Exception(DummyError); }
public DataTable GetReferencingTables(EPMData DAO, string sTableName) { string sql = string.Format("EXEC sp_MSdependencies N'{0}', null, 1315327", sTableName.Replace("'", "")); // - CAT.NET false-positive: All single quotes are escaped/removed. //string sql = "EXEC sp_MSdependencies N'{0}', null, 1315327"; DAO.Command = sql; //DAO.AddParam("@tableName", sTableName); return(DAO.GetTable(DAO.GetClientReportingConnection)); }
public void execute(SPSite site, SPWeb web, string data) { EPMData epmdata = null; DataTable dt = null; StringBuilder sbErrors = null; try { sbErrors = new StringBuilder(); epmdata = new EPMData(site.ID); epmdata.SnapshotLists(base.JobUid, site.ID, data); dt = epmdata.GetSnapshotResults(base.JobUid); foreach (DataRow dr in dt.Rows) { sbErrors.Append("Processing List (" + dr["ListName"] + ")"); if (dr["level"].ToString() == "2") { sbErrors.Append(" Failed: " + dr["ShortMessage"]); bErrors = true; } else { sbErrors.Append(" Success"); } sbErrors.Append("<br>"); } } finally { sErrors = sbErrors.ToString(); sbErrors = null; if (dt != null) { dt.Dispose(); } if (epmdata != null) { epmdata.Dispose(); } if (web != null) { web.Dispose(); } if (site != null) { site.Dispose(); } data = null; } }
private static void WipeData(string deleteQuery, string logMsg, EPMData epmData) { Guard.ArgumentIsNotNull(deleteQuery, nameof(deleteQuery)); Guard.ArgumentIsNotNull(logMsg, nameof(logMsg)); Guard.ArgumentIsNotNull(epmData, nameof(epmData)); using (var sqlCommand = new SqlCommand(deleteQuery, epmData.GetClientReportingConnection)) { sqlCommand.ExecuteNonQuery(); LogStatusLevel2Type3(logMsg, deleteQuery, epmData); } }
public void Encrypt_ShouldEncryptPlainText_ReturnsString() { // Arrange const string resultKey = "RbOehAehsS7MYbKpbCbvepBVjtlsFbNU"; var text = "This is a test string"; // Act var encryptedString = EPMData.Encrypt(text); // Assert Assert.AreEqual(resultKey, encryptedString); }
public void Decrypt_ShouldDecryptEncryptedString_ReturnsString() { // Arrange const string encryptedKey = "RbOehAehsS7MYbKpbCbvepBVjtlsFbNU"; const string resultString = "This is a test string"; // Act var decryptedString = EPMData.Decrypt(encryptedKey); // Assert Assert.AreEqual(resultString, decryptedString); }
/// <summary> /// Refreshes all. /// </summary> /// <returns></returns> public string RefreshAll() { try { using (var epmData = new EPMData(Web.Site.ID)) { epmData.DeleteWork(Guid.Empty, -1); epmData.Command = "select timerjobuid from timerjobs where siteguid=@siteguid and listguid is null and jobtype=5"; epmData.AddParam("@siteguid", Web.Site.ID); object result = epmData.ExecuteScalar(epmData.GetEPMLiveConnection); Guid timerJobId = Guid.Empty; if (result != null) { timerJobId = (Guid)result; } else { timerJobId = Guid.NewGuid(); epmData.Command = "INSERT INTO TIMERJOBS (siteguid, jobtype, jobname, scheduletype, webguid, timerjobuid) VALUES (@siteguid, 5, 'Reporting Refresh All', 2, @webguid, @timerjobuid)"; epmData.AddParam("@siteguid", Web.Site.ID); epmData.AddParam("@webguid", Web.ID); epmData.AddParam("@timerjobuid", timerJobId); epmData.ExecuteNonQuery(epmData.GetEPMLiveConnection); } if (timerJobId != Guid.Empty) { CoreFunctions.enqueue(timerJobId, 0, Web.Site); } } return("<RefreshAll><Data/></RefreshAll>"); } catch (APIException) { throw; } catch (Exception exception) { throw new APIException((int)Errors.RefreshAll, exception.GetBaseException().Message); } }
public void LogWindowsEvents_ShouldCreateEventLog_WriteEntry() { using (ShimsContext.Create()) { // Arrange FakesForSpSecurity(); FakesForConstructor(); SetupParameters(); var guid = Guid.NewGuid(); var epmData = new EPMData(guid); _privateObject = new PrivateObject(epmData); var fullSourceResult = string.Empty; var eventMessageResult = string.Empty; var entryTypeResult = EventLogEntryType.SuccessAudit; var eventIdResult = 0; ShimEventLog.SourceExistsString = source => { fullSourceResult = source; return(false); }; ShimEventLog.CreateEventSourceStringString = (source, logName) => { }; ShimEventLog.ConstructorString = (_, logName) => new ShimEventLog(); ShimEventLog.AllInstances.SourceSetString = (_, source) => { }; ShimEventLog.AllInstances.MaximumKilobytesSetInt64 = (_, maxValue) => { }; ShimEventLog.AllInstances.MachineNameSetString = (_, machineName) => { }; ShimEventLog.AllInstances.ModifyOverflowPolicyOverflowActionInt32 = (_, action, days) => { }; ShimEventLog.AllInstances.WriteEntryStringEventLogEntryTypeInt32 = (log, eventMessage, entryType, eventId) => { eventMessageResult = eventMessage; entryTypeResult = entryType; eventIdResult = eventId; }; // Act _privateObject.Invoke(LogWindowsEventsMethod, _logName, _source, _eventMessage, true, _eventId); // Assert var fullSource = $"{EpmLiveReportingKey} - {_source}"; Assert.AreEqual(fullSourceResult, fullSource); Assert.AreEqual(eventMessageResult, _eventMessage); Assert.AreEqual(entryTypeResult, EventLogEntryType.Error); Assert.AreEqual(eventIdResult, _eventId); }; }
private void FillData() { string reportingListIDs = string.Empty; Guid siteId = SPContext.Current.Site.ID; SPWeb spweb = null; var rd = new ReportData(siteId); var daoEPMData = new EPMData(siteId); LoadLists(rd.GetListMappings()); using (var spSite = new SPSite(siteId)) { if (reportingV2Enabled) { spweb = SPContext.Current.Web; } else { spweb = spSite.OpenWeb(); } } string defaultLists = daoEPMData.DefaultLists(spweb); string _DefaultLists = CoreFunctions.getConfigSetting(spweb, "EPMLiveFixLists").Replace("\r\n", ","); var dtReportData = new DataTable(); using (var spSite = new SPSite(siteId)) { SPListCollection lists = spweb.Lists; foreach (SPList list in lists) { if ((!list.Hidden && IsReportingList(list.Title)) || defaultLists.Contains(list.Title) || _DefaultLists.Contains(list.Title)) { reportingListIDs += "'" + list.ID + "',"; } } if (!string.IsNullOrEmpty(reportingListIDs)) { reportingListIDs = reportingListIDs.Substring(0, reportingListIDs.Length - 1); } DataView mappings = rd.GetListMappings(reportingListIDs).DefaultView; GridView1.DataSource = mappings; GridView1.DataBind(); rd.Dispose(); } }
private string GetRefLists(DataTable refTables, EPMData dao) { string sRefLists = string.Empty; foreach (DataRow table in refTables.Rows) { if (!table["oObjName"].ToString().ToLower().Contains("snapshot")) { sRefLists = sRefLists + dao.GetListName(table["oObjName"].ToString()) + ","; } } sRefLists = sRefLists.Remove(sRefLists.LastIndexOf(",")); return(sRefLists); }
public void BulkInsertTest() { using (SPEmulators.SPEmulationContext ctx = new SPEmulators.SPEmulationContext(SPEmulators.IsolationLevel.Fake)) { ShimEPMData.ConstructorGuid = (instance, _guid) => { }; ShimEPMData.AllInstances.LogStatusStringStringStringStringInt32Int32String = (String1, String2, String3, String4, Int321, Int322, String5, _bool) => { return(true); }; ShimSqlConnection.AllInstances.BeginTransaction = (instance) => { return(new ShimSqlTransaction() { Commit = () => { }, DisposeBoolean = (_bool) => { }, Rollback = () => { } }); }; ShimSqlBulkCopy.ConstructorSqlConnectionSqlBulkCopyOptionsSqlTransaction = (_a, _b, _c, _d) => { }; ShimSqlBulkCopy.AllInstances.Close = (instance) => { }; ShimSqlBulkCopy.AllInstances.NotifyAfterGet = (instance) => { return(0); }; ShimSqlBulkCopy.AllInstances.WriteToServerDataTable = (instance, _dt) => { }; ShimSqlBulkCopy.AllInstances.ColumnMappingsGet = (instance) => { return(new ShimSqlBulkCopyColumnMappingCollection() { AddStringString = (_string, str) => { return new ShimSqlBulkCopyColumnMapping(); } }); }; DataSet ds = new DataSet(); DataTable dt = new DataTable(); dt.Columns.Add("TestColumn"); ds.Tables.Add(dt); EPMData epmdata = new EPMData(Guid.NewGuid()); string message = string.Empty; using (TestCheck.OpenCloseConnections) { //Act var result = epmdata.BulkInsert(ds, true, out message); //Assert Assert.AreEqual(true, result); } using (TestCheck.OpenCloseConnections) { //Act var result = epmdata.BulkInsert(ds, Guid.NewGuid()); //Assert Assert.AreEqual(true, result); } } }
private static void BulkInsertFrfRecentItems(EPMData epmData, DataTable finalRecent, DataTable rptWeb, StringBuilder errMsg) { Guard.ArgumentIsNotNull(epmData, nameof(epmData)); Guard.ArgumentIsNotNull(finalRecent, nameof(finalRecent)); Guard.ArgumentIsNotNull(rptWeb, nameof(rptWeb)); Guard.ArgumentIsNotNull(errMsg, nameof(errMsg)); if (finalRecent.Rows.Count > 0) { LogStatusLevel2Type3(BulkInsertFrfRecentItemsId, StartBulkInsertFrfRecentItems, epmData); try { using (var beginTransaction = epmData.GetEPMLiveConnection.BeginTransaction()) { using (var sqlBulkCopy = new SqlBulkCopy(epmData.GetEPMLiveConnection, new SqlBulkCopyOptions(), beginTransaction)) { sqlBulkCopy.DestinationTableName = FrfTableName; Action <string> addColumnMappings = (columnName) => sqlBulkCopy.ColumnMappings.Add(columnName, columnName); addColumnMappings(FrfId); addColumnMappings(SiteId1); addColumnMappings(WebId1); addColumnMappings(ListId); addColumnMappings(ItemId1); addColumnMappings(UserId); addColumnMappings(Title); addColumnMappings(IconText); addColumnMappings(TypeText); addColumnMappings(FString); addColumnMappings(FDate); addColumnMappings(FInt); sqlBulkCopy.WriteToServer(rptWeb); } beginTransaction.Commit(); } LogStatusLevel2Type3(BulkInsertFrfRecentItemsId, CompleteBulkInsertFrfRecentItems, epmData); } catch (Exception exception) { LogStatusDataCleaning($"Error cleaning lst tables. Error: {exception.Message}", errMsg.ToString(), epmData); Trace.WriteLine(exception); } } }