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);
        }
Beispiel #4
0
 private async Task UpdateJobStatusInManagerQueueAsync(IDBContext dbContextEdds, Int32 workspaceArtifactId, Int32 currentArtifactId, Int32 status)
 {
     await SqlQueryHelper.UpdateStatusInExportManagerQueueByWorkspaceJobIdAsync(dbContextEdds, workspaceArtifactId, currentArtifactId, status);
 }
Beispiel #5
0
        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);
                    }
                }
            }
        }