public IActionResult Project(int id = -1) { if (!_auth.Authorise(RolesEnum.Staff, _context)) // Check logged in { return(Redirect("~/Login/Index")); } var userId = _context.Users.First(u => u.UserName == HttpContext.Session.GetString("Username")).UserId; var projectUser = _context.ProjectUsers.Where(p => p.ProjectId == id).Where(u => u.UserId == userId).ToList(); if (projectUser.Count != 1) // Check if user is in project { return(Redirect("~/Project/Dashboard")); } if (id == -1 || !_context.Projects.Any(p => p.ProjectId == id)) // Check project exists and id was given { return(Redirect("~/Project/Dashboard")); } var vm = new ViewProjectViewModel(); // Create a new view model vm.Project = _context.Projects.First(p => p.ProjectId == id); // Get the project record and add it to the view model. var listOfUsersInProject = _context.ProjectUsers.Where(p => p.ProjectId == id).ToList(); // Get users in project from database vm.ProjectUsers = new List <TableProjectUser>(); // Instanciate a new list for project users // Go through each user foreach (var user in listOfUsersInProject) { // The actual user record var accuser = _context.Users.First(u => u.UserId == user.UserId); // New table project user and fill in fields var temp = new TableProjectUser(); temp.Username = accuser.UserName; temp.Email = accuser.Email ?? "User has not given an email."; temp.Role = _context.Roles.First(r => r.RoleId == accuser.RoleId).RoleName; var minutesBooked = _context.ProjectMinutesBooked.Where(p => p.ProjectId == id && p.UserId == user.UserId); temp.MinutesBooked = 0; foreach (var minutes in minutesBooked) { temp.MinutesBooked += minutes.AmountOfMinutes; } // Add new table project user to view model vm.ProjectUsers.Add(temp); } // return the Project view return(View(vm)); }
// Manage users view public IActionResult ManageUsers(int id = -1) { if (!_auth.Authorise(RolesEnum.Admin, _context)) // Check logged in as admin { return(Redirect("~/Project/Dashboard")); } var vm = new ManageUsersViewModel(); // new view model vm.AllUsers = new List <TableProjectUser>(); // instanciate all users // Foreach user in the database foreach (var user in _context.Users) { // Create a temp user var temp = new TableProjectUser(); temp.Email = user.Email ?? "This user has not given an email."; temp.Username = user.UserName; temp.Role = _context.Roles.First(r => r.RoleId == user.RoleId).RoleName; temp.MinutesBooked = user.UserId; // Add temp user to view model vm.AllUsers.Add(temp); } // If there's an id given and it's a valid id if (id != -1 && _context.Users.Any(u => u.UserId == id)) { // Create new temp selected user and fill out fields var temp = new SelectUser(); temp.User = _context.Users.First(u => u.UserId == id); temp.Role = _context.Roles.First(r => r.RoleId == temp.User.RoleId).RoleName; var projectIds = _context.ProjectUsers.Where(p => p.UserId == temp.User.UserId).Select(c => c.ProjectId).ToList(); temp.MemberOfProjects = _context.Projects.Where(p => projectIds.Contains(p.ProjectId)) .Select(p => p.ProjectName).ToList(); // All user to view model vm.SelectedUser = temp; } // Get project names from the database vm.ProjectNames = _context.Projects.Select(p => p.ProjectName).ToList(); // Get roles from the database vm.AllRoles = _context.Roles.Select(r => r.RoleName).ToList(); // Return the view return(View(vm)); }