private async Task <DxfLineworkFileResult> ProcessForTRex(LineworkRequest request) { try { log.LogDebug($"{nameof(LineworkFileExecutor)}::{nameof(ProcessForTRex)}()"); var req = new DXFBoundariesRequest(request.CoordinateSystemFileData, ImportedFileType.SiteBoundary, request.DxfFileData, (DxfUnitsType)request.LineworkUnits, (uint)request.NumberOfBoundariesToProcess, request.ConvertLineStringCoordsToPolygon); var returnResult = await trexCompactionDataProxy.SendDataPostRequest <DXFBoundaryResult, DXFBoundariesRequest>(req, "files/dxf/boundaries"); log.LogInformation($"RequestBoundariesFromLineWork: result: {JsonConvert.SerializeObject(returnResult)}"); if (returnResult.Code != ContractExecutionStatesEnum.ExecutedSuccessfully) { throw CreateServiceException <LineworkFileExecutor>(returnResult.Code); } return(new DxfLineworkFileResult(returnResult.Boundaries, returnResult.Code, returnResult.Message)); } catch (ServiceException ex) { var errorMessage = ex.GetResult.Message; log.LogError($"RequestBoundariesFromLinework: exception {errorMessage}"); return(new DxfLineworkFileResult(ContractExecutionStatesEnum.InternalProcessingError, errorMessage, null)); } finally { ContractExecutionStates.ClearDynamic(); } }
public void Should_return_correct_boundary_for_request(int maxBoundariesToProcess, int expectedResult) { var request = new LineworkRequest(new DxfFileRequest { MaxBoundariesToProcess = maxBoundariesToProcess }, null); Assert.AreEqual(expectedResult, request.NumberOfBoundariesToProcess); }
protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item) { if (!(item is DxfFileRequest dxfRequest)) { throw new ServiceException(HttpStatusCode.InternalServerError, new ContractExecutionResult(ContractExecutionStatesEnum.InternalProcessingError, "Request is not a DxfFileRequest")); } var request = new LineworkRequest(dxfRequest).Validate(); return(await ProcessForTRex(request)); }