Ejemplo n.º 1
0
        public async Task <IActionResult> PutElectiveCourse(int id, ElectiveCourse electiveCourse)
        {
            if (id != electiveCourse.Id)
            {
                return(BadRequest());
            }

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

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

            return(NoContent());
        }
Ejemplo n.º 2
0
        public async Task <ActionResult <ElectiveCourse> > PostElectiveCourse(ElectiveCourse electiveCourse)
        {
            _context.ElectiveCourses.Add(electiveCourse);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetElectiveCourse", new { id = electiveCourse.Id }, electiveCourse));
        }
Ejemplo n.º 3
0
        ElectiveCourse _electiveCourseQueue_Get(ElectiveCourse data)
        {
            ElectiveCourse electiveCourse = _context.ElectiveCourses.Where(i => i.ID == data.ID)
                                            .Include(ec => ec.degreeProgram)
                                            .Include(ec => ec.electiveList)
                                            .First();

            return(electiveCourse);
        }
Ejemplo n.º 4
0
        public void ElectiveCourseEquality()
        {
            ElectiveCourse course1 = new ElectiveCourse()
            {
                ID             = 1,
                electiveListID = 1
            };
            ElectiveCourse course2 = new ElectiveCourse()
            {
                ID             = 1,
                electiveListID = 2
            };

            Assert.AreEqual(course1, course2);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// @russfeld
 /// This uses AJAX to return the HTML code for a new elective course row on the form
 /// Mad props to http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1/
 /// </summary>
 /// <returns></returns>
 public ActionResult ElectiveCourseRow(int id = 0)
 {
     if (id > 0)
     {
         ElectiveCourse elcourse = new ElectiveCourse()
         {
             degreeProgramID = id,
             electiveListID  = -1,
             semester        = 1,
             credits         = 3,
         };
         return(PartialView("ElectiveCourseFormPartial", elcourse));
     }
     else
     {
         return(PartialView("ElectiveCourseFormPartial"));
     }
 }
Ejemplo n.º 6
0
        public ActionResult Edit(DegreeProgram degreeprogram, IEnumerable <RequiredCourse> RequiredCourses, IEnumerable <ElectiveCourse> ElectiveCourses)
        {
            if (ModelState.IsValid)
            {
                DegreeProgram degreeAttached = Request <DegreeProgram> .GetItemByID(degreeprogram.ID, "A", "B");

                degreeprogram.requiredCourses = degreeAttached.requiredCourses;
                degreeprogram.electiveCourses = degreeAttached.electiveCourses;

                if (RequiredCourses == null)
                {
                    RequiredCourses = new List <RequiredCourse>();
                }

                if (ElectiveCourses == null)
                {
                    ElectiveCourses = new List <ElectiveCourse>();
                }

                //figures out which courses were deleted from the form
                LinkedList <RequiredCourse> toRemove = new LinkedList <RequiredCourse>();
                foreach (RequiredCourse course in degreeAttached.requiredCourses)
                {
                    if (course.ID > 0)
                    {
                        if (!RequiredCourses.Contains(course))
                        {
                            RequiredCourse reqcourseAttached = Request <RequiredCourse> .GetItemByID(course.ID, "A", "B");

                            toRemove.AddFirst(reqcourseAttached);
                        }
                    }
                }
                //deletes those courses from the list
                while (toRemove.Count > 0)
                {
                    RequiredCourse removeme = toRemove.First();
                    toRemove.RemoveFirst();
                    Request <RequiredCourse> .Delete(removeme.ID, "A", "B");
                }
                //clears the list
                degreeprogram.requiredCourses = new List <RequiredCourse>();
                //adds the courses that exist to the list
                foreach (RequiredCourse reqcourse in RequiredCourses)
                {
                    RequiredCourse reqcourseAttached = null;;
                    if (reqcourse.ID > 0)
                    {
                        reqcourseAttached = Request <RequiredCourse> .GetItemByID(reqcourse.ID, "A", "B");

                        Request <RequiredCourse> .Update(reqcourseAttached, reqcourse, "A", "B");
                    }
                    else
                    {
                        if (Request <Course> .GetItemByID(reqcourse.courseID, "A", "B") != null)
                        {
                            int id = Request <RequiredCourse> .Add(reqcourse, "A", "B");

                            reqcourseAttached = Request <RequiredCourse> .GetItemByID(id, "A", "B");
                        }
                    }
                    if (reqcourseAttached != null)
                    {
                        degreeprogram.requiredCourses.Add(reqcourseAttached);
                    }
                }

                //figures out which elective lists were deleted from the list
                LinkedList <ElectiveCourse> toRemoveMe = new LinkedList <ElectiveCourse>();
                foreach (ElectiveCourse course in degreeAttached.electiveCourses)
                {
                    if (!ElectiveCourses.Contains(course))
                    {
                        ElectiveCourse elcourseAttached = Request <ElectiveCourse> .GetItemByID(course.ID, "A", "B");

                        toRemoveMe.AddFirst(elcourseAttached);
                    }
                }
                //remove those elective lists from the list
                while (toRemoveMe.Count > 0)
                {
                    ElectiveCourse removeme = toRemoveMe.First();
                    toRemoveMe.RemoveFirst();
                    Request <ElectiveCourse> .Delete(removeme.ID, "A", "B");
                }
                //clear the list
                degreeprogram.electiveCourses = new List <ElectiveCourse>();
                //add the existing elective lists to the list
                foreach (ElectiveCourse elcourse in ElectiveCourses)
                {
                    ElectiveCourse elcourseAttached = null;;
                    if (elcourse.ID > 0)
                    {
                        elcourseAttached = Request <ElectiveCourse> .GetItemByID(elcourse.ID, "A", "B");

                        Request <ElectiveCourse> .Update(elcourseAttached, elcourse, "A", "B");
                    }
                    else
                    {
                        if (Request <ElectiveList> .GetItemByID(elcourse.electiveListID, "A", "B") != null)
                        {
                            int id = Request <ElectiveCourse> .Add(elcourse, "A", "B");

                            elcourseAttached = Request <ElectiveCourse> .GetItemByID(id, "A", "B");
                        }
                    }
                    if (elcourseAttached != null)
                    {
                        degreeprogram.electiveCourses.Add(elcourseAttached);
                    }
                }

                Request <DegreeProgram> .Update(degreeAttached, degreeprogram, "A", "B");

                return(RedirectToAction("Index"));
            }
            if (RequiredCourses != null)
            {
                foreach (RequiredCourse course in RequiredCourses)
                {
                    if (course.courseID > 0)
                    {
                        course.course = Request <Course> .GetItemByID(course.courseID, "A", "B");
                    }
                }
            }
            degreeprogram.requiredCourses = RequiredCourses.ToList();

            if (ElectiveCourses != null)
            {
                foreach (ElectiveCourse course in ElectiveCourses)
                {
                    if (course.electiveListID > 0)
                    {
                        course.electiveList = Request <ElectiveList> .GetItemByID(course.electiveListID, "A", "B");
                    }
                }
            }
            degreeprogram.electiveCourses = ElectiveCourses.ToList();

            return(View(degreeprogram));
        }
Ejemplo n.º 7
0
 void _electiveCourseQueue_Update(ElectiveCourse data)
 {
     Update(data);
 }
Ejemplo n.º 8
0
 ElectiveCourse _electiveCourseQueue_Create(ElectiveCourse data)
 {
     return(Create(data));
 }
Ejemplo n.º 9
0
 void _electiveCourseQueue_Remove(ElectiveCourse data)
 {
     Remove(data);
 }
        protected override void Seed(MessageParser.Models.CourseDBContext context)
        {
            bool seedAll = true;

            if (seedAll)
            {
                string[] semesterTitles = { "January", "Spring", "May", "Summer", "August", "Fall" };

                int semCount = 1;
                for (int i = 2013; i < 2025; i++)
                {
                    for (int k = 0; k < semesterTitles.Length; k++)
                    {
                        if (semesterTitles[k].Equals("Spring") || semesterTitles[k].Equals("Fall"))
                        {
                            context.Semesters.AddOrUpdate(c => c.ID, new Semester()
                            {
                                ID            = semCount++,
                                semesterYear  = i,
                                semesterTitle = semesterTitles[k],
                                standard      = true
                            });
                        }
                        else
                        {
                            context.Semesters.AddOrUpdate(c => c.ID, new Semester()
                            {
                                ID            = semCount++,
                                semesterYear  = i,
                                semesterTitle = semesterTitles[k],
                                standard      = false
                            });
                        }
                    }
                }

                context.SaveChanges();

                String resourceName = "MessageParser.SeedData.";

                XmlTextReader reader   = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_courses.xml"));
                Course        course   = null;
                String        property = null;
                int           count    = 0;
                Boolean       done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.Course"))
                        {
                            course = new Course();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            course.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("prefix"))
                        {
                            course.coursePrefix = reader.Value;
                        }
                        else if (property.Equals("number"))
                        {
                            course.courseNumber = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("title"))
                        {
                            course.courseTitle = reader.Value;
                        }
                        else if (property.Equals("description"))
                        {
                            course.courseDescription = reader.Value;
                        }
                        else if (property.Equals("minHours"))
                        {
                            course.minHours = int.Parse(reader.Value);
                        }
                        else if (property.Equals("maxHours"))
                        {
                            course.maxHours = int.Parse(reader.Value);
                        }
                        else if (property.Equals("variableHours"))
                        {
                            if (reader.Value.Equals("false"))
                            {
                                course.variable = false;
                            }
                            else
                            {
                                course.variable = true;
                            }
                        }
                        else if (property.Equals("ugrad"))
                        {
                            if (reader.Value.Equals("false"))
                            {
                                course.undergrad = false;
                            }
                            else
                            {
                                course.undergrad = true;
                            }
                        }
                        else if (property.Equals("grad"))
                        {
                            if (reader.Value.Equals("false"))
                            {
                                course.graduate = false;
                            }
                            else
                            {
                                course.graduate = true;
                            }
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.Course"))
                        {
                            try
                            {
                                context.Courses.AddOrUpdate(i => i.ID, course);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_electivelists.xml"));
                ElectiveList elist = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.ElectiveList"))
                        {
                            elist = new ElectiveList();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            elist.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("name"))
                        {
                            elist.electiveListName = reader.Value;
                        }
                        else if (property.Equals("shortname"))
                        {
                            elist.shortName = reader.Value;
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.ElectiveList"))
                        {
                            try
                            {
                                context.ElectiveLists.AddOrUpdate(i => i.ID, elist);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_degreeprograms.xml"));
                DegreeProgram dp = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.DegreeProgram"))
                        {
                            dp = new DegreeProgram();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            dp.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("name"))
                        {
                            dp.degreeProgramName = reader.Value;
                        }
                        else if (property.Equals("description"))
                        {
                            dp.degreeProgramDescription = reader.Value;
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.DegreeProgram"))
                        {
                            try
                            {
                                context.DegreePrograms.AddOrUpdate(i => i.ID, dp);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_electivelistcourses.xml"));
                ElectiveListCourse ec = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.ElectiveListCourse"))
                        {
                            ec = new ElectiveListCourse();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            ec.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("course"))
                        {
                            ec.courseID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("electivelist"))
                        {
                            ec.electiveListID = Int32.Parse(reader.Value);
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.ElectiveListCourse"))
                        {
                            try
                            {
                                context.ElectiveListCourses.AddOrUpdate(i => i.ID, ec);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_requiredcourses.xml"));
                RequiredCourse rq = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.RequiredCourse"))
                        {
                            rq = new RequiredCourse();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            rq.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("course"))
                        {
                            rq.courseID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("degree"))
                        {
                            rq.degreeProgramID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("semester"))
                        {
                            rq.semester = Int32.Parse(reader.Value);
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.RequiredCourse"))
                        {
                            try
                            {
                                context.RequiredCourses.AddOrUpdate(i => i.ID, rq);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_electivecourses.xml"));
                ElectiveCourse ecr = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.ElectiveCourse"))
                        {
                            ecr = new ElectiveCourse();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            ecr.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("degree"))
                        {
                            ecr.degreeProgramID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("electivelist"))
                        {
                            ecr.electiveListID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("semester"))
                        {
                            ecr.semester = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("credits"))
                        {
                            ecr.credits = Int32.Parse(reader.Value);
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.ElectiveCourse"))
                        {
                            try
                            {
                                context.ElectiveCourses.AddOrUpdate(i => i.ID, ecr);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();

                reader = new XmlTextReader(Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName + "ksu_prerequisitecourses.xml"));
                PrerequisiteCourse pre = null;
                property = null;
                count    = 0;
                done     = false;
                while (reader.Read() && !done)
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:     // The node is an element.
                        if (reader.Name.Equals("htmlparse.PrerequisiteCourse"))
                        {
                            pre = new PrerequisiteCourse();
                        }
                        else
                        {
                            property = reader.Name;
                        }
                        break;

                    case XmlNodeType.Text:     //Display the text in each element.
                        if (property.Equals("id"))
                        {
                            pre.ID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("prerequisiteCourse"))
                        {
                            pre.prerequisiteCourseID = Int32.Parse(reader.Value);
                        }
                        else if (property.Equals("prerequisiteFor"))
                        {
                            pre.prerequisiteForCourseID = Int32.Parse(reader.Value);
                        }
                        break;

                    case XmlNodeType.EndElement:     //Display the end of the element.
                        if (reader.Name.Equals("htmlparse.PrerequisiteCourse"))
                        {
                            try
                            {
                                context.PrerequisiteCourses.AddOrUpdate(i => i.ID, pre);
                                //if (count++ > 500)
                                //{
                                //    done = true;
                                //}
                            }
                            catch (System.Data.Entity.Validation.DbEntityValidationException ex)
                            {
                                var sb = new System.Text.StringBuilder();
                                foreach (var failure in ex.EntityValidationErrors)
                                {
                                    sb.AppendFormat("{0} failed validation", failure.Entry.Entity.GetType());
                                    foreach (var error in failure.ValidationErrors)
                                    {
                                        sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                                        sb.AppendLine();
                                    }
                                }
                                throw new Exception(sb.ToString());
                            }
                        }
                        break;
                    }
                }
                reader.Close();
                context.SaveChanges();
            }
        }
Ejemplo n.º 11
0
        public ActionResult Edit(DegreeProgram degreeprogram, IEnumerable <RequiredCourse> RequiredCourses, IEnumerable <ElectiveCourse> ElectiveCourses)
        {
            if (ModelState.IsValid)
            {
                //DegreeProgram degreeAttached = degreePrograms.Where(degree => degree.ID == degreeprogram.ID).First();
                DegreeProgram degreeAttached = _degreeProgramProducer.Get(new DegreeProgram()
                {
                    ID = degreeprogram.ID
                });
                degreeprogram.requiredCourses = degreeAttached.requiredCourses;
                degreeprogram.electiveCourses = degreeAttached.electiveCourses;

                if (RequiredCourses == null)
                {
                    RequiredCourses = new List <RequiredCourse>();
                }

                if (ElectiveCourses == null)
                {
                    ElectiveCourses = new List <ElectiveCourse>();
                }

                //figures out which courses were deleted from the form
                LinkedList <RequiredCourse> toRemove = new LinkedList <RequiredCourse>();
                foreach (RequiredCourse course in degreeAttached.requiredCourses)
                {
                    if (course.ID > 0)
                    {
                        if (!RequiredCourses.Contains(course))
                        {
                            //RequiredCourse reqcourseAttached = requiredCourses.Where(reqc => reqc.ID == course.ID).First();
                            RequiredCourse reqcourseAttached = _requiredCourseProducer.Get(new RequiredCourse()
                            {
                                ID = course.ID
                            });
                            toRemove.AddFirst(reqcourseAttached);
                        }
                    }
                }
                //deletes those courses from the list
                while (toRemove.Count > 0)
                {
                    RequiredCourse removeme = toRemove.First();
                    toRemove.RemoveFirst();
                    //requiredCourses.Remove(removeme);
                    _requiredCourseProducer.Remove(removeme);
                }
                //clears the list
                degreeprogram.requiredCourses.Clear();
                //adds the courses that exist to the list
                foreach (RequiredCourse reqcourse in RequiredCourses)
                {
                    RequiredCourse reqcourseAttached = null;;
                    if (reqcourse.ID > 0)
                    {
                        //reqcourseAttached = requiredCourses.Where(reqc => reqc.ID == reqcourse.ID).First();
                        reqcourseAttached = _requiredCourseProducer.Get(new RequiredCourse()
                        {
                            ID = reqcourse.ID
                        });
                        //requiredCourses.UpdateValues(reqcourseAttached, reqcourse);
                        _requiredCourseProducer.Update(reqcourse);
                    }
                    else
                    {
                        //if (courses.Find(reqcourse.courseID) != null)
                        if (_courseProducer.Get(new Course()
                        {
                            ID = reqcourse.courseID
                        }) != null)
                        {
                            //requiredCourses.Add(reqcourse);
                            //requiredCourses.SaveChanges();
                            _requiredCourseProducer.Create(reqcourse);
                            //reqcourseAttached = requiredCourses.Where(reqc => reqc.ID == reqcourse.ID).First();
                            reqcourseAttached = _requiredCourseProducer.Get(new RequiredCourse()
                            {
                                ID = reqcourse.ID
                            });
                        }
                    }
                    if (reqcourseAttached != null)
                    {
                        degreeprogram.requiredCourses.Add(reqcourseAttached);
                    }
                }

                //figures out which elective lists were deleted from the list
                LinkedList <ElectiveCourse> toRemoveMe = new LinkedList <ElectiveCourse>();
                foreach (ElectiveCourse course in degreeAttached.electiveCourses)
                {
                    if (!ElectiveCourses.Contains(course))
                    {
                        //ElectiveCourse elcourseAttached = electiveCourses.Where(elc => elc.ID == course.ID).First();
                        ElectiveCourse elcourseAttached = _electiveCourseProducer.Get(new ElectiveCourse()
                        {
                            ID = course.ID
                        });
                        toRemoveMe.AddFirst(elcourseAttached);
                    }
                }
                //remove those elective lists from the list
                while (toRemoveMe.Count > 0)
                {
                    ElectiveCourse removeme = toRemoveMe.First();
                    toRemoveMe.RemoveFirst();
                    //electiveCourses.Remove(removeme);
                    _electiveCourseProducer.Remove(removeme);
                }
                //clear the list
                degreeprogram.electiveCourses.Clear();
                //add the existing elective lists to the list
                foreach (ElectiveCourse elcourse in ElectiveCourses)
                {
                    ElectiveCourse elcourseAttached = null;;
                    if (elcourse.ID > 0)
                    {
                        //elcourseAttached = electiveCourses.Where(elc => elc.ID == elcourse.ID).First();
                        elcourseAttached = _electiveCourseProducer.Get(new ElectiveCourse()
                        {
                            ID = elcourse.ID
                        });
                        //electiveCourses.UpdateValues(elcourseAttached, elcourse);
                        _electiveCourseProducer.Update(elcourse);
                    }
                    else
                    {
                        //if (electiveLists.Find(elcourse.electiveListID) != null)
                        if (_electiveListProducer.Get(new ElectiveList()
                        {
                            ID = elcourse.electiveListID
                        }) != null)
                        {
                            //electiveCourses.Add(elcourse);
                            //electiveCourses.SaveChanges();
                            _electiveCourseProducer.Create(elcourse);
                            //elcourseAttached = electiveCourses.Where(elc => elc.ID == elcourse.ID).First();
                            elcourseAttached = _electiveCourseProducer.Get(new ElectiveCourse()
                            {
                                ID = elcourse.ID
                            });
                        }
                    }
                    if (elcourseAttached != null)
                    {
                        degreeprogram.electiveCourses.Add(elcourseAttached);
                    }
                }

                //degreePrograms.UpdateValues(degreeAttached, degreeprogram);
                //degreePrograms.SaveChanges();
                _degreeProgramProducer.Update(degreeprogram);
                return(RedirectToAction("Index"));
            }
            if (RequiredCourses != null)
            {
                foreach (RequiredCourse course in RequiredCourses)
                {
                    if (course.courseID > 0)
                    {
                        //course.course = courses.Find(course.courseID);
                        course.course = _courseProducer.Get(new Course()
                        {
                            ID = course.courseID
                        });
                    }
                }
            }
            degreeprogram.requiredCourses = RequiredCourses.ToList();

            if (ElectiveCourses != null)
            {
                foreach (ElectiveCourse course in ElectiveCourses)
                {
                    if (course.electiveListID > 0)
                    {
                        //course.electiveList = electiveLists.Find(course.electiveListID);
                        course.electiveList = _electiveListProducer.Get(new ElectiveList()
                        {
                            ID = course.electiveListID
                        });
                    }
                }
            }
            degreeprogram.electiveCourses = ElectiveCourses.ToList();

            return(View(degreeprogram));
        }
 public Object Update()
 {
     try
     {
         if (request.Type == ModelType.Course)
         {
             Course value   = (request as Request <Course>).RequestedMembers[0];
             Course replace = (request as Request <Course>).RequestedMembers[1];
             return(new Response <Course>(request as Request <Course>, courses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.DegreeProgram)
         {
             DegreeProgram value   = (request as Request <DegreeProgram>).RequestedMembers[0];
             DegreeProgram replace = (request as Request <DegreeProgram>).RequestedMembers[1];
             return(new Response <DegreeProgram>(request as Request <DegreeProgram>, degreePrograms.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.ElectiveCourse)
         {
             ElectiveCourse value   = (request as Request <ElectiveCourse>).RequestedMembers[0];
             ElectiveCourse replace = (request as Request <ElectiveCourse>).RequestedMembers[1];
             return(new Response <ElectiveCourse>(request as Request <ElectiveCourse>, electiveCourses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.ElectiveList)
         {
             ElectiveList value   = (request as Request <ElectiveList>).RequestedMembers[0];
             ElectiveList replace = (request as Request <ElectiveList>).RequestedMembers[1];
             return(new Response <ElectiveList>(request as Request <ElectiveList>, electiveLists.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.ElectiveListCourse)
         {
             ElectiveListCourse value   = (request as Request <ElectiveListCourse>).RequestedMembers[0];
             ElectiveListCourse replace = (request as Request <ElectiveListCourse>).RequestedMembers[1];
             return(new Response <ElectiveListCourse>(request as Request <ElectiveListCourse>, electiveListCourses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.Plan)
         {
             Plan value   = (request as Request <Plan>).RequestedMembers[0];
             Plan replace = (request as Request <Plan>).RequestedMembers[1];
             return(new Response <Plan>(request as Request <Plan>, plans.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.PlanCourse)
         {
             PlanCourse value   = (request as Request <PlanCourse>).RequestedMembers[0];
             PlanCourse replace = (request as Request <PlanCourse>).RequestedMembers[1];
             return(new Response <PlanCourse>(request as Request <PlanCourse>, planCourses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.PrerequisiteCourse)
         {
             PrerequisiteCourse value   = (request as Request <PrerequisiteCourse>).RequestedMembers[0];
             PrerequisiteCourse replace = (request as Request <PrerequisiteCourse>).RequestedMembers[1];
             return(new Response <PrerequisiteCourse>(request as Request <PrerequisiteCourse>, prerequisiteCourses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.RequiredCourse)
         {
             RequiredCourse value   = (request as Request <RequiredCourse>).RequestedMembers[0];
             RequiredCourse replace = (request as Request <RequiredCourse>).RequestedMembers[1];
             return(new Response <RequiredCourse>(request as Request <RequiredCourse>, requiredCourses.UpdateAndSave(value, replace)));
         }
         if (request.Type == ModelType.Semester)
         {
             Semester value   = (request as Request <Semester>).RequestedMembers[0];
             Semester replace = (request as Request <Semester>).RequestedMembers[1];
             return(new Response <Semester>(request as Request <Semester>, semesters.UpdateAndSave(value, replace)));
         }
     }
     catch
     {
         return(null);
     }
     return(null);
 }
 public Object Add()
 {
     try
     {
         if (request.Type == ModelType.Course)
         {
             Course value = (request as Request <Course>).RequestedMembers.First();
             return(new Response <Course>(request as Request <Course>, courses.AddAndSave(value)));
         }
         if (request.Type == ModelType.DegreeProgram)
         {
             DegreeProgram value = (request as Request <DegreeProgram>).RequestedMembers.First();
             return(new Response <DegreeProgram>(request as Request <DegreeProgram>, degreePrograms.AddAndSave(value)));
         }
         if (request.Type == ModelType.ElectiveCourse)
         {
             ElectiveCourse value = (request as Request <ElectiveCourse>).RequestedMembers.First();
             return(new Response <ElectiveCourse>(request as Request <ElectiveCourse>, electiveCourses.AddAndSave(value)));
         }
         if (request.Type == ModelType.ElectiveList)
         {
             ElectiveList value = (request as Request <ElectiveList>).RequestedMembers.First();
             return(new Response <ElectiveList>(request as Request <ElectiveList>, electiveLists.AddAndSave(value)));
         }
         if (request.Type == ModelType.ElectiveListCourse)
         {
             ElectiveListCourse value = (request as Request <ElectiveListCourse>).RequestedMembers.First();
             return(new Response <ElectiveListCourse>(request as Request <ElectiveListCourse>, electiveListCourses.AddAndSave(value)));
         }
         if (request.Type == ModelType.Plan)
         {
             Plan value = (request as Request <Plan>).RequestedMembers.First();
             return(new Response <Plan>(request as Request <Plan>, plans.AddAndSave(value)));
         }
         if (request.Type == ModelType.PlanCourse)
         {
             PlanCourse value = (request as Request <PlanCourse>).RequestedMembers.First();
             return(new Response <PlanCourse>(request as Request <PlanCourse>, planCourses.AddAndSave(value)));
         }
         if (request.Type == ModelType.PrerequisiteCourse)
         {
             PrerequisiteCourse value = (request as Request <PrerequisiteCourse>).RequestedMembers.First();
             return(new Response <PrerequisiteCourse>(request as Request <PrerequisiteCourse>, prerequisiteCourses.AddAndSave(value)));
         }
         if (request.Type == ModelType.RequiredCourse)
         {
             RequiredCourse value = (request as Request <RequiredCourse>).RequestedMembers.First();
             return(new Response <RequiredCourse>(request as Request <RequiredCourse>, requiredCourses.AddAndSave(value)));
         }
         if (request.Type == ModelType.Semester)
         {
             Semester value = (request as Request <Semester>).RequestedMembers.First();
             return(new Response <Semester>(request as Request <Semester>, semesters.AddAndSave(value)));
         }
     }
     catch
     {
         return(null);
     }
     return(null);
 }