Exemple #1
0
        /// <summary>
        /// A function that deletes a specific assignment
        /// </summary>
        public ActionResult Delete(int id)
        {
            Assignment assignment = (from a in db.Assignments where a.ID == id select a).FirstOrDefault();
            int        courseID   = assignment.CourseID;

            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.TEACHER,
                userID: User.Identity.GetUserId(),
                courseID: courseID
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion
            assignmentService.deleteAssignment(assignment);
            //if (assignment != null)
            //{
            //    List<Milestone> milestones = (from m in db.Milestones where m.AssignmentID == id select m).ToList();
            //    if(milestones.Count != 0)
            //    {
            //        IEnumerable<Milestone> milestonesToDelete = milestones;
            //        db.Milestones.RemoveRange(milestonesToDelete);
            //        db.SaveChanges();
            //    }
            //    db.Assignments.Remove(assignment);
            //    db.SaveChanges();
            //}
            return(RedirectToAction("TeacherOverview", new { id = courseID }));
        }
        public SecurityRedirect VerifySecurityLevel(bool auth, SecurityState secLevel, string userID, int?courseID = null)
        {
            string[]         roles    = { "User", "Student", "Teacher", "Admin" };
            SecurityRedirect redirect = new SecurityRedirect {
                Redirect = true
            };

            //If user isnt logged in...
            if (!auth)
            {
                redirect.ActionName     = "Login";
                redirect.ControllerName = "Account";
                return(redirect);
            }

            //Make sure the highest security level the user has is sufficient for the minimum security level.
            if (!(secLevel <= GetHighestUserPrivilege(userID, courseID)))
            {
                redirect.ActionName     = "Index";
                redirect.ControllerName = "User";
                return(redirect);
            }

            //If it reaches this part of the code, it means we have no reason to deny entry.
            redirect.Redirect = false;
            return(redirect);
        }
        /// <summary>
        /// A function used to redirect unauthenticated users
        /// </summary>
        private ActionResult EnforceSecurity(SecurityState minRequirement)
        {
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: minRequirement,
                userID: User.Identity.GetUserId()
                                        );

            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            return(null);
        }
Exemple #4
0
        /// <summary>
        /// A function that deletes a specific assignment milestone
        /// </summary>
        public ActionResult DeleteMilestone(int id)
        {
            Milestone milestone    = (from m in db.Milestones where m.ID == id select m).FirstOrDefault();
            int       assignmentID = milestone.AssignmentID;
            int       courseID     = (from a in db.Assignments where a.ID == assignmentID select a.CourseID).FirstOrDefault();

            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.TEACHER,
                userID: User.Identity.GetUserId(),
                courseID: courseID
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion
            assignmentService.deleteMilestone(milestone);
            //if (milestone != null)
            //{
            //    List<Solution> solutions = (from s in db.Solutions where s.MilestoneID == id select s).ToList();
            //    List<Submission> submissions = (from s in db.Submission where s.MilestoneID == id select s).ToList();
            //    if (solutions.Count != 0)
            //    {
            //        IEnumerable<Solution> solutionsToDelete = solutions;
            //        db.Solutions.RemoveRange(solutionsToDelete);
            //        db.SaveChanges();
            //    }

            //    if (submissions.Count != 0)
            //    {
            //        IEnumerable<Submission> submissionsToDelete = submissions;
            //        db.Submission.RemoveRange(submissionsToDelete);
            //        db.SaveChanges();
            //    }
            //    db.Milestones.Remove(milestone);
            //    db.SaveChanges();
            //}
            return(RedirectToAction("TeacherAssignmentView", new { id = assignmentID }));
        }
Exemple #5
0
        /// <summary>
        /// A function that displays a view for a teacher in a certain course.
        /// Displays ongoing and past projects
        /// </summary>
        public ActionResult TeacherOverview(int id)
        {
            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.TEACHER,
                userID: User.Identity.GetUserId(),
                courseID: id
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion

            CourseViewModel viewModel = service.GetCoursesById(id, User.Identity.GetUserId());
            viewModel.isTeacher = true;
            return(View(viewModel));
        }
Exemple #6
0
        /// <summary>
        /// A function that displays the index for the user controller which
        /// contains a list of assignments that the user has not turned in
        /// allready, also contains links to the courses the user is studying/teaching
        /// </summary>
        public ActionResult Index()
        {
            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.USER,
                userID: User.Identity.GetUserId(),
                courseID: null
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion

            var viewModels = service.GetAllInfo(User.Identity.GetUserId());
            viewModels.Name = User.Identity.Name;
            return(View(viewModels));
        }
Exemple #7
0
        /// <summary>
        /// A function that displays a view for a student in a certain course.
        /// Displays ongoing and past projects with their grades
        /// </summary>
        public ActionResult StudentOverview(int id)
        {
            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.STUDENT,
                userID: User.Identity.GetUserId(),
                courseID: id
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion

            CourseViewModel viewModel = service.GetCoursesById(id, User.Identity.GetUserId());
            string          userID    = User.Identity.GetUserId();
            viewModel           = assignmentService.GetGrades(userID, viewModel);
            viewModel.isTeacher = false;
            return(View(viewModel));
        }
Exemple #8
0
        public ActionResult Edit(AssignmentViewModel model, int counter, FormCollection collection, IEnumerable <HttpPostedFileBase> files)
        {
            #region Security
            SecurityRedirect redirect = accountService.VerifySecurityLevel
                                        (
                auth: User.Identity.IsAuthenticated,
                secLevel: SecurityState.TEACHER,
                userID: User.Identity.GetUserId(),
                courseID: model.CourseID
                                        );
            if (redirect.Redirect)
            {
                return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
            }
            #endregion

            if (ModelState.IsValid)
            {
                for (int i = 0; i < counter; i++)
                {
                    int id;
                    Int32.TryParse(collection["Milestones[" + i + "].ID"], out id);
                    bool   exists         = id != 0;
                    string milestoneTitle = collection["Milestones[" + i + "].Title"];
                    if (!exists && milestoneTitle != null)
                    {
                        string title = collection["Milestones[" + i + "].Title"];
                        int    weight;
                        Int32.TryParse(collection["Milestones[" + i + "].Weight"], out weight);
                        string description = collection["Milestones[" + i + "].Description"];
                        string testCases   = collection["Milestones[" + i + "].TestCases"];
                        db.Milestones.Add(new Milestone()
                        {
                            Title                 = title,
                            Weight                = weight,
                            Description           = description,
                            AssignmentID          = model.ID,
                            TestCases             = testCases,
                            DateCreated           = model.DateCreated,
                            DueDate               = model.DueDate,
                            ProgrammingLanguageID = model.ProgrammingLanguageID
                        });
                        db.SaveChanges();
                    }
                    else if (string.IsNullOrEmpty(collection["Milestones[" + i + "].Title"]))
                    {
                        List <int> IDs = (from m in db.Milestones where m.AssignmentID == model.ID select m.ID).ToList();
                        foreach (var item in IDs)
                        {
                            bool existsInCollection = false;
                            for (int j = 0; j < counter; j++)
                            {
                                int mID;
                                Int32.TryParse(collection["Milestones[" + j + "].ID"], out mID);
                                if (mID == item)
                                {
                                    existsInCollection = true;
                                    break;
                                }
                            }
                            if (!existsInCollection)
                            {
                                Milestone milestoneToDelete = (from m in db.Milestones where m.ID == item select m).FirstOrDefault();
                                db.Milestones.Remove(milestoneToDelete);
                                db.SaveChanges();
                            }
                        }
                    }
                }

                Assignment assignment = db.Assignments.Where(x => x.ID == model.ID).SingleOrDefault();
                if (assignment != null)
                {
                    assignment.Title                 = model.Title;
                    assignment.Description           = model.Description;
                    assignment.DateCreated           = model.DateCreated;
                    assignment.DueDate               = model.DueDate;
                    assignment.ProgrammingLanguageID = model.ProgrammingLanguageID;
                    if (model.File != null)
                    {
                        using (MemoryStream memoryStream = new MemoryStream())
                        {
                            model.File.InputStream.CopyTo(memoryStream);
                            assignment.TestCases = Encoding.ASCII.GetString(memoryStream.ToArray());
                        }
                    }
                    db.SaveChanges();
                }
                return(RedirectToAction("Index"));
            }
            model.programmingLanguages = assignmentService.GetProgrammingLanguages();
            model.Milestones           = new List <AssignmentMilestoneViewModel>();
            return(View(model));
        }
