public ActionResult Index(string YourDropDown)
        {
            var studentID = User.Identity.GetUserName();
            Student_Enrollment_Entities student_EnrollmentEntities = new Student_Enrollment_Entities();

            if (student_EnrollmentEntities.Students.Find(studentID) == null)
            {
                var newStudent = new Student {
                    Student_email = studentID
                };
                student_EnrollmentEntities.Students.Add(newStudent);
                student_EnrollmentEntities.SaveChanges();
            }

            string selected = Request.Form["YourDropDown"];

            if (selected == "COEN")
            {
                Sequential COEN = student_EnrollmentEntities.Sequentials.FirstOrDefault(x => x.SequentialID == 100);
                student_EnrollmentEntities.Students.FirstOrDefault(x => x.Student_email == studentID).Sequentials.Add(COEN);
            }
            else if (selected == "ELEN")
            {
                Sequential ELEN = student_EnrollmentEntities.Sequentials.FirstOrDefault(x => x.SequentialID == 101);
                student_EnrollmentEntities.Students.FirstOrDefault(x => x.Student_email == studentID).Sequentials.Add(ELEN);
            }
            student_EnrollmentEntities.SaveChanges();
            return(View());
        }
        public ActionResult Remaining()
        {
            string    currentStudent = User.Identity.GetUserName();
            DataTable dt             = new DataTable();

            dt.Columns.Add("CourseID");
            dt.Columns.Add("Course Name");
            dt.Columns.Add("Credits");
            dt.Columns.Add("Sequential ID");
            dt.Columns.Add("Sequential Name");
            dt.Columns.Add("Term");
            DataRow row = null;

            Student_Enrollment_Entities db = new Student_Enrollment_Entities();
            //list of course id in Grades ONLY
            var gradeToList = (from g in db.Grades
                               where g.Student_email == currentStudent
                               select new { g.Course_ID }).ToList();

            //Junction table SequentialToStudent
            var query = (from s in db.Sequentials
                         where s.Students.Any(c => c.Student_email == currentStudent)
                         select new { currentStudent, s.SequentialID, s.Sequential_Name });


            //Join SequentialToStudent to ProgramToCourses on SequentialID
            var query1 = from a in query
                         from b in db.Program_Course
                         where a.SequentialID == b.SequentialID
                         select new { currentStudent, a.SequentialID, a.Sequential_Name, b.Course_ID, b.TermID };

            //Outer join with Grades (list of courses only)
            var query2 = (from a in query
                          from b in query1
                          where a.SequentialID == b.SequentialID
                          select new { b.Course_ID }).ToList().Except(gradeToList);

            //Query2 with Query1 to get info for student/courses, but only on remaining classes (no course name/credits tho)
            var query3 = from a in query2
                         from c in query1
                         where a.Course_ID == c.Course_ID
                         orderby c.TermID
                         select new { c.Course_ID, c.SequentialID, c.Sequential_Name, c.TermID };

            //Query3 with Courses to get additional info
            var query4 = from a in query3
                         from c in db.Courses
                         where a.Course_ID == c.Course_ID
                         orderby a.TermID
                         select new { a.Course_ID, c.Course_name, c.Credits, a.SequentialID, a.Sequential_Name, a.TermID };


            foreach (var rowObj in query4)
            {
                row = dt.NewRow();
                dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits, rowObj.SequentialID, rowObj.Sequential_Name, rowObj.TermID);
            }

            return(View(dt));
        }
        public ActionResult Suggested()
        {
            string    currentStudent = User.Identity.GetUserName();
            DataTable dt             = new DataTable();

            dt.Columns.Add("CourseID");
            dt.Columns.Add("Course Name");
            dt.Columns.Add("Credits");
            //dt.Columns.Add("Sequential ID");
            //dt.Columns.Add("Sequential Name");
            //dt.Columns.Add("Term");
            DataRow row = null;

            int totalCredit;

            Student_Enrollment_Entities db = new Student_Enrollment_Entities();
            //list of course id in Grades ONLY
            var gradeToList = (from g in db.Grades
                               where g.Student_email == currentStudent
                               select new { g.Course_ID }).ToList();

            //list of course id in Grade, then of only credit value, and sum them
            var courseFromGrade = from a in db.Grades
                                  where a.Student_email == currentStudent
                                  select new { a.Course_ID };

            var creditCount = from a in courseFromGrade
                              from c in db.Courses
                              where a.Course_ID == c.Course_ID
                              select new { c.Credits };

            if (creditCount.Count() == 0)
            {
                totalCredit = 0;
            }
            else
            {
                totalCredit = creditCount.Sum(x => x.Credits);
            }

            //Junction table SequentialToStudent
            var query = (from s in db.Sequentials
                         where s.Students.Any(c => c.Student_email == currentStudent)
                         select new { currentStudent, s.SequentialID, s.Sequential_Name });


            //Join SequentialToStudent to ProgramToCourses on SequentialID
            var query1 = from a in query
                         from b in db.Program_Course
                         where a.SequentialID == b.SequentialID
                         select new { currentStudent, a.SequentialID, a.Sequential_Name, b.Course_ID, b.TermID };

            //Outer join with Grades (list of courses only)
            var query2 = (from a in query
                          from b in query1
                          where a.SequentialID == b.SequentialID
                          select new { b.Course_ID }).ToList().Except(gradeToList);

            //Query2 with Query1 to get info for student/courses, but only on remaining classes (no course name/credits tho)
            var query3 = from a in query2
                         from c in query1
                         where a.Course_ID == c.Course_ID
                         orderby c.TermID
                         select new { c.Course_ID, c.SequentialID, c.Sequential_Name, c.TermID };


            if (totalCredit == 0 && totalCredit < 14)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 1
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 17)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 2
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 53)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 3
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 71)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 4
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 89)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 5
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 107)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 6
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 125)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 7
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }
            else if (totalCredit < 143)
            {
                //Query3 with Courses to get additional info
                var query4 = from a in query3
                             from c in db.Courses
                             where a.Course_ID == c.Course_ID & a.TermID == 8
                             orderby a.TermID
                             select new { a.Course_ID, c.Course_name, c.Credits };
                foreach (var rowObj in query4)
                {
                    row = dt.NewRow();
                    dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits);
                }
            }

            /*foreach (var rowObj in query4)
             * {
             *  row = dt.NewRow();
             *  dt.Rows.Add(rowObj.Course_ID, rowObj.Course_name, rowObj.Credits, rowObj.SequentialID, rowObj.Sequential_Name, rowObj.TermID);
             * }*/

            return(View(dt));
        }