private async Task <IHttpActionResult> GetInternalAsync(string systemFilter, string userFilter = null, string time = null, string offset = null) { var timeInfo = GetTimeInfo(time, offset); var processResult = QueryProcessor.Process(userFilter); if (!processResult.IsValid) { return(BadRequest(processResult.Message)); } if (String.IsNullOrEmpty(systemFilter)) { systemFilter = await GetAssociatedOrganizationsFilterAsync(_organizationRepository, processResult.UsesPremiumFeatures, HasOrganizationOrProjectFilter(userFilter)); } EventStatsResult result; try { result = await _stats.GetOccurrenceStatsAsync(timeInfo.UtcRange.Start, timeInfo.UtcRange.End, systemFilter, processResult.ExpandedQuery, timeInfo.Offset); } catch (ApplicationException ex) { Logger.Error().Exception(ex) .Property("Search Filter", new { SystemFilter = systemFilter, UserFilter = userFilter, Time = time, Offset = offset }) .Tag("Search") .Identity(ExceptionlessUser.EmailAddress) .Property("User", ExceptionlessUser) .SetActionContext(ActionContext) .Write(); return(BadRequest("An error has occurred. Please check your search filter.")); } return(Ok(result)); }
public async Task CanGetEventStatsAsync() { // capture start date before generating data to make sure that our time range for stats includes all items var startDate = DateTime.UtcNow.SubtractDays(60); const int eventCount = 100; await RemoveDataAsync(); await CreateDataAsync(eventCount, false); _metricsClient.DisplayStats(); var result = await _stats.GetOccurrenceStatsAsync(startDate, DateTime.UtcNow, null, userFilter : "project:" + TestConstants.ProjectId); Assert.Equal(eventCount, result.Total); Assert.Equal(eventCount, result.Timeline.Sum(t => t.Total)); Assert.Equal(await _stackRepository.CountAsync(), result.Unique); Assert.Equal(await _stackRepository.CountAsync(), result.Timeline.Sum(t => t.New)); var stacks = await _stackRepository.GetByOrganizationIdAsync(TestConstants.OrganizationId, new PagingOptions().WithLimit(100)); foreach (var stack in stacks.Documents) { result = await _stats.GetOccurrenceStatsAsync(startDate, DateTime.UtcNow, null, userFilter : "stack:" + stack.Id); Console.WriteLine("{0} - {1} : {2}", stack.Id, stack.TotalOccurrences, result.Total); //Assert.Equal(stack.TotalOccurrences, result.Total); //Assert.Equal(stack.TotalOccurrences, result.Timeline.Sum(t => t.Total)); } }