Beispiel #1
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            var request = item as CellPassesTRexRequest;

            if (request == null)
            {
                ThrowRequestTypeCastException <CellPassesTRexRequest>();
            }

            // ReSharper disable once PossibleNullReferenceException
            var siteModel = GetSiteModel(request.ProjectUid);
            var filter    = ConvertFilter(request.Filter, siteModel);
            var coords    = request.CoordsAreGrid
        ? AutoMapperUtility.Automapper.Map <XYZ>(request.GridPoint)
        : AutoMapperUtility.Automapper.Map <XYZ>(request.LLPoint);

            var cellPassesApplicationService = new CellPassesRequest_ApplicationService();
            var response = await cellPassesApplicationService.ExecuteAsync(new CellPassesRequestArgument_ApplicationService
            {
                ProjectID     = siteModel.ID,
                Filters       = new FilterSet(filter),
                CoordsAreGrid = request.CoordsAreGrid,
                Point         = coords,
                LiftParams    = ConvertLift(request.LiftSettings, request.Filter?.LayerType),
                //NOTE: Currently cell passes is raw data so does not use overriding targets
                Overrides = AutoMapperUtility.Automapper.Map <OverrideParameters>(request.Overrides)
            });

            if (response.ReturnCode != CellPassesReturnCode.DataFound)
            {
                return(new CellPassesV2Result((int)response.ReturnCode));
            }

            var cellPasses = new List <CellPassesV2Result.FilteredPassData>();

            foreach (var cellPass in response.CellPasses)
            {
                var machineId = siteModel.Machines[cellPass.InternalSiteModelMachineIndex].ID;
                cellPasses.Add(ConvertCellPass(cellPass, machineId));
            }

            var layer = new CellPassesV2Result.ProfileLayer
            {
                PassData = cellPasses.ToArray()
            };

            // Convert the response
            return(new CellPassesV2Result((int)response.ReturnCode)
            {
                Layers = new[]
                {
                    layer
                }
            });
        }
Beispiel #2
0
        private (CellPassesRequest_ApplicationService, FilterSet, Guid) BuildTestDataAndSetAreaFilter()
        {
            AddApplicationGridRouting();
            AddClusterComputeGridRouting();

            var baseTime  = DateTime.UtcNow;
            var siteModel = BuildTestSiteModel(baseTime, count: expectedCount);

            var request = new CellPassesRequest_ApplicationService();

            var filter = new FilterSet(new CombinedFilter());

            var fence = new Fence();

            fence.Points.Add(new FencePoint(-115.01912, 36.207522, 0.0));
            fence.Points.Add(new FencePoint(-115.018673, 36.207501, 0.0));
            fence.Points.Add(new FencePoint(-115.018887, 36.207213, 0.0));
            fence.Points.Add(new FencePoint(-115.01932, 36.207325, 0.0));

            filter.Filters[0].SpatialFilter.Fence     = fence;
            filter.Filters[0].SpatialFilter.IsSpatial = true;

            // Mocked ConvertCoordinates expected result.
            var neeCoords = new XYZ[fence.Points.Count];

            neeCoords[0].X = 0;
            neeCoords[0].Y = 0;
            neeCoords[1].X = 0;
            neeCoords[1].Y = 1;
            neeCoords[2].X = 1;
            neeCoords[2].Y = 1;
            neeCoords[3].X = 1;
            neeCoords[3].Y = 0;

            var expectedCoordinateConversionResult = neeCoords.ToCoreX_XYZ();

            var convertCoordinatesMock = new Mock <ICoreXWrapper>();

            convertCoordinatesMock.Setup(x => x.LLHToNEE(It.IsAny <string>(), It.IsAny <CoreXModels.XYZ[]>(), It.IsAny <CoreX.Types.InputAs>()))
            .Returns(expectedCoordinateConversionResult);

            DIBuilder.Continue().Add(x => x.AddSingleton(convertCoordinatesMock.Object)).Complete();

            return(request, filter, siteModel.ID);
        }
Beispiel #3
0
        public async Task Test_CellPassesRequest_ApplicationService_ExecuteData()
        {
            AddApplicationGridRouting();
            AddClusterComputeGridRouting();

            var baseTime  = DateTime.UtcNow;
            var siteModel = BuildTestSiteModel(baseTime, count: expectedCount);

            var request = new CellPassesRequest_ApplicationService();

            var arg      = new CellPassesRequestArgument_ApplicationService(siteModel.ID, true, new XYZ(0.1, 0.1, 0), new FilterSet(new CombinedFilter()));
            var response = await request.ExecuteAsync(arg);

            response.Should().NotBeNull();
            response.ReturnCode.Should().Be(CellPassesReturnCode.DataFound);
            response.CellPasses.Count.Should().Be(expectedCount);

            for (var idx = 0; idx < expectedCount; idx++)
            {
                var mockModifier         = idx + 1;
                var expectedTime         = baseTime.AddMinutes(mockModifier);
                var expectedHeight       = 1.0f + mockModifier * 0.5f;
                var expectedCcv          = (short)(10 + 10 * mockModifier);
                var expectedMachineSpeed = (ushort)(650 + mockModifier);
                var expectedMdp          = (short)(20 + 20 * mockModifier);

                var cellPass = response.CellPasses[idx];
                cellPass.LastPassValidCCV.Should().Be(expectedCcv);
                cellPass.LastPassTime.Should().Be(expectedTime);
                cellPass.Height.Should().Be(expectedHeight);
                cellPass.MachineSpeed.Should().Be(expectedMachineSpeed);
                cellPass.LastPassValidMDP.Should().Be(expectedMdp);

                cellPass.GPSAccuracy.Should().Be(GPSAccuracy.Fine);
                cellPass.GPSTolerance.Should().Be(20);
            }
        }