public void Teardown()
 {
     //delete temp export file
     _exportFileCreator.DeleteExportFileAsync().Wait();
     _exportFileCreator = null;
 }
Esempio n. 2
0
        private async Task VerifyIfExportWorkerQueueContainsRecordsForJobAsync(int workspaceArtifactId, int exportJobArtifactId)
        {
            _errorContext = $"An error occurred while creating the export file. [WorkspaceArtifactId = {WorkspaceArtifactId}, ExportJobArtifactId = {exportJobArtifactId}]";

            var exportWorkerQueueRecordCount = await QueryHelper.GetExportResultsRecordCountAsync(AgentHelper.GetDBContext(-1), workspaceArtifactId, exportJobArtifactId, AgentId);

            if (exportWorkerQueueRecordCount > 0)
            {
                try
                {
                    //Create export.csv in a Temp folder
                    var exportFullFilePath = await _exportFileCreator.CreateExportFileAsync(_markupUtilityExportJob.Name);

                    //Write Records to Export File
                    await WriteResultsToExportFileAsync();

                    //Create Markup Utility File record name
                    var redactionFileName = _exportFileCreator.ExportFileName;

                    //Create new RDO File record
                    var redactionFileRdoArtifactId = await _artifactQueries.CreateMarkupUtilityFileRdoRecordAsync(_serviceMgr, ExecutionIdentity.CurrentUser, workspaceArtifactId, redactionFileName);

                    //Attach export csv to File RDO
                    var fileArtifactId = await QueryHelper.GetArtifactIdByGuidAsync(AgentHelper.GetDBContext(workspaceArtifactId), Constant.Guids.Field.MarkupUtilityFile.File);

                    await _artifactQueries.AttachFileToMarkupUtilityFileRecord(_serviceMgr, ExecutionIdentity.CurrentUser, workspaceArtifactId, redactionFileRdoArtifactId, exportFullFilePath, fileArtifactId);

                    //Attach RDO File record to Export Job
                    await _artifactQueries.AttachRedactionFileToExportJob(_serviceMgr, ExecutionIdentity.CurrentUser, workspaceArtifactId, _markupUtilityExportJob.ArtifactId, redactionFileRdoArtifactId);

                    //Update Exported Redaction Count
                    await _artifactQueries.UpdateRdoJobTextFieldAsync(_serviceMgr, workspaceArtifactId, ExecutionIdentity.CurrentUser, Constant.Guids.ObjectType.MarkupUtilityExportJob, _markupUtilityExportJob.ArtifactId, Constant.Guids.Field.MarkupUtilityExportJob.ExportedRedactionCount, exportWorkerQueueRecordCount.ToString());
                }
                catch (Exception ex)
                {
                    RaiseMessage(_errorContext);
                    throw new MarkupUtilityException(_errorContext, ex);
                }
                finally
                {
                    //Delete CSV file
                    await _exportFileCreator.DeleteExportFileAsync();
                }

                //Set the status of the Export Job to Complete
                await UpdateStatusFieldAsync(_markupUtilityExportJob.ArtifactId, Constant.Status.Job.COMPLETED);
            }
            else
            {
                //Query Worker Queue to see if any other records exist for the Export Job, if not, set status to Completed
                //This is for a scenario where no redactions were found for the Export Job
                var exportWorkerQueueCount = await QueryHelper.GetJobWorkerRecordCountAsync(AgentHelper.GetDBContext(-1), workspaceArtifactId, exportJobArtifactId, Constant.Tables.ExportWorkerQueue, "ExportJobArtifactID");

                if (exportWorkerQueueCount == 0)
                {
                    //Set the status of the Export Job to Complete
                    await UpdateStatusFieldAsync(_markupUtilityExportJob.ArtifactId, Constant.Status.Job.COMPLETED);

                    //Update Exported Redation Count to 0
                    await _artifactQueries.UpdateRdoJobTextFieldAsync(_serviceMgr, workspaceArtifactId, ExecutionIdentity.CurrentUser, Constant.Guids.ObjectType.MarkupUtilityExportJob, _markupUtilityExportJob.ArtifactId, Constant.Guids.Field.MarkupUtilityExportJob.ExportedRedactionCount, "0");
                }
            }
        }