/// <summary> /// Adds file via Trex /// </summary> protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item) { var importedFile = CastRequestObjectTo <CreateImportedFile>(item, errorCode: 68); await ImportedFileRequestDatabaseHelper.CheckIfParentSurfaceExistsAsync(importedFile.ImportedFileType, importedFile.ParentUid, serviceExceptionHandler, projectRepo); // need to write to Db prior to // notifying TRex as Trex needs the ImportedFileUid var createImportedFileEvent = await ImportedFileRequestDatabaseHelper.CreateImportedFileinDb( Guid.Parse(customerUid), importedFile.ProjectUid, importedFile.ImportedFileType, importedFile.DxfUnitsType, importedFile.FileName, importedFile.SurveyedUtc, JsonConvert.SerializeObject(importedFile.FileDescriptor), importedFile.FileCreatedUtc, importedFile.FileUpdatedUtc, userEmailAddress, log, serviceExceptionHandler, projectRepo, importedFile.ParentUid, importedFile.Offset, importedFile.ImportedFileUid); if (importedFile.IsTRexDesignFileType) { await ImportedFileRequestHelper.NotifyTRexAddFile(importedFile.ProjectUid, importedFile.ImportedFileType, importedFile.FileName, createImportedFileEvent.ImportedFileUID, importedFile.SurveyedUtc, log, customHeaders, serviceExceptionHandler, tRexImportFileProxy, projectRepo); } if (importedFile.ImportedFileType == ImportedFileType.Linework || importedFile.ImportedFileType == ImportedFileType.GeoTiff) { var project = ProjectRequestHelper.GetProject(importedFile.ProjectUid, new Guid(customerUid), new Guid(userId), log, serviceExceptionHandler, cwsProjectClient, customHeaders); var existing = projectRepo.GetImportedFile(createImportedFileEvent.ImportedFileUID.ToString()); await Task.WhenAll(project, existing); var dcFileName = importedFile.ImportedFileType == ImportedFileType.GeoTiff ? null : DataOceanFileUtil.DataOceanFileName(project.Result.CoordinateSystemFileName, false, importedFile.ProjectUid, null); //Generate raster tiles var jobRequest = TileGenerationRequestHelper.CreateRequest( importedFile.ImportedFileType, customerUid, importedFile.ProjectUid.ToString(), existing.Result.ImportedFileUid, importedFile.DataOceanRootFolder, importedFile.DataOceanFileName, dcFileName, importedFile.DxfUnitsType, importedFile.SurveyedUtc); await schedulerProxy.ScheduleVSSJob(jobRequest, customHeaders); } var fileDescriptor = new ImportedFileDescriptorSingleResult( (await ImportedFileRequestDatabaseHelper .GetImportedFileList(importedFile.ProjectUid.ToString(), log, userId, projectRepo)) .ToImmutableList() .First(f => f.ImportedFileUid == createImportedFileEvent.ImportedFileUID.ToString()) ); log.LogInformation( $"CreateImportedFileV4. completed successfully. Response: {JsonConvert.SerializeObject(fileDescriptor)}"); return(fileDescriptor); }
/// <summary> /// Processes the Upsert /// </summary> protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item) { var importedFile = CastRequestObjectTo <UpdateImportedFile>(item, errorCode: 68); var existingImportedFile = await projectRepo.GetImportedFile(importedFile.ImportedFileUid.ToString()); if (existingImportedFile == null) { throw new ServiceException(HttpStatusCode.BadRequest, new ContractExecutionResult(ProjectErrorCodesProvider.GetErrorNumberwithOffset(122), ProjectErrorCodesProvider.FirstNameWithOffset(122))); } if (importedFile.IsTRexDesignFileType) { await ImportedFileRequestHelper.NotifyTRexUpdateFile(importedFile.ProjectUid, importedFile.ImportedFileType, importedFile.FileDescriptor.FileName, importedFile.ImportedFileUid, importedFile.SurveyedUtc, log, customHeaders, serviceExceptionHandler, tRexImportFileProxy); } if (importedFile.ImportedFileType == ImportedFileType.Linework || importedFile.ImportedFileType == ImportedFileType.GeoTiff) { string dcFileName = null; if (importedFile.ImportedFileType == ImportedFileType.Linework) { var project = await ProjectRequestHelper.GetProject(importedFile.ProjectUid, new Guid(customerUid), new Guid(userId), log, serviceExceptionHandler, cwsProjectClient, customHeaders); dcFileName = DataOceanFileUtil.DataOceanFileName(project.CoordinateSystemFileName, false, importedFile.ProjectUid, null); } var jobRequest = TileGenerationRequestHelper.CreateRequest( importedFile.ImportedFileType, customerUid, importedFile.ProjectUid.ToString(), existingImportedFile.ImportedFileUid, importedFile.DataOceanRootFolder, importedFile.DataOceanFileName, dcFileName, importedFile.DxfUnitsTypeId, importedFile.SurveyedUtc); await schedulerProxy.ScheduleVSSJob(jobRequest, customHeaders); } // if all succeeds, update Db and put update to kafka que var updateImportedFileEvent = await ImportedFileRequestDatabaseHelper.UpdateImportedFileInDb(existingImportedFile, existingImportedFile.FileDescriptor, importedFile.SurveyedUtc, existingImportedFile.MinZoomLevel, existingImportedFile.MaxZoomLevel, importedFile.FileCreatedUtc, importedFile.FileUpdatedUtc, userEmailAddress, log, serviceExceptionHandler, projectRepo); var fileDescriptor = new ImportedFileDescriptorSingleResult( (await ImportedFileRequestDatabaseHelper.GetImportedFileList(importedFile.ProjectUid.ToString(), log, userId, projectRepo)) .ToImmutableList() .FirstOrDefault(f => f.ImportedFileUid == importedFile.ImportedFileUid.ToString()) ); log.LogInformation( $"UpdateImportedFileExecutor. entry {(fileDescriptor.ImportedFileDescriptor == null ? "not " : "")}retrieved from DB : {JsonConvert.SerializeObject(fileDescriptor)}"); return(fileDescriptor); }