public static IEnumerable<Bug> GetBugsByProjectId(int projectId, int page, int pageSize, bool asc, string sortExpression, bool showClosed, out int itemsCount)
{
DataClassesBugTrackingSystemDataContext db = new DataClassesBugTrackingSystemDataContext();
int items;
switch (sortExpression)
{
case "SortId":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.BugId,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.BugId,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortOwner":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.TesterId,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.TesterId,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortPriority":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Priority,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Priority,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortDate":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.CreationDate,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.CreationDate,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortDescription":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Description,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Description,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortProject":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Project.Name,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Project.Name,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
case "SortStatus":
if (showClosed)
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Status,
p => p.ProjectId == projectId,
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
else
{
var bugs = db.Bugs.Page(page, pageSize, p => p.Status,
p => p.ProjectId == projectId,
p => p.Status != Status.Closed.ToString(),
p => p.Status != Status.Deleted.ToString(),
asc, out items);
itemsCount = items;
return bugs;
}
}
itemsCount = 0;
return null;
}