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