Skip to content

Instantly share code, notes, and snippets.

@Alexei000
Last active September 5, 2017 14:40
Show Gist options
  • Save Alexei000/7f89ce8c151299656ad1c9161a1ec5a4 to your computer and use it in GitHub Desktop.
Save Alexei000/7f89ce8c151299656ad1c9161a1ec5a4 to your computer and use it in GitHub Desktop.
List fetch - get filtered tests results
public IQueryable<ImportingSystemTestResult> GetFilteredTestsResultsQuery(ImportingSystemTestResultSearchFilterServiceModel filters)
{
var dbModels = DataAccess.ImportingSystemTestResultRepository.AllNoTracking;
if (!filters.EnvironmentList.IsEmpty())
dbModels = dbModels.Where(tr => filters.EnvironmentList.Contains(tr.EnvironmentId));
if (!filters.ImportingSystemList.IsEmpty())
dbModels = dbModels.Where(tr => filters.ImportingSystemList.Contains(tr.ImportingSystemId));
// other filters come here
return dbModels;
}
public ListWithTotalCountServiceModel<ImportingSystemTestResultOutputServiceModel> GetFilteredTestsResults(ImportingSystemTestResultSearchFilterServiceModel filters)
{
var ret = new ListWithTotalCountServiceModel<ImportingSystemTestResultOutputServiceModel>();
var dbModels = GetFilteredTestsResultsQuery(filters);
var modelsQuery = dbModels
.Join(DataAccess.ImportingSystemTestRunTimeRepository.AllNoTracking,
tr => tr.ImportingSystemTestResultId, trt => trt.ImportingSystemTestResultId,
(tr, trt) => new { Tr = tr, Trt = trt })
.Join(DataAccess.ImportingSystemTestQueueRepository.AllNoTracking,
tr => tr.Tr.ImportingSystemTestQueueId, q => q.ImportingSystemTestQueueId,
(tr, q) => new ImportingSystemTestResultOutputServiceModel
{
ImportingSystemTestResultId = tr.Tr.ImportingSystemTestResultId,
EnteredTimestamp = tr.Tr.EnteredTimestamp,
RunTimestamp = tr.Tr.RunTimestamp,
ImportingSystemTestId = tr.Tr.ImportingSystemTestId,
ImportingSystemId = tr.Tr.ImportingSystemId,
EnvironmentId = tr.Tr.EnvironmentId,
RequesterId = tr.Tr.RequesterId,
ImportingSystemTestExecutionStatusId = tr.Tr.ImportingSystemTestExecutionStatusId,
ResultFilename = tr.Tr.ResultFilename,
RequestId = q.RequestId,
ErrorMessage = q.PreRunError + System.Environment.NewLine + tr.Tr.ErrorMessage,
DurationMs = tr.Trt.DurationMs
});
if (filters.HasWarningMessage)
modelsQuery = modelsQuery.Where(item => item.ErrorMessage != null && item.ErrorMessage.Length > 3);
ret.TotalCount = modelsQuery.Count();
var models = modelsQuery
.OrderByDescending(tr => tr.EnteredTimestamp)
.Take(MaxDisplayedTestResults)
.ToList();
ret.Items = models;
return ret;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment