// TODO: Move entirely to model binder private async Task <ExceptionStore.SearchParams> GetSearchAsync() { var result = new ExceptionStore.SearchParams { Group = CurrentGroup, Log = CurrentLog, Sort = CurrentSort, Id = CurrentId }; if (Request.Params["q"].HasValue()) { result.SearchQuery = Request.Params["q"]; } if (bool.TryParse(Request.Params["includeDeleted"], out var includeDeleted)) { result.IncludeDeleted = includeDeleted; } if (CurrentSimilarId.HasValue) { var error = await CurrentStore.GetErrorAsync(CurrentLog, CurrentSimilarId.Value).ConfigureAwait(false); if (error != null) { result.Message = error.Message; } } return(result); }
// TODO: Move entirely to model binder private async Task <ExceptionStore.SearchParams> GetSearchAsync() { var result = new ExceptionStore.SearchParams { Group = CurrentGroup, Log = CurrentLog, Sort = CurrentSort, Id = CurrentId, Url = CurrentUrl, Host = CurrentHost, StartDate = CurrentStartDate, EndDate = CurrentEndDate, }; if (GetParam("q").HasValue()) { result.SearchQuery = GetParam("q"); } if (bool.TryParse(GetParam("includeDeleted"), out var includeDeleted)) { result.IncludeDeleted = includeDeleted; } if (CurrentSimilarId.HasValue) { var error = await CurrentStore.GetErrorAsync(CurrentLog, CurrentSimilarId.Value); if (error != null) { result.Message = error.Message; } } return(result); }
public async Task <ActionResult> Similar(Guid id, bool byTime = false, int rangeInSeconds = 5 * 60) { var e = await CurrentStore.GetErrorAsync(CurrentLog, id).ConfigureAwait(false); if (e == null) { return(View("Exceptions.Detail", null)); } var search = GetSearch(); if (byTime) { search.StartDate = e.CreationDate.AddMinutes(-rangeInSeconds); search.EndDate = e.CreationDate.AddMinutes(rangeInSeconds); } else { search.Message = e.Message; } var errors = await CurrentStore.GetErrorsAsync(search).ConfigureAwait(false); var vd = GetModel(errors); vd.Exception = e; vd.ClearLinkForVisibleOnly = true; return(View("Exceptions.Similar", vd)); }