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 CellPassesV2Result.ProfileLayer[] ConvertCellLayers(TICProfileLayers layers, CellPassesV2Result.FilteredPassData[] allPasses) { CellPassesV2Result.ProfileLayer[] result; if (layers.Count() == 0) { result = new CellPassesV2Result.ProfileLayer[1]; result[0] = ConvertCellLayerItem(new TICProfileLayer(), allPasses); return(result); } result = new CellPassesV2Result.ProfileLayer[layers.Count()]; var count = 0; foreach (TICProfileLayer layer in layers) { var layerPasses = allPasses.Skip(layer.StartCellPassIdx).Take(layer.EndCellPassIdx - layer.StartCellPassIdx + 1).ToArray(); result[count++] = ConvertCellLayerItem(layer, layerPasses); } return(result); }