public ActionResult Edit(ElectiveList electivelist, IEnumerable <ElectiveListCourse> ElectiveListCourses) { if (ModelState.IsValid) { ElectiveList elistAttached = Request <ElectiveList> .GetItemByID(electivelist.ID, "A", "B"); electivelist.courses = elistAttached.courses; if (ElectiveListCourses == null) { ElectiveListCourses = new List <ElectiveListCourse>(); } //figure out the courses that were removed from the list LinkedList <ElectiveListCourse> toRemove = new LinkedList <ElectiveListCourse>(); foreach (ElectiveListCourse course in elistAttached.courses) { if (course.ID > 0) { if (!ElectiveListCourses.Contains(course)) { ElectiveListCourse elcourseAttached = Request <ElectiveListCourse> .GetItemByID(course.ID, "A", "B"); toRemove.AddFirst(elcourseAttached); } } } //remove those courses from the database while (toRemove.Count > 0) { ElectiveListCourse removeme = toRemove.First(); toRemove.RemoveFirst(); Request <ElectiveListCourse> .Delete(removeme.ID, "A", "B"); } //clear the list electivelist.courses = new List <ElectiveListCourse>(); //add the existing courses to the database foreach (ElectiveListCourse elcourse in ElectiveListCourses) { ElectiveListCourse elcourseAttached = null;; if (elcourse.ID > 0) { elcourseAttached = Request <ElectiveListCourse> .GetItemByID(elcourse.ID, "A", "B"); Request <ElectiveListCourse> .Update(elcourseAttached, elcourse, "A", "B"); } else { if (courses.Find(elcourse.courseID) != null) { int id = Request <ElectiveListCourse> .Add(elcourse, "A", "B"); elcourseAttached = Request <ElectiveListCourse> .GetItemByID(id, "A", "B"); } } if (elcourseAttached != null) { electivelist.courses.Add(elcourseAttached); } } Request <ElectiveList> .Update(elistAttached, electivelist, "A", "B"); return(RedirectToAction("Index")); } if (ElectiveListCourses != null) { foreach (ElectiveListCourse course in ElectiveListCourses) { if (course.courseID > 0) { course.course = Request <Course> .GetItemByID(course.courseID, "A", "B"); } } } electivelist.courses = ElectiveListCourses.ToList(); return(View(electivelist)); }
public ActionResult Edit(ElectiveList electivelist, IEnumerable <ElectiveListCourse> ElectiveListCourses) { if (ModelState.IsValid) { //ElectiveList elistAttached = electiveLists.Where(elist => elist.ID == electivelist.ID).First(); ElectiveList elistAttached = _electiveListProducer.Get(new ElectiveList() { ID = electivelist.ID }); electivelist.courses = elistAttached.courses; if (ElectiveListCourses == null) { ElectiveListCourses = new List <ElectiveListCourse>(); } //figure out the courses that were removed from the list LinkedList <ElectiveListCourse> toRemove = new LinkedList <ElectiveListCourse>(); foreach (ElectiveListCourse course in elistAttached.courses) { if (course.ID > 0) { if (!ElectiveListCourses.Contains(course)) { //ElectiveListCourse elcourseAttached = electiveListCourses.Where(reqc => reqc.ID == course.ID).First(); ElectiveListCourse elcourseAttached = _electiveListCourseProducer.Get(new ElectiveListCourse() { ID = course.ID }); toRemove.AddFirst(elcourseAttached); } } } //remove those courses from the database while (toRemove.Count > 0) { ElectiveListCourse removeme = toRemove.First(); toRemove.RemoveFirst(); //electiveListCourses.Remove(removeme); _electiveListCourseProducer.Remove(removeme); } //clear the list electivelist.courses.Clear(); //add the existing courses to the database foreach (ElectiveListCourse elcourse in ElectiveListCourses) { ElectiveListCourse elcourseAttached = null;; if (elcourse.ID > 0) { //elcourseAttached = electiveListCourses.Where(reqc => reqc.ID == elcourse.ID).First(); elcourseAttached = _electiveListCourseProducer.Get(new ElectiveListCourse() { ID = elcourse.ID }); //electiveListCourses.UpdateValues(elcourseAttached, elcourse); _electiveListCourseProducer.Update(elcourse); } else { //if (courses.Find(elcourse.courseID) != null) if (_courseProducer.Get(new Course() { ID = elcourse.courseID }) != null) { //electiveListCourses.Add(elcourse); //electiveListCourses.SaveChanges(); _electiveListCourseProducer.Create(elcourse); //elcourseAttached = electiveListCourses.Where(reqc => reqc.ID == elcourse.ID).First(); elcourseAttached = _electiveListCourseProducer.Get(new ElectiveListCourse() { ID = elcourse.ID }); } } if (elcourseAttached != null) { electivelist.courses.Add(elcourseAttached); } } //electiveLists.UpdateValues(elistAttached, electivelist); //electiveLists.SaveChanges(); _electiveListProducer.Update(electivelist); return(RedirectToAction("Index")); } if (ElectiveListCourses != null) { foreach (ElectiveListCourse course in ElectiveListCourses) { if (course.courseID > 0) { //course.course = courses.Find(course.courseID); course.course = _courseProducer.Get(new Course() { ID = course.courseID }); } } } electivelist.courses = ElectiveListCourses.ToList(); return(View(electivelist)); }