예제 #1
0
        private bool IsAuthenticated()
        {
            if (Session["currentUser"] != null)
            {
                BaroDB  db      = new BaroDB();
                Student student = db.SearchStudentByStudentNumber(((OAuth.CurrentUser)Session["currentUser"]).ID);
                if (student != null)
                {
                    return(true);
                }

                Teacher teacher = db.SearchTeacherByTeacherNumber(((OAuth.CurrentUser)Session["currentUser"]).ID);
                if (teacher != null)
                {
                    if (teacher.Role == TeacherAccess.admin)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
예제 #2
0
        public ActionResult SelectStudent() //Student selecteren
        {
            if (!IsAuthenticated())
            {
                return(RedirectToAction("Index", "Main"));
            }


            Student student = _db.SearchStudentByStudentNumber(((OAuth.CurrentUser)(Session["currentUser"])).ID);

            var data = from spg in _db.StudentProjectGroups
                       where spg.Student.Studentnr == student.Studentnr
                       join spg2 in _db.StudentProjectGroups on spg.ProjectGroup.Id equals spg2.ProjectGroup.Id
                       where spg2.ProjectGroup.Project.EndDate > DateTime.Now && spg2.ProjectGroup.Project.StartDate < DateTime.Now
                       join s in _db.Students on spg2.Student.Studentnr equals s.Studentnr
                       select new { Student = s, ProjectGroup = spg2.ProjectGroup, Project = spg2.ProjectGroup.Project };

            List <SelectStudentModel> model;

            try
            {
                model = (List <SelectStudentModel>)(data.ToList().ToNonAnonymousList(typeof(SelectStudentModel)));
            }
            catch
            {
                return(View(new List <SelectStudentModel>()));
            }

            TimeSpan time = DateTime.Now - model.First().Project.StartDate;
            int      week = (int)Math.Floor(time.TotalDays / 7) + 1;

            int projId = model.First().Project.Id;

            var data2 = from sg in _db.StudentGrades
                        where sg.Reviewer.Studentnr == student.Studentnr && sg.Project.Id == projId
                        join rd in _db.ReviewDates on sg.ReviewDate.Id equals rd.Id
                        where rd.Weeknr == week
                        join s in _db.Students on sg.Student.Studentnr equals s.Studentnr
                        select s;

            List <Student> reviewedStudents = data2.ToList();

            var data3 = from rd in _db.ReviewDates
                        where rd.Weeknr == week
                        select rd;

            List <ReviewDates> reviewDates = data3.ToList();

            int elements = model.Count();

            for (int i = model.Count() - 1; i >= 0; i--)
            {
                model.ElementAt(i).Week = week;
                if (model.ElementAt(i).Student.Studentnr == student.Studentnr)
                {
                    model.Remove(model.ElementAt(i));
                    elements--;
                }
            }

            foreach (Student s in reviewedStudents)
            {
                for (int i = model.Count() - 1; i >= 0; i--) //2nd loop because of errors
                {
                    if (model.ElementAt(i).Student.Studentnr == s.Studentnr)
                    {
                        model.Remove(model.ElementAt(i));
                        elements--;
                    }
                }
            }

            if (reviewDates.Count == 0)
            {
                model = new List <SelectStudentModel>();
            }
            Session["SelectStudentModel"] = model;

            return(View(model));
        }
예제 #3
0
        public ActionResult ExternalLoginCallback(string returnUrl)
        {
            var avansOAuth = (AvansOAuthClient)OAuthWebSecurity.GetOAuthClientData("avans").AuthenticationClient;
            AuthenticationResult result;

            try
            {
                result = avansOAuth.VerifyAuthentication(HttpContext);
            }
            catch
            {
                return(RedirectToAction("ExternalLoginFailure"));
            }

            if (!result.IsSuccessful)
            {
                return(RedirectToAction("ExternalLoginFailure"));
            }

            if (Session["currentUser"] == null)
            {
                BaroDB  db      = new BaroDB();
                Student student = db.SearchStudentByStudentNumber(int.Parse(result.ProviderUserId));
                if (student != null)
                {
                    string name = student.FirstName + " " + student.LastName;
                    Session["currentUser"] = new OAuth.CurrentUser {
                        ID = student.Studentnr, DisplayName = name, Access = access.student
                    };
                }
                Teacher teacher = db.SearchTeacherByTeacherNumber(int.Parse(result.ProviderUserId));
                //Teacher teacher = db.SearchTeacherByTeacherNumber(13); //Voor testen, login als leraar ondanks je student nr.
                if (teacher != null)
                {
                    string name = teacher.FirstName + " " + teacher.LastName;
                    switch (teacher.Role)
                    {
                    case TeacherAccess.mentor:
                        Session["currentUser"] = new OAuth.CurrentUser {
                            ID = teacher.DocentNumber, DisplayName = name, Access = access.mentor
                        };
                        break;

                    case TeacherAccess.tutor:
                        Session["currentUser"] = new OAuth.CurrentUser {
                            ID = teacher.DocentNumber, DisplayName = name, Access = access.tutor
                        };
                        break;

                    case TeacherAccess.projectDocent:
                        Session["currentUser"] = new OAuth.CurrentUser {
                            ID = teacher.DocentNumber, DisplayName = name, Access = access.projectDocent
                        };
                        break;

                    case TeacherAccess.admin:
                        Session["currentUser"] = new OAuth.CurrentUser {
                            ID = teacher.DocentNumber, DisplayName = name, Access = access.admin
                        };
                        break;
                    }
                }

                if (Session["currentUser"] != null)
                {
                    return(RedirectToLocal(returnUrl));
                }
            }

            return(RedirectToAction("ExternalLoginFailure"));
        }