public IActionResult Post([FromBody] DocumentFilterSettings filterSettings = null, [FromRoute] string scrollId = null) { if (filterSettings == null && scrollId == null) { return(HttpErrorResult(StatusCodes.Status400BadRequest, DocumentResources.FilterSettingsOrScrollIdParameterMustHasValue)); } try { if (!string.IsNullOrWhiteSpace(scrollId)) { return(new OkObjectResult(documentService.GetScrolled(dataSetName, scrollId))); } if (!string.IsNullOrEmpty(filterSettings.Order?.OrderByField)) { var orderByFieldResult = documentService.ValidateOrderByField(dataSetName, filterSettings.Order.OrderByField); if (orderByFieldResult.IsFailure) { return(HttpErrorResult(StatusCodes.Status400BadRequest, orderByFieldResult.Error)); } } if (filterSettings.FieldList != null) { var validateResult = documentService.ValidateFieldFilterFields(dataSetName, filterSettings.FieldList); if (validateResult.IsFailure) { return(HttpErrorResult(StatusCodes.Status400BadRequest, validateResult.Error)); } } var paginatedList = documentService.Filter( dataSetName, filterSettings?.Filter?.Query, filterSettings?.Filter?.TagIdList, filterSettings.Pagination.Limit, filterSettings?.Order?.OrderByField, filterSettings?.Order?.OrderDirection == OrderDirectionEnum.Desc, filterSettings?.FieldList); return(new OkObjectResult(paginatedList)); } catch (ElasticSearchException ex) when(ex.ServerError.Error.Type == "search_phase_execution_exception" && ex.ServerError.Error.RootCause.Any(e => e.Type == "number_format_exception")) { var errors = ex.ServerError.Error.RootCause .Where(c => c.Type == "number_format_exception") .Select(c => c.Reason.Replace("For input string: ", "")) .Select(input => string.Format(DocumentResources.InvalidNumericFilterValue, input)); return(HttpErrorResult(StatusCodes.Status400BadRequest, errors)); } }
public async Task <ClientResponseWithObject <PaginatedList <object> > > GetFilteredDocumentsAsync(DocumentFilterSettings filterSettings, string scrollId) { var client = new ApiClient(_configuration, FilterEndpoint); if (!string.IsNullOrEmpty(scrollId)) { return(await client.SendAsync <PaginatedList <object> >(System.Net.Http.HttpMethod.Post, null, scrollId, null, Headers, false)); } return(await client.SendAsync <PaginatedList <object> >(System.Net.Http.HttpMethod.Post, filterSettings, null, null, Headers, true)); }
public Task <ClientResponseWithObject <PaginatedList <object> > > GetFilteredDocumentsAsync(DocumentFilterSettings filterSettings, string scrollId) { throw new NotImplementedException(); }