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 } }); }
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); }
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); } }