public async Task <Response> ExecutePreCascadeDelete() { var response = new Response { Success = true, Message = string.Empty }; try { var dtExportJobErrors = SqlQueryHelper.RetrieveJobErrorsFromTempTable(DbContext, TempTableName); if (dtExportJobErrors != null && dtExportJobErrors.Rows.Count > 0) { var jobArtifactIDs = dtExportJobErrors.Rows.OfType <DataRow>().Select(dr => dr.Field <Int32>("ArtifactID")).ToList(); var setStatus = await ArtifactQueries.RetrieveRdoJobStatusAsync(SvcManager, WorkspaceArtifactId, IdentityCurrentUser, jobArtifactIDs[0]); if (!string.IsNullOrEmpty(setStatus)) { switch (setStatus) { case Constant.Status.Job.SUBMITTED: case Constant.Status.Job.IN_PROGRESS_MANAGER: case Constant.Status.Job.IN_PROGRESS_WORKER: case Constant.Status.Job.COMPLETED_MANAGER: case Constant.Status.Job.CANCELREQUESTED: case Constant.Status.Job.RETRY: response.Success = false; response.Exception = new SystemException(Constant.ErrorMessages.NotSupportedJobDeletion); break; case Constant.Status.Job.CANCELLED: case Constant.Status.Job.COMPLETED: case Constant.Status.Job.COMPLETED_WITH_ERRORS: case Constant.Status.Job.ERROR: case Constant.Status.Job.NEW: Logger.LogDebug($"{Constant.Names.ApplicationName} - Delete Export Job button clicked."); if (jobArtifactIDs.Count > 0) { Logger.LogDebug($"{Constant.Names.ApplicationName} - Delete Export Job button click, {jobArtifactIDs.Count} Export Job Errors found."); var jobErrorArtifactIDs = await ArtifactQueries.QueryJobErrors(SvcManager, IdentityCurrentUser, WorkspaceArtifactId, jobArtifactIDs[0], Constant.Guids.ObjectType.ExportUtilityJobErrors, Constant.Guids.Field.ExportUtilityJobErrors.ExportUtilityJob); var errorArtifactIDs = jobErrorArtifactIDs as int[] ?? jobErrorArtifactIDs.ToArray(); if (jobErrorArtifactIDs != null & errorArtifactIDs.Any()) { var artifactTypeId = SqlQueryHelper.RetrieveArtifactTypeIdByGuidAsync(DbContext, Constant.Guids.ObjectType.ExportUtilityJobErrors).Result; await ArtifactQueries.DeleteJobErrors(SvcManager, IdentityCurrentUser, WorkspaceArtifactId, jobErrorArtifactIDs.ToList(), artifactTypeId); Logger.LogDebug($"{Constant.Names.ApplicationName} - Delete Export Job button click, {jobArtifactIDs.Count} Export Job Errors deleted."); } } else { Logger.LogDebug($"{Constant.Names.ApplicationName} - Delete Export Job button click, no Export Job Errors found."); } Logger.LogDebug($"{Constant.Names.ApplicationName} - Delete Export Job button click action completed."); break; } } } } catch (Exception ex) { response.Success = false; response.Exception = new SystemException($@"{Constant.ErrorMessages.DefaultErrorPrepend}, Error Message: {ex}"); } return(response); }
public RelatedLetterDeleter(IOrganizationService orgService, SqlConnection sqlConnection, IEnumerable <Guid> regardingObjectIds) : base(orgService, sqlConnection) { _entityLogicalName = "letter"; _retrieveSqlQuery = SqlQueryHelper.GetQueryOfActivityGuidsByRegardingObjectIds("dbo.Letter", regardingObjectIds); }
public override Response Execute() { var response = new Response() { Message = string.Empty, Success = true }; var layoutArtifactIdByGuid = GetArtifactIdByGuid(Constant.Guids.Layout.TargetText); var layoutArtifactId = ActiveLayout.ArtifactID; var occurenceFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.Occurrence)].Value.Value; var occurence = occurenceFieldValue == null ? (int?)null : Convert.ToInt32(occurenceFieldValue); var charactersFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.NumberofCharacters)].Value.Value; var characters = charactersFieldValue == null ? (int?)null : Convert.ToInt32(charactersFieldValue); var maxExtractionsFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.MaximumExtractions)].Value.Value; var minExtractionsFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.MinimumExtractions)].Value.Value; var markerTypeFieldValue = (kCura.EventHandler.ChoiceCollection)ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.MarkerType)].Value.Value; var caseSensitiveFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.CaseSensitive)].Value.Value; var directionFieldValue = (kCura.EventHandler.ChoiceCollection)ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.Direction)].Value.Value; var applyStopMarkerFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.ApplyStopMarker)].Value.Value; var regExStartMarkerFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.RegularExpressionStartMarker)].Value.Value; var regExStopMarkerFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.RegularExpressionStopMarker)].Value.Value; var plainTextStartMarkerFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.PlainTextStartMarker)].Value.Value; var plainTextStopMarkerFieldValue = ActiveArtifact.Fields[GetArtifactIdByGuid(Constant.Guids.Fields.ExtractorTargetText.PlainTextStopMarker)].Value.Value; int?maxExtractions = (maxExtractionsFieldValue == null) ? (int?)null : Convert.ToInt32(maxExtractionsFieldValue); int?minExtractions = (minExtractionsFieldValue == null) ? (int?)null : Convert.ToInt32(minExtractionsFieldValue); String markerType = null; foreach (kCura.EventHandler.Choice markerChoice in markerTypeFieldValue) { if (markerChoice.IsSelected) { markerType = markerChoice.Name; break; } } bool? caseSensitive = (caseSensitiveFieldValue == null) ? (bool?)null : Convert.ToBoolean(caseSensitiveFieldValue); String direction = null; foreach (kCura.EventHandler.Choice directionChoice in directionFieldValue) { if (directionChoice.IsSelected) { direction = directionChoice.Name; break; } } var applyStopMarker = Convert.ToBoolean(applyStopMarkerFieldValue); var regExStart = (regExStartMarkerFieldValue == null) ? (int?)null : Convert.ToInt32(regExStartMarkerFieldValue); var regExStop = (regExStopMarkerFieldValue == null) ? (int?)null : Convert.ToInt32(regExStopMarkerFieldValue); String plainTextStart = (plainTextStartMarkerFieldValue == null) ? null : Convert.ToString(plainTextStartMarkerFieldValue); String plainTextStop = (plainTextStopMarkerFieldValue == null) ? null : Convert.ToString(plainTextStopMarkerFieldValue); var validator = new Validator(); //check if this is the Text Extractor Target Text layout if (!validator.VerifyIfNotLayout(layoutArtifactIdByGuid, layoutArtifactId)) { var sqlQueryHelper = new SqlQueryHelper(); var eddsDbContext = Helper.GetDBContext(-1); var workspaceArtifactId = Helper.GetActiveCaseID(); var dbContext = Helper.GetDBContext(workspaceArtifactId); var activeArtifactId = ActiveArtifact.ArtifactID; var textExtractorTargetTextJob = new TextExtractorTargetTextJob(eddsDbContext, dbContext, sqlQueryHelper, activeArtifactId, characters, occurence, maxExtractions, minExtractions, markerType, caseSensitive, direction, applyStopMarker, regExStart, regExStop, plainTextStart, plainTextStop); ClearUnnecessaryFields(textExtractorTargetTextJob); response = textExtractorTargetTextJob.ExecutePreSave(); } return(response); }
private async Task UpdateJobStatusInManagerQueueAsync(IDBContext dbContextEdds, Int32 workspaceArtifactId, Int32 currentArtifactId, Int32 status) { await SqlQueryHelper.UpdateStatusInExportManagerQueueByWorkspaceJobIdAsync(dbContextEdds, workspaceArtifactId, currentArtifactId, status); }
public async Task <Boolean> DoesRecordExistAsync() { var dataRow = await SqlQueryHelper.RetrieveSingleInExportManagerQueueByArtifactIdAsync(DbContextEdds, CurrentArtifactId, WorkspaceArtifactId); return(dataRow != null); }
public async Task ClearRecordsFromQueueTables(ExportManagerQueueRecord exportManagerQueueRecord) { await SqlQueryHelper.DeleteRecordFromQueueAsync(AgentHelper.GetDBContext(-1), Constant.Sql.ColumnsNames.ExportWorkerQueue.WorkspaceArtifactId, exportManagerQueueRecord.WorkspaceArtifactId, Constant.Sql.ColumnsNames.ExportWorkerQueue.ExportJobArtifactId, exportManagerQueueRecord.ExportJobArtifactId, Constant.Tables.ExportWorkerQueue); await SqlQueryHelper.DeleteRecordFromQueueAsync(AgentHelper.GetDBContext(-1), Constant.Sql.ColumnsNames.ExportManagerQueue.WorkspaceArtifactId, exportManagerQueueRecord.WorkspaceArtifactId, Constant.Sql.ColumnsNames.ExportManagerQueue.ExportJobArtifactId, exportManagerQueueRecord.ExportJobArtifactId, Constant.Tables.ExportManagerQueue); }
public async Task ProcessNewRecordAsync(String delimitedListOfResourceGroupIds) { if (delimitedListOfResourceGroupIds != String.Empty) { DataTable dataTable = await RetrieveNextRecordInExportManagerQueueTableAsync(delimitedListOfResourceGroupIds); if (TableIsNotEmpty(dataTable)) { ExportManagerQueueRecord exportManagerQueueRecord = new ExportManagerQueueRecord(dataTable.Rows[0]); SetJobProperties(exportManagerQueueRecord); String context = $"[Table = {QueueTable}, ID = {TableRowId}, Workspace Artifact ID = {WorkspaceArtifactId}, Export Job Artifact ID = {ExportJobArtifactId}]"; RaiseAndLogDebugMessage($"Processing record(s). {context}"); try { Int32 numberOfExpectedExports; //update export job status to in progress await UpdateExportJobStatus(Constant.Status.Job.IN_PROGRESS_MANAGER, exportManagerQueueRecord); //update export manager queue record with export results table name String exportResultsTableName = $"{Constant.Names.ExportWorkerResultsTablePrefix}{Guid.NewGuid()}"; await SqlQueryHelper.UpdateResultsTableNameInExportManagerQueueAsync(AgentHelper.GetDBContext(-1), exportManagerQueueRecord.TableRowId, exportResultsTableName); // Add specific logic for other types of objects here #DifferentObject Constant.Enums.SupportedObjects migrationObjectType = (Constant.Enums.SupportedObjects)Enum.Parse(typeof(Constant.Enums.SupportedObjects), exportManagerQueueRecord.ObjectType); switch (migrationObjectType) { case Constant.Enums.SupportedObjects.User: numberOfExpectedExports = await ProcessUsers(exportManagerQueueRecord, exportResultsTableName); break; default: throw new AdminMigrationUtilityException(Constant.ErrorMessages.InvalidAdminObjectTypeError); } //Update status and statistics long as cancellation is not requested if (!await CancellationRequestedAsync(exportManagerQueueRecord)) { await SqlQueryHelper.UpdateStatusInExportManagerQueueByWorkspaceJobIdAsync( eddsDbContext : AgentHelper.GetDBContext(-1), workspaceArtifactId : exportManagerQueueRecord.WorkspaceArtifactId, exportJobArtifactId : exportManagerQueueRecord.ExportJobArtifactId, queueStatus : Constant.Status.Queue.WAITING_FOR_WORKERS_TO_FINISH); await UpdateExportJobStatus(Constant.Status.Job.COMPLETED_MANAGER, exportManagerQueueRecord); await UpdateExportJobExpectedNumberOfExports(numberOfExpectedExports, exportManagerQueueRecord); } } catch (Exception ex) { //update export job status to error await UpdateExportJobStatus(Constant.Status.Job.ERROR, exportManagerQueueRecord); String details = ExceptionMessageFormatter.GetExceptionMessageIncludingAllInnerExceptions(ex); RaiseAndLogDebugMessage(details); //remove record from export manager queue table await ClearRecordsFromQueueTables(exportManagerQueueRecord); } } } }