Untitled
unknown
csharp
2 years ago
5.5 kB
17
Indexable
// GET: Projects
[Authorize]
public async Task<IActionResult> Index(string? sortOrder, int? page, bool? sort, string? userId)
{
List<Project> SortedProjs = new List<Project>();
List<ApplicationUser> allUsers = (List<ApplicationUser>)await _users.GetUsersInRoleAsync("Developer");
List<SelectListItem> users = new List<SelectListItem>();
allUsers.ForEach(au =>
{
users.Add(new SelectListItem(au.UserName, au.Id.ToString()));
});
ViewBag.Users = users;
switch (sortOrder)
{
case "Priority":
if (sort == true)
{
SortedProjs =
await _context.Projects
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.OrderByDescending(t => t.TicketPriority))
.ThenInclude(t => t.Owner)
.ToListAsync();
}
else
{
SortedProjs =
await _context.Projects
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.OrderBy(t => t.TicketPriority))
.ThenInclude(t => t.Owner)
.ToListAsync();
}
break;
case "RequiredHrs":
if (sort == true)
{
SortedProjs =
await _context.Projects
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.OrderByDescending(t => t.RequiredHours))
.ThenInclude(t => t.Owner)
.ToListAsync();
}
else
{
SortedProjs =
await _context.Projects
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.OrderBy(t => t.RequiredHours))
.ThenInclude(t => t.Owner)
.ToListAsync();
}
break;
case "Completed":
SortedProjs =
await _context.Projects
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.Where(t => t.Completed == true))
.ThenInclude(t => t.Owner)
.ToListAsync();
break;
default:
if (userId != null)
{
SortedProjs =
await _context.Projects
.OrderBy(p => p.ProjectName)
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets.Where(t => t.Owner.Id.Equals(userId)))
.ThenInclude(t => t.Owner)
.Include(p => p.Tickets).ThenInclude(t => t.TicketWatchers).ThenInclude(tw => tw.Watcher)
.ToListAsync();
}
else
{
SortedProjs =
await _context.Projects
.OrderBy(p => p.ProjectName)
.Include(p => p.CreatedBy)
.Include(p => p.AssignedTo)
.ThenInclude(at => at.ApplicationUser)
.Include(p => p.Tickets)
.ThenInclude(t => t.Owner)
.Include(p => p.Tickets).ThenInclude(t => t.TicketWatchers).ThenInclude(tw => tw.Watcher)
.ToListAsync();
}
break;
}
//check if User is PM or Develoer
var LogedUserName = User.Identity.Name; // logined user name
var user = _context.Users.FirstOrDefault(u => u.UserName == LogedUserName);
var rolenames = await _users.GetRolesAsync(user);
var AssinedProject = new List<Project>();
// geting assined project
if (rolenames.Contains("Developer"))
{
AssinedProject = SortedProjs.Where(p => p.AssignedTo.Select(projectUser => projectUser.UserId).Contains(user.Id)).ToList();
}
else
{
AssinedProject = SortedProjs;
}
X.PagedList.IPagedList<Project> projList = AssinedProject.ToPagedList(page ?? 1, 3);
return View(projList);
}Editor is loading...