// GET: Courses/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } var course = _context.Course.Where(c => c.ID == id).Include(c => c.Enrollments).First(); if (course == null) { return(NotFound()); } EnrollmentsViewModel viewmodel = new EnrollmentsViewModel { course = course, studentList = new MultiSelectList(_context.Student.OrderBy(s => s.lastName), "ID", "fullName"), selectedStudents = course.Enrollments.Select(ss => ss.studentID) }; ViewData["firstTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", course.firstTeacherID); ViewData["secondTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", course.secondTeacherID); return(View(viewmodel)); }
public async Task <IActionResult> AdminCreate([Bind("Year,Semester,CourseId,StudentIds")] EnrollmentsViewModel viewmodel) { if (ModelState.IsValid) { foreach (int id in viewmodel.StudentIds) { Enrollment e = await _context.Enrollment .FirstOrDefaultAsync(e => e.StudentId == id && e.CourseId == viewmodel.CourseId && e.Year == viewmodel.Year && e.Semester == viewmodel.Semester); if (e == null) { e = new Enrollment { StudentId = id, CourseId = viewmodel.CourseId, Year = viewmodel.Year, Semester = viewmodel.Semester }; _context.Add(e); } } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CourseIds"] = new SelectList(_context.Course, "Id", "Title", viewmodel.CourseId); ViewData["StudentIds"] = new SelectList(_context.Student, "Id", "FullName", viewmodel.StudentIds); return(View(viewmodel)); }
private void PopulateSelectLists(EnrollmentsViewModel model) { model.EnrollmentStatuses = _db.EnrollmentStatuses .OrderBy(es => es.Name) .Select(es => new SelectListItem { Text = es.Name, Value = es.EnrollmentStatusId.ToString() }) .ToList(); model.Students = _db.Students .OrderBy(s => s.LastName) .ThenBy(s => s.FirstName) .Select(s => new SelectListItem { Text = $"{s.LastName}, {s.FirstName}", Value = s.StudentId.ToString() }) .ToList(); model.Programs = _db.Programs .Include(e => e.ProgramType) .Include(e => e.Semester) .Include(p => p.PointOfContactProfessional) .Include(p => p.PointOfContactProfessional.Company) .OrderBy(p => p.AvailabilityDate) .Select(p => new SelectListItem { Text = $"{p.PointOfContactProfessional.Company.Name} - {p.ProgramType.Name} ({p.StartDate} - {p.EndDate})", Value = p.ProgramId.ToString() }) .ToList(); }
public async Task <IActionResult> Save(EnrollmentsViewModel model) { if (!ModelState.IsValid) { PopulateSelectLists(model); return(View("Edit", model)); } if (model.EnrollmentId == default(int)) { var enrollment = new Enrollments(); model.ApplyTo(enrollment); _db.Enrollments.Add(enrollment); } else { var enrollment = await _db.Enrollments.FindAsync(model.EnrollmentId); model.ApplyTo(enrollment); } await _db.SaveChangesAsync(); return(RedirectToAction("List")); }
public async Task <IActionResult> Edit(int?enrollmentId) { var enrollment = enrollmentId.HasValue ? await _db.Enrollments.FindAsync(enrollmentId) : new Enrollments(); var viewModel = new EnrollmentsViewModel(enrollment); PopulateSelectLists(viewModel); return(View(viewModel)); }
public async Task <IActionResult> PutCourse(int id, EnrollmentsViewModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != model.course.ID) { return(BadRequest()); } //Ne se sekjavam sto sum pravel... _context.Entry(model.course).State = EntityState.Modified; try { await _context.SaveChangesAsync(); IEnumerable <long> listStudents = model.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 (int studentId in newStudents) { _context.Enrollment.Add(new Enrollment { studentID = studentId, courseID = id }); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> Edit(int id, EnrollmentsViewModel 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 (int studentId in newStudents) { _context.Enrollment.Add(new Enrollment { studentID = studentId, courseID = id }); } await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!CourseExists(viewmodel.course.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["firstTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", viewmodel.course.firstTeacherID); ViewData["secondTeacherID"] = new SelectList(_context.Teacher, "ID", "fullName", viewmodel.course.secondTeacherID); return(View(viewmodel)); }