// GET: Instructors/Edit/5 public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } InstructorCoursesViewModel instructorCoursesVM = new InstructorCoursesViewModel(); //var instructor = await _context.Instructors.FindAsync(id); instructorCoursesVM.Instructor = await _context.Instructors .Include(i => i.OfficeAssignment) .Include(i => i.CourseAssignments).ThenInclude(i => i.Course) .AsNoTracking() .FirstOrDefaultAsync(m => m.ID == id); if (instructorCoursesVM.Instructor == null) { return(NotFound()); } PopulateAssignedCourseData(instructorCoursesVM.Instructor); instructorCoursesVM.AssignedCourseDataList = this.AssignedCourseDataList; return(View(instructorCoursesVM)); }
public async Task <IActionResult> Edit(int?id, string[] selectedCourses, [Bind("ID,LastName,FirstMidName,HireDate")] Instructor instructor) { if (id != instructor.ID) { return(NotFound()); } InstructorCoursesViewModel instructorCoursesVM = new InstructorCoursesViewModel(); instructorCoursesVM.Instructor = await _context.Instructors .Include(i => i.OfficeAssignment) .Include(i => i.CourseAssignments) .ThenInclude(i => i.Course) .FirstOrDefaultAsync(s => s.ID == id); if (instructorCoursesVM.Instructor == null) { return(NotFound()); } if (await TryUpdateModelAsync <Instructor>( instructorCoursesVM.Instructor, "Instructor", i => i.FirstMidName, i => i.LastName, i => i.HireDate, i => i.OfficeAssignment)) { if (String.IsNullOrWhiteSpace( instructorCoursesVM.Instructor.OfficeAssignment?.Location)) { instructorCoursesVM.Instructor.OfficeAssignment = null; } UpdateInstructorCourses(selectedCourses, instructorCoursesVM.Instructor); try { //_context.Update(instructor); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!InstructorExists(instructor.ID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } //These method calls restore the assigned course data entered on the page, when it is redisplayed with an error message UpdateInstructorCourses(selectedCourses, instructorCoursesVM.Instructor); PopulateAssignedCourseData(instructorCoursesVM.Instructor); instructorCoursesVM.AssignedCourseDataList = this.AssignedCourseDataList; return(View(instructorCoursesVM)); }
// GET: Instructors/Create public IActionResult Create() { InstructorCoursesViewModel instructorCoursesVM = new InstructorCoursesViewModel(); instructorCoursesVM.Instructor = new Instructor(); instructorCoursesVM.Instructor.CourseAssignments = new List <CourseAssignment>(); // Provides an empty collection for the foreach loop // foreach (var course in Model.AssignedCourseDataList) // in the Create Razor page. PopulateAssignedCourseData(instructorCoursesVM.Instructor); instructorCoursesVM.AssignedCourseDataList = this.AssignedCourseDataList; return(View(instructorCoursesVM)); }
public async Task <IActionResult> Create(string[] selectedCourses, [Bind("ID,LastName,FirstMidName,HireDate")] Instructor instructor) { InstructorCoursesViewModel instructorCoursesVM = new InstructorCoursesViewModel(); instructorCoursesVM.Instructor = new Instructor(); if (selectedCourses != null) { instructorCoursesVM.Instructor.CourseAssignments = new List <CourseAssignment>(); foreach (var course in selectedCourses) { var courseToAdd = new CourseAssignment { // Note that only CourseID is populated because InstructorID does not exist // until new instructor is created by SaveChangesAsync() below CourseID = int.Parse(course) }; instructorCoursesVM.Instructor.CourseAssignments.Add(courseToAdd); } } if (await TryUpdateModelAsync <Instructor>( instructorCoursesVM.Instructor, "Instructor", i => i.FirstMidName, i => i.LastName, i => i.HireDate, i => i.OfficeAssignment)) { _context.Instructors.Add(instructorCoursesVM.Instructor); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } // Something went wrong. Redirect to create instructor view PopulateAssignedCourseData(instructorCoursesVM.Instructor); instructorCoursesVM.AssignedCourseDataList = this.AssignedCourseDataList; return(View(instructorCoursesVM)); }