// 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));
        }
Esempio n. 2
0
        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 });
        }
Esempio n. 3
0
        // 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));
        }