コード例 #1
0
        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"));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }