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);
        }
Пример #2
0
        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);
        }
Пример #4
0
        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;
             */
        }
Пример #9
0
        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));
        }