/// <summary> /// Evaluates two filters for use with summary volumes ground to ground comparison. /// </summary> public static bool DoGroundToGroundComparison(Filter.Abstractions.Models.Filter baseFilter, Filter.Abstractions.Models.Filter topFilter) { if (baseFilter == null || topFilter == null) { return(false); } return(baseFilter.DateRangeType != DateRangeType.ProjectExtents && baseFilter.DateRangeType == topFilter.DateRangeType && baseFilter.ElevationType == null && topFilter.ElevationType == null); }
/// <summary> /// Dynamically set the date range according to the<see cref= "DateRangeType" /> property. /// </summary> /// <remarks> /// Custom date range is unaltered. Project extents is always null. Other types are calculated in the project time zone. /// </remarks> private async Task ApplyDateRange(Guid projectUid, Filter.Abstractions.Models.Filter filter) { var projectTimeZone = await ProjectTimeZone(projectUid); filter.ApplyDateRange(projectTimeZone, true); }
/// <summary> /// Convert a simple filter into a Real Filter via the Filter service /// </summary> /// <returns>Filter UID</returns> private async Task <Guid> ConvertSimpleFilter(SimpleFilter simpleFilter) { if (simpleFilter == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, "No Simple Filter found"); } var project = await _projectProxy.GetProjectForCustomer(CustomerUid, simpleFilter.ProjectUid, CustomHeaders); if (project == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, $"Cannot find project {simpleFilter.ProjectUid} for Customer {CustomerUid}"); } var file = await _fileImportProxy.GetFileForProject(simpleFilter.ProjectUid, UserId, simpleFilter.DesignFileUid, CustomHeaders); if (file == null) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.FilterConvertFailure, null, $"Cannot find file {simpleFilter.DesignFileUid} for project {simpleFilter.ProjectUid}"); } var filterModel = new Filter.Abstractions.Models.Filter(simpleFilter.StartDateUtc, simpleFilter.EndDateUtc, simpleFilter.DesignFileUid, file.Name, null, null, null, null, null, null, simpleFilter.LiftNumber); var filterRequest = FilterRequest.Create(filterModel); var result = await _filterServiceProxy.CreateFilter(simpleFilter.ProjectUid, filterRequest, CustomHeaders); if (result.Code != 0) { ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, (int)Now3DExecutionStates.ErrorCodes.DataError, result.Code.ToString(), result.Message); } var guid = Guid.Parse(result.FilterDescriptor.FilterUid); Log.LogInformation($"Converted Simple filter '{JsonConvert.SerializeObject(simpleFilter)}' to a " + $"{nameof(FilterRequest)}: '{JsonConvert.SerializeObject(filterRequest)}'. FilterUID: {guid}"); return(guid); }