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