private GPFSession GPFSessionRead(SqlDataReader reader) { if (reader == null) { return(null); } GPFSession session = new GPFSession(); if (reader.HasRows) { while (reader.Read()) { session.Id = (int)reader["gpf_id"]; session.Account = new Account() { Id = (int)reader["acc_id"] }; if (reader["deg_id"] != DBNull.Value) { session.Degree = new Degree() { Id = (int)reader["deg_id"] } } ; if (reader["con_id"] != DBNull.Value) { session.Concentration = new Concentration() { Id = (int)reader["con_id"] } } ; if (reader["gpf_entering_year"] != DBNull.Value && reader["gpf_entering_quarter"] != DBNull.Value) { session.EnteringTerm = new AcademicTerm((int)reader["gpf_entering_year"], reader["gpf_entering_quarter"].ToString().Trim()); } if (reader["gpf_classes_per_quarter"] != DBNull.Value) { session.ClassesPerQuarter = (int)reader["gpf_classes_per_quarter"]; } if (reader["gpf_class_delivery"] != DBNull.Value) { session.ClassDeliveryOption = ClassDelivery.GetClassDelivery(reader["gpf_class_delivery"].ToString().Trim()); } } } return(session); }
public ActionResult Options(GPFViewModel viewModel) { GPFSession session = viewModel.GPFSession; session.EnteringTerm = new AcademicTerm(viewModel.EnteringYear, viewModel.EnteringQuarter); session.ClassesPerQuarter = viewModel.ClassesPerQuarter; session.ClassDeliveryOption = ClassDelivery.GetClassDelivery(viewModel.ClassDeliveryOption); session.ConcentrationCoursesSelected = new List <Course>(); if (viewModel.ConcentrationCoursesSelected != null) { viewModel.ConcentrationCoursesSelected = viewModel.ConcentrationCoursesSelected.Take(4).ToList(); foreach (int courseId in viewModel.ConcentrationCoursesSelected) { session.ConcentrationCoursesSelected.Add(new Course() { Id = courseId }); } } session.ElectiveCoursesSelected = new List <Course>(); if (viewModel.ElectiveCoursesSelected != null) { viewModel.ElectiveCoursesSelected = viewModel.ElectiveCoursesSelected.Take(4).ToList(); foreach (int courseId in viewModel.ElectiveCoursesSelected) { session.ElectiveCoursesSelected.Add(new Course() { Id = courseId }); } } Account account = GetAuthCookieAccount(); Account impersonateAccount = Statics.ImpersonateGet(Session); if (impersonateAccount != null) { account = impersonateAccount; } if (account != null && account.Id > 0) { session.Account = account; _gpfService.SaveSession(session); } TempData["GPFSession"] = session; return(RedirectToAction("Schedule", "GPF")); }
public GPFSession GetSessionById(int sessionId) { string command = GPFSessionSelect() + $@" WHERE gpf.gpf_id = '{sessionId}' "; DatabaseService service = new DatabaseService(); SqlDataReader reader = service.Read(command); GPFSession session = GPFSessionRead(reader); service.Close(); return(session); }
public ActionResult Schedule() { GPFSession session = (GPFSession)TempData["GPFSession"]; if (session == null) { return(RedirectToAction("Options", "GPF")); } session.Degree = _degreeService.GetDegreeById(session.Degree.Id); session.Concentration = session.Degree.Concentrations.Find(x => x.Id == session.Concentration.Id); GPFSchedule schedule = _gpfService.GetSessionSchedule(session); GPFViewModel model = new GPFViewModel() { GPFSession = session, GPFSchedule = schedule }; return(View(model)); }
public bool SaveSession(GPFSession session) { string command = $@" INSERT INTO dbo.tblGPFSession ( acc_id, deg_id, con_id, gpf_entering_year, gpf_entering_quarter, gpf_classes_per_quarter, gpf_class_delivery ) SELECT acc.acc_id, '{session.Degree.Id}', '{session.Concentration.Id}', '{session.EnteringTerm.Year}', '{session.EnteringTerm.Quarter.Value}', '{session.ClassesPerQuarter}', '{session.ClassDeliveryOption.Value}' FROM dbo.tblAccount acc WHERE acc.acc_id = '{session.Account.Id}' "; DatabaseService service = new DatabaseService(); int rowsAffected = service.Write(command); service.Close(); if (rowsAffected > 0) { return(true); } else { return(false); } }
public GPFSchedule GetSessionSchedule(GPFSession session) { List <int> toTake = new List <int>(); List <int> missing = new List <int>(); List <Course> temp; decimal hours = 0; //add major courses based on session CourseService crsServ = new CourseService(); List <Course> majorCourses = crsServ.GetCoursesRequiredByDegree(session.Degree.Id); //populate course ids list from session List <Course> courseids = new List <Course>(session.ConcentrationCoursesSelected.Count + session.ElectiveCoursesSelected.Count + majorCourses.Count); courseids.AddRange(majorCourses); courseids.AddRange(session.ConcentrationCoursesSelected); courseids.AddRange(session.ElectiveCoursesSelected); //list of full course objects List <Course> courses = new List <Course>(courseids.Count); //Convert each course from an id to a full course object foreach (Course course in courseids) { courses.Add(crsServ.GetCoursesById(course.Id)); toTake.Add(course.Id); } foreach (Course course in courses) { course.Prerequisites = crsServ.GetCoursePrereqs(course.Id); if (course.Prerequisites == null) { course.Prerequisites = new List <Course>(); } } //add any missing prereqs foreach (Course course in courses) { foreach (Course pre in course.Prerequisites) { if (!toTake.Contains(pre.Id)) { missing.Add(pre.Id); } } } while (missing.Count > 0) { foreach (int misId in missing.ToArray()) { Course toAdd = crsServ.GetCoursesById(misId); toAdd.Prerequisites = crsServ.GetCoursePrereqs(misId); if (toAdd.Prerequisites == null) { toAdd.Prerequisites = new List <Course>(); } courses.Add(toAdd); toTake.Add(misId); missing.Remove(misId); } foreach (Course course in courses) { foreach (Course pre in course.Prerequisites) { if (!toTake.Contains(pre.Id)) { missing.Add(pre.Id); } } } } //remove any duplicates temp = new List <Course>(); foreach (Course course in courses) { if (!course.isContainedBy(temp)) { temp.Add(course); } } courses.Clear(); courses.AddRange(temp); //determine number of hours being taken foreach (Course course in courses) { hours += course.Units; } //if less than 48 are being taken, add new concentration classes until at least 48 hours worth of classes are there if (hours < 48) { int count = 0; List <Course> extras = crsServ.GetCoursesByConcentration(session.Concentration.Id); foreach (Course course in extras) { course.Prerequisites = crsServ.GetCoursePrereqs(course.Id); if (course.Prerequisites == null) { course.Prerequisites = new List <Course>(); } } while (hours < 48) { if (!extras[count].isContainedBy(courses) && extras[count].Prerequisites.Count == 0) { courses.Add(extras[count]); toTake.Add(extras[count].Id); hours += extras[count].Units; } count++; } } //add any missing prereqs foreach (Course course in courses) { foreach (Course pre in course.Prerequisites) { if (!toTake.Contains(pre.Id)) { missing.Add(pre.Id); } } } while (missing.Count > 0) { foreach (int misId in missing.ToArray()) { Course toAdd = crsServ.GetCoursesById(misId); toAdd.Prerequisites = crsServ.GetCoursePrereqs(misId); if (toAdd.Prerequisites == null) { toAdd.Prerequisites = new List <Course>(); } courses.Add(toAdd); toTake.Add(misId); missing.Remove(misId); } foreach (Course course in courses) { foreach (Course pre in course.Prerequisites) { if (!toTake.Contains(pre.Id)) { missing.Add(pre.Id); } } } } //remove any duplicates temp = new List <Course>(); foreach (Course course in courses) { if (!course.isContainedBy(temp)) { temp.Add(course); } } courses.Clear(); courses.AddRange(temp); //sort courses using tree CourseTree tree = new CourseTree(courses); List <Course> sortedCourses = tree.GetList(); //get class history List <Course> taken = crsServ.GetCourseHistory(session.Account.Id); GPFSchedule schedule = new GPFSchedule(session, sortedCourses, taken); return(schedule); }
public bool SaveSession(GPFSession session) { return(true); }
public GPFSchedule GetSessionSchedule(GPFSession session) { return(null); /** * GPFSchedule schedule = new GPFSchedule(session, new List<Course>()); * * ClassOffering classToSchedule = new ClassOffering(); * classToSchedule.Id = 219849; * classToSchedule.Course = new Course { Number = 394, Department = "CSC" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2016, Quarter = Quarter.Fall }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 219849; * classToSchedule.Course = new Course { Number = 322, Department = "IS" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2016, Quarter = Quarter.Fall }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 219849; * classToSchedule.Course = new Course { Number = 456, Department = "CSC" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2016, Quarter = Quarter.Fall }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2016, Quarter = Quarter.Winter }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2016, Quarter = Quarter.Winter }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2017, Quarter = Quarter.Spring }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2017, Quarter = Quarter.Spring }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2017, Quarter = Quarter.Spring }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2017, Quarter = Quarter.Spring }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * * classToSchedule = new ClassOffering(); * classToSchedule.Id = 548655; * classToSchedule.Course = new Course { Number = 103, Department = "ENG" }; * classToSchedule.AcademicTerm = new AcademicTerm { Year = 2017, Quarter = Quarter.SummerII }; * if (schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)) == null) * schedule.Terms.Add(new AcademicTerm(classToSchedule.AcademicTerm.Year, classToSchedule.AcademicTerm.Quarter.Value)); * schedule.Terms.Find(x => x.Equals(classToSchedule.AcademicTerm)).ClassSchedule.Add(classToSchedule); * * return schedule; */ }
public ActionResult Options(int?id) { Account account = GetAuthCookieAccount(); Account impersonateAccount = Statics.ImpersonateGet(Session); if (impersonateAccount != null) { account = impersonateAccount; } GPFSession gpfSession = new GPFSession(); if (id.HasValue) { gpfSession = _gpfService.GetSessionById(id.Value); } List <Degree> availableDegrees = new List <Degree>(); availableDegrees = _degreeService.GetDegrees(); if (account != null && account.Id > 0) { gpfSession.Account = account; gpfSession.Degree = (gpfSession.Degree == null) ? account.Degree : gpfSession.Degree; gpfSession.Concentration = (gpfSession.Concentration == null) ? account.Concentration : gpfSession.Concentration; } if (gpfSession.Degree == null && availableDegrees != null) { gpfSession.Degree = availableDegrees[0]; gpfSession.Concentration = gpfSession.Degree.Concentrations[0]; } List <Course> availableConcentrationCourses = new List <Course>(); if (gpfSession.Degree != null) { availableConcentrationCourses = _courseService.GetCoursesByConcentration(gpfSession.Concentration.Id); } List <Course> availableElectiveCourses = new List <Course>(); if (gpfSession.Degree != null && gpfSession.Concentration != null) { availableElectiveCourses = _courseService.GetAllElectivesByConcentration(gpfSession.Concentration.Id); } GPFViewModel model = new GPFViewModel() { GPFSession = gpfSession, AvailableDegrees = availableDegrees, AvailableConcentrationCourses = availableConcentrationCourses, AvailableElectiveCourses = availableElectiveCourses, Impersonating = (impersonateAccount != null) }; if (id.HasValue) { model.EnteringYear = gpfSession.EnteringTerm.Year; model.EnteringQuarter = gpfSession.EnteringTerm.Quarter.Value; model.ClassesPerQuarter = gpfSession.ClassesPerQuarter; model.ClassDeliveryOption = gpfSession.ClassDeliveryOption.Value; } return(View(model)); }