Пример #1
0
        public async Task <IActionResult> GetBoundariesFromLinework([FromForm] DxfFileRequest requestDto)
        {
            Log.LogDebug($"{nameof(GetBoundariesFromLinework)}: {requestDto}");

            var result = await RequestExecutorContainerFactory
                         .Build <LineworkFileExecutor>(LoggerFactory, configStore : ConfigStore, trexCompactionDataProxy : TRexCompactionDataProxy,
                                                       userId : GetUserId(), fileImportProxy : FileImportProxy)
                         .ProcessAsync(requestDto) as DxfLineworkFileResult;

            return(result.Code == 0
        ? StatusCode((int)HttpStatusCode.OK, result.ConvertToGeoJson(requestDto.ConvertLineStringCoordsToPolygon, requestDto.MaxVerticesPerBoundary))
        : StatusCode((int)HttpStatusCode.BadRequest, result));
        }
Пример #2
0
        public async void Execute_ClosedOnly()
        {
            var mockCoordFile = new Mock <IFormFile>();

            mockCoordFile.Setup(x => x.Length).Returns(4);
            mockCoordFile.Setup(x => x.CopyTo(It.IsAny <MemoryStream>())).Callback((Stream ms) =>
            {
                ms.Write(new byte[] { 1, 2, 3, 4 });
            });

            var mockDXFFile = new Mock <IFormFile>();

            mockDXFFile.Setup(x => x.Length).Returns(CreateTestPolyline().Length);
            mockDXFFile.Setup(x => x.CopyTo(It.IsAny <MemoryStream>())).Callback((Stream ms) =>
            {
                CreateTestPolyline().CopyTo((MemoryStream)ms);
            });

            var requestDto = new DxfFileRequest
            {
                ConvertLineStringCoordsToPolygon = false,
                DxfUnits = (int)DxfUnitsType.Meters,
                MaxBoundariesToProcess = 10,
                MaxVerticesPerBoundary = 1000,
                CoordinateSystemFile   = mockCoordFile.Object,
                DxfFile = mockDXFFile.Object
            };

            var result = await RequestExecutorContainerFactory
                         .Build <LineworkFileExecutor>(logger, configStore : configStore,
                                                       trexCompactionDataProxy : trexCompactionDataProxy)
                         .ProcessAsync(requestDto);

            result.Code.Should().Be(ContractExecutionStatesEnum.ExecutedSuccessfully);
            result.Message.Should().Be("Success");

            var testResult = TestResultBoundary().Select(b => new WGS84LineworkBoundary {
                Boundary = b.Fence.ToArray(), BoundaryName = b.Name, BoundaryType = b.Type
            }).ToArray();

            ((DxfLineworkFileResult)result).LineworkBoundaries.Should().BeEquivalentTo(testResult);
        }