Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }