/// <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); }
/// <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 })); }
/// <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)); }
/// <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)); }
/// <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)); }
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)); }
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)); }