private async Task <IHttpActionResult> GetInternalAsync(string systemFilter = null, string userFilter = null, string sort = null, string time = null, string offset = null, string mode = null, int page = 1, int limit = 10, bool usesPremiumFeatures = false) { page = GetPage(page); limit = GetLimit(limit); var skip = GetSkip(page + 1, limit); if (skip > MAXIMUM_SKIP) { return(Ok(new object[0])); } var processResult = QueryProcessor.Process(userFilter); if (!processResult.IsValid) { return(BadRequest(processResult.Message)); } if (String.IsNullOrEmpty(systemFilter)) { systemFilter = await GetAssociatedOrganizationsFilterAsync(_organizationRepository, processResult.UsesPremiumFeatures || usesPremiumFeatures, HasOrganizationOrProjectFilter(userFilter)); } var sortBy = GetSort(sort); var timeInfo = GetTimeInfo(time, offset); var options = new PagingOptions { Page = page, Limit = limit }; FindResults <PersistentEvent> events; try { events = await _repository.GetByFilterAsync(systemFilter, processResult.ExpandedQuery, sortBy, timeInfo.Field, timeInfo.UtcRange.Start, timeInfo.UtcRange.End, options); } catch (ApplicationException ex) { Logger.Error().Exception(ex) .Property("Search Filter", new { SystemFilter = systemFilter, UserFilter = userFilter, Sort = sort, Time = time, Offset = offset, Page = page, Limit = limit }) .Tag("Search") .Identity(ExceptionlessUser.EmailAddress) .Property("User", ExceptionlessUser) .SetActionContext(ActionContext) .Write(); return(BadRequest("An error has occurred. Please check your search filter.")); } if (!String.IsNullOrEmpty(mode) && String.Equals(mode, "summary", StringComparison.InvariantCultureIgnoreCase)) { return(OkWithResourceLinks(events.Documents.Select(e => { var summaryData = _formattingPluginManager.GetEventSummaryData(e); return new EventSummaryModel { TemplateKey = summaryData.TemplateKey, Id = e.Id, Date = e.Date, Data = summaryData.Data }; }).ToList(), events.HasMore && !NextPageExceedsSkipLimit(page, limit), page, events.Total)); } return(OkWithResourceLinks(events.Documents, events.HasMore && !NextPageExceedsSkipLimit(page, limit), page, events.Total)); }
public IHttpActionResult GetInternal(string systemFilter = null, string userFilter = null, string sort = null, string time = null, string offset = null, string mode = null, int page = 1, int limit = 10) { page = GetPage(page); limit = GetLimit(limit); var skip = GetSkip(page + 1, limit); if (skip > MAXIMUM_SKIP) { return(Ok(new object[0])); } var validationResult = QueryValidator.Validate(userFilter); if (!validationResult.IsValid) { return(BadRequest(validationResult.Message)); } if (String.IsNullOrEmpty(systemFilter)) { systemFilter = GetAssociatedOrganizationsFilter(_organizationRepository, validationResult.UsesPremiumFeatures, HasOrganizationOrProjectFilter(userFilter)); } var sortBy = GetSort(sort); var timeInfo = GetTimeInfo(time, offset); var options = new PagingOptions { Page = page, Limit = limit }; var events = _repository.GetByFilter(systemFilter, userFilter, sortBy.Item1, sortBy.Item2, timeInfo.Field, timeInfo.UtcRange.Start, timeInfo.UtcRange.End, options); if (!String.IsNullOrEmpty(mode) && String.Equals(mode, "summary", StringComparison.InvariantCultureIgnoreCase)) { return(OkWithResourceLinks(events.Select(e => { var summaryData = _formattingPluginManager.GetEventSummaryData(e); return new EventSummaryModel { TemplateKey = summaryData.TemplateKey, Id = e.Id, Date = e.Date, Data = summaryData.Data }; }).ToList(), options.HasMore, page)); } return(OkWithResourceLinks(events, options.HasMore && !NextPageExceedsSkipLimit(page, limit), page)); }
public void EventSummaryData(string path) { var settings = IoC.GetInstance <JsonSerializerSettings>(); settings.Formatting = Formatting.Indented; var json = File.ReadAllText(path); var ev = json.FromJson <PersistentEvent>(settings); Assert.NotNull(ev); var data = _formattingPluginManager.GetEventSummaryData(ev); var summary = new EventSummaryModel { TemplateKey = data.TemplateKey, Id = ev.Id, Date = ev.Date, Data = data.Data }; ApprovalsUtility.VerifyFile(Path.ChangeExtension(path, "summary.json"), JsonConvert.SerializeObject(summary, settings)); }
public IHttpActionResult GetInternal(string systemFilter = null, string userFilter = null, string sort = null, string time = null, string offset = null, string mode = null, int page = 1, int limit = 10) { page = GetPage(page); limit = GetLimit(limit); var skip = GetSkip(page + 1, limit); if (skip > MAXIMUM_SKIP) { return(Ok(new object[0])); } if (String.IsNullOrEmpty(systemFilter)) { systemFilter = GetAssociatedOrganizationsFilter(); } var sortBy = GetSort(sort); var timeInfo = GetTimeInfo(time, offset); var options = new PagingOptions { Page = page, Limit = limit }; var events = _repository.GetByFilter(systemFilter, userFilter, sortBy.Item1, sortBy.Item2, timeInfo.Field, timeInfo.UtcRange.Start, timeInfo.UtcRange.End, options); // TODO: Implement a cut off and add header that contains the number of stacks outside of the retention period. if (!String.IsNullOrEmpty(mode) && String.Equals(mode, "summary", StringComparison.InvariantCultureIgnoreCase)) { return(OkWithResourceLinks(events.Select(e => { var summaryData = _formattingPluginManager.GetEventSummaryData(e); return new EventSummaryModel { TemplateKey = summaryData.TemplateKey, Id = e.Id, Date = e.Date, Data = summaryData.Data }; }).ToList(), options.HasMore, page)); } return(OkWithResourceLinks(events, options.HasMore && !NextPageExceedsSkipLimit(page, limit), page)); }
public IHttpActionResult Get(string organization = null, string before = null, string after = null, int limit = 10, string mode = null) { var options = new PagingOptions { Before = before, After = after, Limit = limit }; var organizationIds = new List <string>(); if (!String.IsNullOrEmpty(organization) && CanAccessOrganization(organization)) { organizationIds.Add(organization); } else { organizationIds.AddRange(GetAssociatedOrganizationIds()); } var results = _repository.GetByOrganizationIds(organizationIds, options); if (!String.IsNullOrEmpty(mode) && String.Equals(mode, "summary", StringComparison.InvariantCultureIgnoreCase)) { return(OkWithResourceLinks(results.Select(e => new EventSummaryModel(e.Id, e.Date, _formattingPluginManager.GetEventSummaryData(e))).ToList(), options.HasMore, e => String.Concat(e.Date.UtcTicks.ToString(), "-", e.Id), isDescending: true)); } return(OkWithResourceLinks(results, options.HasMore, e => String.Concat(e.Date.UtcTicks.ToString(), "-", e.Id), isDescending: true)); }