Exemple #9
0
 public ActionResult Create(AssignmentViewModel newData, int counter, FormCollection collection, IEnumerable <HttpPostedFileBase> files)
 {
     #region Security
     SecurityRedirect redirect = accountService.VerifySecurityLevel
                                 (
         auth: User.Identity.IsAuthenticated,
         secLevel: SecurityState.TEACHER,
         userID: User.Identity.GetUserId(),
         courseID: newData.CourseID
                                 );
     if (redirect.Redirect)
     {
         return(RedirectToAction(redirect.ActionName, redirect.ControllerName));
     }
     #endregion
     if (ModelState.IsValid)
     {
         int        tmp        = newData.CourseID;
         Assignment assignemnt = new Assignment {
             CourseID = newData.CourseID, DateCreated = newData.DateCreated, Description = newData.Description, DueDate = newData.DueDate, TestCases = newData.TestCases, ProgrammingLanguageID = newData.ProgrammingLanguageID, Title = newData.Title, Weight = newData.Weight
         };
         db.Assignments.Add(assignemnt);
         db.SaveChanges();
         int assignmentID = (from a in db.Assignments where a.Title == newData.Title && a.CourseID == newData.CourseID select a.ID).FirstOrDefault();
         if (collection.Count <= 10)
         {
             string milestoneZeroTestCases = collection["Milestones[" + 0 + "].TestCases"];
             if (assignmentID != 0)
             {
                 Milestone milestone = new Milestone
                 {
                     Title                 = newData.Title,
                     Weight                = 100,
                     Description           = newData.Description,
                     TestCases             = milestoneZeroTestCases,
                     AssignmentID          = assignmentID,
                     DateCreated           = newData.DateCreated,
                     DueDate               = newData.DueDate,
                     ProgrammingLanguageID = newData.ProgrammingLanguageID
                 };
                 db.Milestones.Add(milestone);
                 db.SaveChanges();
             }
         }
         else
         {
             for (int i = 0; i < counter; i++)
             {
                 string title = collection["Milestones[" + i + "].Title"];
                 int    weight;
                 Int32.TryParse(collection["Milestones[" + i + "].Weight"], out weight);
                 string description = collection["Milestones[" + i + "].Description"];
                 string testCases   = collection["Milestones[" + i + "].TestCases"];
                 if (!string.IsNullOrEmpty(title))
                 {
                     if (assignmentID != 0)
                     {
                         Milestone milestone = new Milestone
                         {
                             Title                 = title,
                             Weight                = weight,
                             Description           = description,
                             TestCases             = testCases,
                             AssignmentID          = assignmentID,
                             DateCreated           = newData.DateCreated,
                             DueDate               = newData.DueDate,
                             ProgrammingLanguageID = newData.ProgrammingLanguageID
                         };
                         db.Milestones.Add(milestone);
                         db.SaveChanges();
                     }
                 }
             }
         }
         return(RedirectToAction("TeacherOverview", new { id = newData.CourseID }));
     }
     newData.programmingLanguages = assignmentService.GetProgrammingLanguages();
     newData.Milestones           = new List <AssignmentMilestoneViewModel>();
     return(View(newData));
 }