Exemple #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
                }
            });
        }
Exemple #2
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);
            }
        }