// GET: UniversityUsers/Details/5 public async Task <IActionResult> Details(int?id) { if (id == null) { return(NotFound()); } var universityUser = await _context.UniversityUsers .FirstOrDefaultAsync(m => m.UniversityId == id); if (universityUser == null) { return(NotFound()); } var registrations = await _context.Registrations.Where(r => r.StudentId == id).ToListAsync(); var studentDashboardVM = new StudentDashboardViewModel(); studentDashboardVM.UniversityUser = universityUser; studentDashboardVM.BusyTimes = StudentAvailability.GetStudentsBusyTimes(id ?? 1, _context); studentDashboardVM.WorkDays = _context.WorkDays.ToList(); foreach (var registration in registrations) { var groupMembership = await _context.GroupMemberships.Where(gm => gm.StudentId == id && gm.UnitId == registration.UnitId).ToListAsync(); int?groupId = groupMembership.Count > 0 ? groupMembership.FirstOrDefault().GroupId: null; var group = groupId != null ? await _context.Groups.FindAsync(groupId):null; var allGroupMembers = groupId != null ? await _context.GroupMemberships.Where(gm => gm.GroupId == groupId).ToListAsync() : null; var unit = await _context.Units.FindAsync(registration.UnitId); //create the unit details VM var unitDetailsVM = new UnitDetailsViewModel(); unitDetailsVM.UnitId = registration.UnitId; unitDetailsVM.UnitName = unit.Name; unitDetailsVM.GroupId = group != null ? group.GroupId : 0; unitDetailsVM.GroupName = group != null ? group.Name: String.Empty; unitDetailsVM.OwnerId = group != null ? group.OwnerId: 0; unitDetailsVM.GroupMemberships = allGroupMembers; //add to students studentDashboardVM.UnitDetails.Add(unitDetailsVM); } return(View(studentDashboardVM)); }
public IActionResult JoinGroup(int studentId, int unitId) { int Id = studentId; var studentJoinGroupVM = new StudentJoinGroupViewModel(); studentJoinGroupVM.StudentId = studentId; studentJoinGroupVM.UnitId = unitId; var groups = _context.Groups.Where(g => g.UnitId == unitId && g.IsOpen) .Include(g => g.GroupMemberships); foreach (var group in groups) { var groupDetails = new UnitGroupDetailsViewModel(); groupDetails.GroupId = group.GroupId; groupDetails.GroupName = group.Name; var studentIds = group.GroupMemberships.Select(m => m.StudentId).ToList(); groupDetails.GroupStudentAvailabilityMatchLists = StudentAvailability.GetAvailableTimeComparisions(studentId, unitId, _context).Where(s => studentIds.Contains(s.StudentId)).ToList(); //var overallMatches = groupDetails.GroupStudentAvailabilityMatchLists.Select(m => m.OverallMatch).ToList(); studentJoinGroupVM.UnitGroupDetails.Add(groupDetails); } return(View(studentJoinGroupVM)); //return RedirectToAction("Details", "UniversityUsers", new { Id }); }
// GET: Groups/Create public IActionResult Create(int studentId, int unitId) { var studentIdsInGroup = _context.GroupMemberships.Where(g => g.UnitId == unitId).Select(m => m.StudentId).ToList(); var studentAvailableTimeComparisionsViewModel = new StudentAvailableTimeComparisionsViewModel(); studentAvailableTimeComparisionsViewModel.UnitId = unitId; studentAvailableTimeComparisionsViewModel.StudentId = studentId; studentAvailableTimeComparisionsViewModel.StudentAvailabilityMatchLists = StudentAvailability.GetAvailableTimeComparisions(studentId, unitId, _context).Where(s => !studentIdsInGroup.Contains(s.StudentId)).ToList(); return(View(studentAvailableTimeComparisionsViewModel)); }