public async Task <bool> CheckIfDocumentIsPublic(int entityId, int categoryId, int documentId) { var entities = await GetEntities(); var entity = entities.SingleOrDefault(i => i.Id == entityId); var category = entity.Categories.SingleOrDefault(i => i.Id == categoryId); var adhocQueryRequest = new QueryRequestObject(); var isPublicDocument = false; if (category != null) { if (!string.IsNullOrEmpty(category.NotPublicFieldName)) { adhocQueryRequest.Indexes.Add(new Infrastructure.Models.Index(category.NotPublicFieldName, "FALSE")); var adhocQueryJson = JsonConvert.SerializeObject(adhocQueryRequest.Indexes); var query = new UriBuilder($"{_config.SelectIndexLookupPath}/{category.Id}"); _httpClient.DefaultRequestHeaders.Clear(); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _config.Credentials); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.emc.ax+json")); using (var request = await _httpClient.PostAsync(query.Uri, new StringContent(adhocQueryJson, Encoding.UTF8, "application/vnd.emc.ax+json"))) { var result = JsonConvert.DeserializeObject <QueryAppsResult>(await request.Content.ReadAsStringAsync()); var requestedRecord = result.Entries.SingleOrDefault(i => i.Id == documentId); if (requestedRecord != null) { isPublicDocument = true; } } } else { // no field signifying non-public document? then all documents are public isPublicDocument = true; } } return(isPublicDocument); }
public async Task <QueryAppsResult> FilterQueryAppsResultByParameters(Category category) { var filteredAttributes = category.Attributes.Where(i => i.SelectedFilterType != null); var adhocQueryObject = new QueryRequestObject(); foreach (var filteredAttribute in filteredAttributes) { var query = ""; if (filteredAttribute.Type.Name == DepartmentEntities.TextTypeName) { var stringFilter1 = filteredAttribute.FilterValue1; var stringFilter2 = filteredAttribute.FilterValue2; switch (filteredAttribute.SelectedFilterType.Name) { case DepartmentEntities.TextEqualsOperator: query = $"{stringFilter1}"; break; case DepartmentEntities.TextGreaterThanOperator: query = $"Expression: > {stringFilter1}"; break; case DepartmentEntities.TextLessThanOperator: query = $"Expression: < {stringFilter1}"; break; case DepartmentEntities.TextBetweenOperator: query = $"Expression: ['{stringFilter1}','{stringFilter2}']"; break; } } else if (filteredAttribute.Type.Name == DepartmentEntities.DateTypeName) { var dateFilter1 = (DateTime.TryParse(filteredAttribute.FilterValue1, out var date1Value) ? date1Value : DateTime.MinValue).ToShortDateString(); var dateFilter2 = (DateTime.TryParse(filteredAttribute.FilterValue2, out var date2Value) ? date2Value : DateTime.MinValue).ToShortDateString(); switch (filteredAttribute.SelectedFilterType.Name) { case DepartmentEntities.DateEqualsOperator: query = $"{dateFilter1}"; break; case DepartmentEntities.DateGreaterThanOperator: query = $"Expression: > {dateFilter1}"; break; case DepartmentEntities.DateLessThanOperator: query = $"Expression: < {dateFilter1}"; break; case DepartmentEntities.DateBetweenOperator: query = $"Expression: ['{dateFilter1}','{dateFilter2}']"; break; } } else if (filteredAttribute.Type.Name == DepartmentEntities.NumericTypeName) { var numericFilter1 = int.TryParse(filteredAttribute.FilterValue1, out var int1Value) ? int1Value : -1; var numericFilter2 = int.TryParse(filteredAttribute.FilterValue2, out var int2Value) ? int2Value : -1; switch (filteredAttribute.SelectedFilterType.Name) { case DepartmentEntities.NumericEqualsOperator: query = $"{numericFilter1}"; break; case DepartmentEntities.NumericGreaterThanOperator: query = $"Expression: > {numericFilter1}"; break; case DepartmentEntities.NumericLessThanOperator: query = $"Expression: < {numericFilter1}"; break; case DepartmentEntities.NumericBetweenOperator: query = $"Expression: ['{numericFilter1}','{numericFilter2}']"; break; } } else if (filteredAttribute.Type.Name == DepartmentEntities.FullTextSearchName) { query = filteredAttribute.FilterValue1; } if (!string.IsNullOrEmpty(query)) { if (filteredAttribute.Type.Name == DepartmentEntities.FullTextSearchName) { adhocQueryObject.FullText = new FullText(query); } else { adhocQueryObject.Indexes.Add(new Infrastructure.Models.Index(filteredAttribute.Name, query)); } } } var xTenderDocumentList = await RequestDocuments(category.EntityId.GetValueOrDefault(), category.Id.GetValueOrDefault(), adhocQueryObject, true); return(xTenderDocumentList); }
private async Task <QueryAppsResult> RequestDocuments(int entityId, int categoryId, QueryRequestObject queryRequest = null, bool isAdHocQueryRequest = false) { var entities = await GetEntities(); var entity = entities.SingleOrDefault(i => i.Id == entityId); var category = entity.Categories.SingleOrDefault(i => i.Id == categoryId); var requestPath = isAdHocQueryRequest ? _config.AdHocQueryResultsPath : _config.SelectIndexLookupPath; var query = new UriBuilder($"{requestPath}/{category.Id}"); _httpClient.DefaultRequestHeaders.Clear(); _httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _config.Credentials); _httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/vnd.emc.ax+json")); var queryJson = JsonConvert.SerializeObject(new string[0]); if (isAdHocQueryRequest) { queryJson = JsonConvert.SerializeObject(queryRequest); } using (var request = await _httpClient.PostAsync(query.Uri, new StringContent(queryJson, Encoding.UTF8, "application/vnd.emc.ax+json"))) { var result = JsonConvert.DeserializeObject <QueryAppsResult>(await request.Content.ReadAsStringAsync()); var filteredResult = result.Entries != null && result.Entries.Any() ? ExcludeNonPublicDocuments(result, category) : result; return(filteredResult); } }