private async Task <IQueryable <Metadata> > BuildQueryableAsync(string timeframe, string moderator = null)
        {
            // start with all records
            var queryable = (await _repository.GetAllAsync()).AsQueryable();

            // apply timeframe filter
            MetadataFilters.ApplyTimeframeFilter(ref queryable, timeframe);

            // apply moderator filter, if applicable
            MetadataFilters.ApplyModeratorFilter(ref queryable, moderator);

            return(queryable);
        }
Example #2
0
        protected void TestChangesButton_Click(object sender, EventArgs e)
        {
            MetadataFilters.BrandId            = BrandId;
            MetadataFilters.PreviewSelectables = GetInputSettings();
            MetadataFilters.Template           = MarkupTextBox.Text;
            MetadataFilters.DisableButtons();

            try
            {
                MetadataFilters.LoadFilter();
            }
            catch (Exception ex)
            {
                GeneralFeedbackLabel.SetErrorMessage(ex.Message);
                return;
            }

            MainMultiView.ActiveViewIndex = 1;
        }
        public async Task <IActionResult> GetUnknownsAsync([FromQuery] DetectionQueryParameters queryParameters)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(queryParameters.Timeframe))
                {
                    throw new ArgumentNullException("Timeframe");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.SortBy))
                {
                    throw new ArgumentNullException("SortBy");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.SortOrder))
                {
                    throw new ArgumentNullException("SortOrder");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.Location))
                {
                    throw new ArgumentNullException("Location");
                }

                if (queryParameters.Page == 0)
                {
                    throw new ArgumentNullException("Page");
                }

                if (queryParameters.RecordsPerPage == 0)
                {
                    throw new ArgumentNullException("RecordsPerPage");
                }

                // start with all records
                var queryable = (await _repository.GetAllAsync()).AsQueryable();

                // apply desired status
                MetadataFilters.ApplyReviewedFilter(ref queryable, true);

                // apply desired found state
                MetadataFilters.ApplyFoundFilter(ref queryable, "don't know");

                // apply timeframe filter
                MetadataFilters.ApplyTimeframeFilter(ref queryable, queryParameters.Timeframe);

                // apply location filter
                if (queryParameters.Location.ToLower() != "all")
                {
                    MetadataFilters.ApplyLocationFilter(ref queryable, queryParameters.Location);
                }

                // If no detections found
                if (queryable == null || queryable.Count() == 0)
                {
                    return(NoContent());
                }

                // total number of records
                double recordCount = queryable.Count();

                // apply sort filter
                if (queryParameters.SortBy.ToLower() == "confidence")
                {
                    MetadataFilters.ApplyConfidenceSortFilter(ref queryable, queryParameters.SortOrder);
                }

                else if (queryParameters.SortBy.ToLower() == "timestamp")
                {
                    MetadataFilters.ApplyTimestampSortFilter(ref queryable, queryParameters.SortOrder);
                }

                // apply pagination filter
                MetadataFilters.ApplyPaginationFilter(ref queryable, queryParameters.Page, queryParameters.RecordsPerPage);

                // set page count headers
                SetHeaderCounts(recordCount,
                                (queryParameters.RecordsPerPage > 0 ? queryParameters.RecordsPerPage :
                                 MetadataFilters.DefaultRecordsPerPage));

                // map to returnable data type and return
                return(Ok(queryable.Select(x => MetadataProcessors.ToDetection(x)).ToList()));
            }
            catch (ArgumentNullException ex)
            {
                var details = new ProblemDetails()
                {
                    Detail = ex.Message
                };
                return(BadRequest(details));
            }
            catch (Exception ex)
            {
                var details = new ProblemDetails()
                {
                    Title  = ex.GetType().ToString(),
                    Detail = ex.Message
                };

                return(StatusCode(StatusCodes.Status500InternalServerError, details));
            }
        }
 /// <summary>
 /// Indicates if an entry key is a entry that should be filtered
 /// </summary>
 /// <param name="entry">The entry to check</param>
 /// <returns>True if the entry should be filtered, otherwise False</returns>
 internal bool IsEntryFiltered(string entry)
 {
     return(MetadataFilters.Contains(entry));
 }
Example #5
0
        public IActionResult Get([FromQuery] DetectionQueryParameters queryParameters)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(queryParameters.Timeframe))
                {
                    throw new ArgumentNullException("Timeframe");
                }

                if (queryParameters.DateFrom > queryParameters.DateTo)
                {
                    throw new Exception("From Date should be less than To date");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.SortBy))
                {
                    throw new ArgumentNullException("SortBy");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.SortOrder))
                {
                    throw new ArgumentNullException("SortOrder");
                }

                if (string.IsNullOrWhiteSpace(queryParameters.Location))
                {
                    throw new ArgumentNullException("Location");
                }

                if (queryParameters.Page == 0)
                {
                    throw new ArgumentNullException("Page");
                }

                if (queryParameters.RecordsPerPage == 0)
                {
                    throw new ArgumentNullException("RecordsPerPage");
                }

                // start with all records
                var queryable = _repository.GetAll();

                // apply timeframe filter
                MetadataFilters.ApplyTimeframeFilter(ref queryable, queryParameters.Timeframe, queryParameters.DateFrom, queryParameters.DateTo);

                // apply location filter
                if (queryParameters.Location.ToLower() != "all")
                {
                    MetadataFilters.ApplyLocationFilter(ref queryable, queryParameters.Location);
                }

                // If no detections found
                if (queryable == null || queryable.Count() == 0)
                {
                    return(NoContent());
                }

                // total number of records
                double recordCount = queryable.Count();

                var results = queryable
                              .Select(x => DetectionProcessors.ToDetection(x)).ToList();

                // apply sort filter
                if (queryParameters.SortBy.ToLower() == "confidence")
                {
                    DetectionFilters.ApplyConfidenceSortFilter(ref results, queryParameters.SortOrder);
                }
                else if (queryParameters.SortBy.ToLower() == "timestamp")
                {
                    DetectionFilters.ApplyTimestampSortFilter(ref results, queryParameters.SortOrder);
                }

                // apply pagination filter
                DetectionFilters.ApplyPaginationFilter(ref results, queryParameters.Page, queryParameters.RecordsPerPage);

                // set page count headers
                SetHeaderCounts(recordCount,
                                (queryParameters.RecordsPerPage > 0 ? queryParameters.RecordsPerPage :
                                 MetadataFilters.DefaultRecordsPerPage));

                // map to returnable data type and return
                return(Ok(results));
            }
            catch (ArgumentNullException ex)
            {
                var details = new ProblemDetails()
                {
                    Detail = ex.Message
                };
                return(BadRequest(details));
            }
            catch (Exception ex)
            {
                var details = new ProblemDetails()
                {
                    Title  = ex.GetType().ToString(),
                    Detail = ex.Message
                };

                return(StatusCode(StatusCodes.Status500InternalServerError, details));
            }
        }