public ActionResult Index(Guid?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            var course = db.Courses.Find(id);

            if (course == null)
            {
                return(HttpNotFound());
            }

            if (!isMember(id) && !isCourseCreator(course))
            {
                return(RedirectToAction("Index", "Course", new { id = id }));
            }

            var model = new CourseAssignments {
                CourseInfo    = course,
                CanEdit       = isCourseCreator(course),
                CanUpload     = isMember(course.Id),
                CurrentUserId = User.GetPrincipal()?.User.Id
            };

            model.AssignmentList = db.Assignments.Include("Uploads").Include("Uploads.Owner").Where(a => a.Course.Id == id).ToList();

            return(View(model));
        }
Пример #2
0
        private void UpdateInstructorCourses(string[] selectedCourses, IEnumerable <Course> courses)
        {
            if (selectedCourses == null)
            {
                CourseAssignments = new List <CourseAssignment>();
                return;
            }

            var selectedCoursesHS = new HashSet <string>(selectedCourses);
            var instructorCourses = new HashSet <int>
                                        (CourseAssignments.Select(c => c.CourseID));

            foreach (var course in courses)
            {
                if (selectedCoursesHS.Contains(course.Id.ToString()))
                {
                    if (!instructorCourses.Contains(course.Id))
                    {
                        CourseAssignments.Add(new CourseAssignment {
                            Course = course, Instructor = this
                        });
                    }
                }
                else
                {
                    if (instructorCourses.Contains(course.Id))
                    {
                        var toRemove = CourseAssignments.Single(ci => ci.CourseID == course.Id);
                        CourseAssignments.Remove(toRemove);
                    }
                }
            }
        }
Пример #3
0
        public void UpdateTalksForCourse()
        {
            // add talks for every course recurrence
            var currentDate    = StartDate;
            var createdTalks   = new List <Talk>();
            var executionCount = 1;

            while (currentDate <= EndDate)
            {
                var talk = Talks.SingleOrDefault(t => t.DateOfPresentation == currentDate);
                if (talk == null)
                {
                    talk = new Talk
                    {
                        Title              = Title,
                        CourseId           = Id,
                        DateOfPresentation = currentDate,
                        InstructorId       = CourseAssignments.First().InstructorID,
                        Description        = $"Course execution {executionCount++}",
                    };

                    Talks.Add(talk);

                    currentDate = currentDate.AddDays(7);
                }
            }
        }
Пример #4
0
        private void UpdateInstructorCourses(IEnumerable <CreateEdit.Command.CourseData> courses)
        {
            var assignedCourseIds = courses
                                    .Where(x => x.Assigned).Select(x => x.Id)
                                    .ToArray();

            var removedCourses = CourseAssignments
                                 .Where(x => !assignedCourseIds.Contains(x.CourseId))
                                 .ToArray();

            var previouslyAssignedCourseIds = CourseAssignments
                                              .Select(x => x.CourseId)
                                              .ToArray();

            var addedCourses = assignedCourseIds
                               .Where(x => !previouslyAssignedCourseIds.Contains(x))
                               .Select(x => new CourseAssignment {
                CourseId = x, InstructorId = Id
            })
                               .ToArray();

            foreach (var removedCourse in removedCourses)
            {
                CourseAssignments.Remove(removedCourse);
            }

            foreach (var addedCourse in addedCourses)
            {
                CourseAssignments.Add(addedCourse);
            }
        }
Пример #5
0
        public async Task <IActionResult> PostCourseAssignments([FromBody] CourseAssignments courseAssignments)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            _context.CourseAsignmentss.Add(courseAssignments);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetCourseAssignments", new { id = courseAssignments.Assignment_Name }, courseAssignments));
        }
Пример #6
0
        public async Task <IActionResult> PutCourseAssignments([FromRoute] string id, [FromBody] CourseAssignments courseAssignments)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != courseAssignments.Assignment_Name)
            {
                return(BadRequest());
            }

            _context.Entry(courseAssignments).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!CourseAssignmentsExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }