Data.BugsDBManager.GetBugsByProjectId C# (CSharp) Method

GetBugsByProjectId() public static method

public static GetBugsByProjectId ( int projectId, int page, int pageSize, bool asc, string sortExpression, bool showClosed, int &itemsCount ) : IEnumerable
projectId int
page int
pageSize int
asc bool
sortExpression string
showClosed bool
itemsCount int
return IEnumerable
        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;
        }