public IHttpActionResult DeleteUser(int id) { User authorizedUser = new Authorize().GetAuthorizedUser(Request.Headers.GetCookies("user").FirstOrDefault()); if (authorizedUser == null || authorizedUser.Id != id) { return(Unauthorized()); } User user = db.Users.Find(id); if (user == null) { return(NotFound()); } if ((user.GetTeacher() != null && user.GetTeacher().Courses.Count > 0) || (user.GetTutor() != null && user.GetTutor().Lessons.Count > 0) || (user.GetStudent() != null && user.GetStudent().GroupMemberships.Count > 0)) { return(BadRequest()); } ICollection <object> entities = new HashSet <object>(); foreach (Role role in user.Roles) { entities.Add(role); } entities.Add(user); string error = db.UpdateAll(entities, Deleted); if (error != null) { return(BadRequest(error)); } return(Redirect("https://" + Request.RequestUri.Host + ":" + Request.RequestUri.Port + "/Logout")); }
public IHttpActionResult PostAssignment(AssignmentDetailTeacherDTO assignmentDTO) { Authorize auth = new Authorize(); User authorizedUser = auth.GetAuthorizedUser(Request.Headers.GetCookies("user").FirstOrDefault()); if (authorizedUser == null || authorizedUser.GetTeacher() == null) { return(Unauthorized()); } Course course = db.Courses.Find(assignmentDTO.NewCourseId); if (!"Teacher".Equals(auth.GetAccessRole(authorizedUser, course))) { return(Unauthorized()); } Assignment derived = null; if (assignmentDTO.NewIsDerived) { if (assignmentDTO.NewDerivedFromName == null) { return(BadRequest()); } foreach (Assignment otherAssignment in course.Assignments) { if (assignmentDTO.NewDerivedFromName.Equals(otherAssignment.Name)) { derived = otherAssignment; break; } } if (derived == null) { return(BadRequest()); } } if (!ModelState.IsValid || course == null || !assignmentDTO.Validate(null, derived)) { return(BadRequest()); } ICollection <object> objects = assignmentDTO.Create(derived); string error = db.UpdateAll(objects, Added); if (error != null) { return(BadRequest(error)); } return(Redirect("https://" + Request.RequestUri.Host + ":" + Request.RequestUri.Port + "/Courses/" + course.Id)); }
public IHttpActionResult DeleteGradingScheme(int id) { Authorize auth = new Authorize(); User authorizedUser = auth.GetAuthorizedUser(Request.Headers.GetCookies("user").FirstOrDefault()); if (authorizedUser == null || authorizedUser.GetTeacher() == null) { return(Unauthorized()); } GradingScheme scheme = db.GradingSchemes.Find(id); if (scheme == null) { return(NotFound()); } bool authorized = scheme.Courses.Count == 0; if (!authorized) { foreach (Course course in scheme.Courses) { if ("Teacher".Equals(auth.GetAccessRole(authorizedUser, course))) { authorized = true; break; } } } if (!authorized) { return(Unauthorized()); } ICollection <object> entities = new HashSet <object>(); foreach (Grade grade in scheme.Grades) { entities.Add(grade); } entities.Add(scheme); string error = db.UpdateAll(entities, Deleted); if (error != null) { return(BadRequest(error)); } return(StatusCode(HttpStatusCode.NoContent)); }
public IHttpActionResult PostGroupMembership(GroupMembershipDTO membershipDTO) { User authorizedUser = new Authorize().GetAuthorizedUser(Request.Headers.GetCookies("user").FirstOrDefault()); if (authorizedUser == null || authorizedUser.GetStudent() == null) { return(Unauthorized()); } Student student = authorizedUser.GetStudent(); Assignment assignment = db.Assignments.Find(membershipDTO.NewAssignmentId); if (assignment == null || assignment.Lessons == null) { return(BadRequest()); } Lesson lesson = null; Group group = null; if (membershipDTO.NewLessonNumber > 0) { foreach (Lesson otherLesson in assignment.Lessons) { if (membershipDTO.NewLessonNumber == otherLesson.Number) { lesson = otherLesson; break; } } if (lesson == null) { return(BadRequest()); } } else if (membershipDTO.NewGroupNumber > 0) { lesson = null; foreach (Lesson otherLesson in assignment.Lessons) { if (otherLesson.Groups != null) { foreach (Group otherGroup in otherLesson.Groups) { if (membershipDTO.NewGroupNumber == otherGroup.Number) { group = otherGroup; lesson = otherLesson; break; } } } if (group != null) { break; } } if (group == null || lesson == null) { return(BadRequest()); } } if (!ModelState.IsValid || lesson == null || lesson.Assignment == null || lesson.Assignment.Course == null) { return(BadRequest()); } if (!membershipDTO.Validate(student, group, lesson.Assignment)) { return(BadRequest()); } ICollection <object> memberships = membershipDTO.Create(student, group, lesson); string error = db.UpdateAll(memberships, Added); if (error != null) { return(BadRequest(error)); } return(Redirect("https://" + Request.RequestUri.Host + ":" + Request.RequestUri.Port + "/Assignments/" + lesson.Assignment.Id)); }