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

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

            var siteModel       = GetSiteModel(request.ProjectUid);
            var baseFilter      = ConvertFilter(request.Filter, siteModel);
            var topFilter       = ConvertFilter(request.TopFilter, siteModel);
            var referenceDesign = new DesignOffset(request.ReferenceDesignUid ?? Guid.Empty, request.ReferenceDesignOffset ?? 0);


            var arg = new ProfileRequestArgument_ApplicationService
            {
                ProjectID                = request.ProjectUid,
                ProfileTypeRequired      = GridDataType.Height,
                ProfileStyle             = ProfileStyle.SummaryVolume,
                PositionsAreGrid         = request.PositionsAreGrid,
                Filters                  = new FilterSet(baseFilter, topFilter),
                ReferenceDesign          = referenceDesign,
                StartPoint               = new WGS84Point(lon: request.StartX, lat: request.StartY, request.PositionsAreGrid ? Consts.NullDouble : 0),//coord conversion requires elevation set
                EndPoint                 = new WGS84Point(lon: request.EndX, lat: request.EndY, request.PositionsAreGrid ? Consts.NullDouble : 0),
                ReturnAllPassesAndLayers = false,
                VolumeType               = ConvertVolumesHelper.ConvertVolumesType(request.VolumeCalcType),
                Overrides                = AutoMapperUtility.Automapper.Map <OverrideParameters>(request.Overrides),
                LiftParams               = ConvertLift(request.LiftSettings, request.Filter?.LayerType)
            };

            // Compute a profile from the bottom left of the screen extents to the top right
            var svRequest = new ProfileRequest_ApplicationService_SummaryVolumeProfileCell();

            var response = await svRequest.ExecuteAsync(arg);

            if (response != null)
            {
                return(ConvertResult(response));
            }

            throw new ServiceException(HttpStatusCode.BadRequest, new ContractExecutionResult(ContractExecutionStatesEnum.FailedToGetResults,
                                                                                              "Failed to get requested Summary Volumes Profile data"));
        }
Beispiel #2
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            var request = item as SummaryVolumesDataRequest;

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

            // ReSharper disable once PossibleNullReferenceException
            var siteModel = GetSiteModel(request.ProjectUid);

            var baseFilter = ConvertFilter(request.BaseFilter, siteModel);
            var topFilter  = ConvertFilter(request.TopFilter, siteModel);
            var additionalSpatialFilter = ConvertFilter(request.AdditionalSpatialFilter, siteModel);

            var summaryVolumesRequest = new SimpleVolumesRequest_ApplicationService();

            var simpleVolumesResponse = await summaryVolumesRequest.ExecuteAsync(new SimpleVolumesRequestArgument
            {
                ProjectID  = siteModel.ID,
                BaseFilter = baseFilter,
                TopFilter  = topFilter,
                AdditionalSpatialFilter = additionalSpatialFilter,
                BaseDesign    = new DesignOffset(request.BaseDesignUid ?? Guid.Empty, request.BaseDesignOffset ?? 0),
                TopDesign     = new DesignOffset(request.TopDesignUid ?? Guid.Empty, request.TopDesignOffset ?? 0),
                VolumeType    = ConvertVolumesHelper.ConvertVolumesType(request.VolumeCalcType),
                CutTolerance  = request.CutTolerance ?? VolumesConsts.DEFAULT_CELL_VOLUME_CUT_TOLERANCE,
                FillTolerance = request.CutTolerance ?? VolumesConsts.DEFAULT_CELL_VOLUME_FILL_TOLERANCE
            });

            if (simpleVolumesResponse != null)
            {
                log.LogInformation($"Volume response is {JsonConvert.SerializeObject(simpleVolumesResponse)}");
                return(ConvertResult(simpleVolumesResponse));
            }

            log.LogWarning("Volume response is null");
            throw new ServiceException(HttpStatusCode.BadRequest, new ContractExecutionResult(ContractExecutionStatesEnum.FailedToGetResults,
                                                                                              "Failed to get requested Summary Volumes data"));
        }
Beispiel #3
0
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            var request = CastRequestObjectTo <ProgressiveSummaryVolumesDataRequest>(item);// as ProgressiveSummaryVolumesDataRequest;

            // ReSharper disable once PossibleNullReferenceException
            var siteModel = GetSiteModel(request.ProjectUid);

            var filter = ConvertFilter(request.Filter, siteModel);
            var additionalSpatialFilter = ConvertFilter(request.AdditionalSpatialFilter, siteModel);

            var tRexRequest = new ProgressiveVolumesRequest_ApplicationService();

            var response = await tRexRequest.ExecuteAsync(new ProgressiveVolumesRequestArgument
            {
                ProjectID = siteModel.ID,
                Filters   = new FilterSet(filter), // Progressive volumes use a single filter derived from the supplied base filter
                AdditionalSpatialFilter = additionalSpatialFilter,
                BaseDesign    = new DesignOffset(request.BaseDesignUid ?? Guid.Empty, request.BaseDesignOffset ?? 0),
                TopDesign     = new DesignOffset(request.TopDesignUid ?? Guid.Empty, request.TopDesignOffset ?? 0),
                VolumeType    = ConvertVolumesHelper.ConvertVolumesType(request.VolumeCalcType),
                CutTolerance  = request.CutTolerance ?? VolumesConsts.DEFAULT_CELL_VOLUME_CUT_TOLERANCE,
                FillTolerance = request.CutTolerance ?? VolumesConsts.DEFAULT_CELL_VOLUME_FILL_TOLERANCE,
                StartDate     = request.StartDateUtc,
                EndDate       = request.EndDateUtc,
                Interval      = TimeSpan.FromSeconds(request.IntervalSeconds)
            });

            if (response != null)
            {
                log.LogInformation($"Volume response is {JsonConvert.SerializeObject(response)}");
                return(ConvertResult(response));
            }

            log.LogWarning("Volume response is null");
            throw new ServiceException(HttpStatusCode.BadRequest, new ContractExecutionResult(ContractExecutionStatesEnum.FailedToGetResults,
                                                                                              "Failed to get requested Summary Volumes data"));
        }