public async Task <IActionResult> Enroll(int courseid) { var course = _context.Course.Where(s => s.Id == courseid).Include(m => m.Students).Include(c => c.FirstTeacher) .Include(c => c.SecondTeacher).First(); if (course == null) { return(NotFound()); } IEnumerable <Student> students = _context.Student.AsEnumerable(); students = students.OrderBy(s => s.FullName); AddStudentVM viewmodel = new AddStudentVM { Course = course, SelectedStudents = course.Students.Select(c => c.StudentId), StudentList = new MultiSelectList(students, "Id", "FullName"), Year = 0 }; ViewData["FirstTeacherId"] = new SelectList(_context.Set <Teacher>(), "Id", "FullName", course.FirstTeacherId); ViewData["SecondTeacherId"] = new SelectList(_context.Set <Teacher>(), "Id", "FullName", course.SecondTeacherId); return(View(viewmodel)); }
public async Task <IActionResult> Enroll(int id, AddStudentVM viewmodel) { if (id != viewmodel.Course.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(viewmodel.Course); await _context.SaveChangesAsync(); IEnumerable <long> listStudents = viewmodel.SelectedStudents; IQueryable <Enrollment> toBeRemoved = _context.Enrollment.Where(s => !listStudents.Contains(s.StudentId) && s.CourseId == id); _context.Enrollment.RemoveRange(toBeRemoved); IEnumerable <long> existStudents = _context.Enrollment.Where(s => listStudents.Contains(s.StudentId) && s.CourseId == id).Select(s => s.StudentId); IEnumerable <long> newStudents = listStudents.Where(s => !existStudents.Contains(s)); foreach (long studentId in newStudents) { _context.Enrollment.Add(new Enrollment { StudentId = studentId, CourseId = id, Semester = viewmodel.Semester, Year = viewmodel.Year, Grade = 0, SeminalUrl = "", ProjectUrl = "", ExamPoints = 0, SeminalPoints = 0, ProjectPoints = 0, AdditionalPoints = 0, FinishDate = DateTime.Parse("2000-1-01") }); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseExists(viewmodel.Course.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["CourseId"] = new SelectList(_context.Course, "Id", "Title", viewmodel.Course.Id); //ViewData["StudentId"] = new SelectList(_context.Student, "Id", "FullName", viewmodel.Enrollment.StudentId); return(View(viewmodel)); }
public ActionResult Enroll() { var model = new AddStudentVM { Courses = this.service.GetAllCourses() }; string userName = this.User.Identity.Name; return(this.View(model)); }