public IActionResult GetByFilter([FromQuery] string filter)
        {
            string entityAsJson = "";

            try
            {
                _logger.LogInformation("CPAPI: Get");

                // Deserialize the ontology filter
                OntologyFilter oFilter = new OntologyFilter();
                if (filter != null && filter.Length > 0)
                {
                    _logger.LogDebug("Deserializing ontology filter of length: " + filter.Length);
                    oFilter = JsonConvert.DeserializeObject <OntologyFilter>(filter);
                }

                List <POCO.RecordAuthorityFilter> filters = new List <POCO.RecordAuthorityFilter>();
                foreach (string of in oFilter.ontology)
                {
                    string cleanFilterPKey          = Utils.CleanTableKey(of);
                    POCO.RecordAuthorityFilter filt = new POCO.RecordAuthorityFilter(cleanFilterPKey, "", "");
                    //DataFactory.Filter pkFilter = new DataFactory.Filter("PartitionKey", cleanFilterPKey, "eq");
                    filters.Add(filt);
                }

                DataFactory.DataConfig datacfg = Utils.GetDataConfig();
                List <POCO.RecordAuthorityFunctionActivityEntry> recordAuthorityEntities = DataFactory.RecordAuthority.GetEntries(datacfg, filters);

                recordAuthorityEntities.Sort((x, y) => String.Compare(x.Function, y.Function));

                entityAsJson = JsonConvert.SerializeObject(recordAuthorityEntities, Formatting.Indented);
            }
            catch (Exception ex)
            {
                string exceptionMsg = "Record Authority GET By Filter exception: " + ex.Message;
                //log.Info("Exception occurred extracting text from uploaded file \r\nError: " + ex.Message);
                if (ex.InnerException != null)
                {
                    exceptionMsg = exceptionMsg + "[" + ex.InnerException.Message + "]";
                }

                _logger.LogError(exceptionMsg);
                return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError));
            }

            ObjectResult result = new ObjectResult(entityAsJson);

            return(result);
        }
        public IActionResult GetByFilter([FromQuery] string filter)
        {
            string entityAsJson = "";

            try
            {
                _logger.LogInformation("CPAPI: Get");

                // Deserialize the ontology filter
                OntologyFilter oFilter = new OntologyFilter();
                if (filter != null && filter.Length > 0)
                {
                    _logger.LogDebug("Deserializing ontology filter of length: " + filter.Length);
                    oFilter = JsonConvert.DeserializeObject <OntologyFilter>(filter);
                }

                List <DataFactory.Filter> filters = new List <DataFactory.Filter>();
                foreach (string of in oFilter.ontology)
                {
                    string             cleanFilterPKey = Utils.CleanTableKey(of);
                    DataFactory.Filter pkfilt          = new DataFactory.Filter("PartitionKey", cleanFilterPKey, "eq");
                    filters.Add(pkfilt);
                }

                //CloudTable table = Utils.GetCloudTable("stlpontology", _logger);

                //// Create a default query
                //TableQuery<OntologyEntity> query = new TableQuery<OntologyEntity>();
                //if (oFilter.ontology.Count>0)
                //{
                //    string combinedFilter = "";
                //    foreach(string of in oFilter.ontology)
                //    {
                //        string cleanFilterPKey = Utils.CleanTableKey(of);
                //        string pkquery = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, cleanFilterPKey);

                //        if (combinedFilter!="")
                //        {
                //            combinedFilter = TableQuery.CombineFilters(combinedFilter, TableOperators.Or, pkquery);
                //        }
                //        else
                //        {
                //            combinedFilter = pkquery;
                //        }
                //    }
                //    // Create final combined query
                //    query = new TableQuery<OntologyEntity>().Where(combinedFilter);
                //}
                //List<OntologyEntity> ontologyEntities = new List<OntologyEntity>();
                //TableContinuationToken token = null;

                //var runningQuery = new TableQuery<OntologyEntity>()
                //{
                //    FilterString = query.FilterString,
                //    SelectColumns = query.SelectColumns
                //};

                //do
                //{
                //    runningQuery.TakeCount = query.TakeCount - ontologyEntities.Count;

                //    Task<TableQuerySegment<OntologyEntity>> tSeg = table.ExecuteQuerySegmentedAsync<OntologyEntity>(runningQuery, token);
                //    tSeg.Wait();
                //    token = tSeg.Result.ContinuationToken;
                //    ontologyEntities.AddRange(tSeg.Result);

                //} while (token != null && (query.TakeCount == null || ontologyEntities.Count < query.TakeCount.Value));    //!ct.IsCancellationRequested &&

                DataFactory.DataConfig datacfg          = Utils.GetDataConfig();
                List <POCO.Ontology>   ontologyEntities = DataFactory.Ontology.GetOntology(datacfg, filters);

                ontologyEntities.Sort((x, y) => String.Compare(x.Label, y.Label));

                entityAsJson = JsonConvert.SerializeObject(ontologyEntities, Formatting.Indented);
            }
            catch (Exception ex)
            {
                string exceptionMsg = "Ontology GET exception: " + ex.Message;
                //log.Info("Exception occurred extracting text from uploaded file \r\nError: " + ex.Message);
                if (ex.InnerException != null)
                {
                    exceptionMsg = exceptionMsg + "[" + ex.InnerException.Message + "]";
                }

                _logger.LogError(exceptionMsg);
                return(StatusCode((int)System.Net.HttpStatusCode.InternalServerError));
            }

            ObjectResult result = new ObjectResult(entityAsJson);

            return(result);
        }