public void EnrollmentService_SqlEnrollmentRepository_UnEnroll_a_Enrolled_Student()
        {
            IEnrollmentService service = new EnrollmentService(new SqlEnrollmentRepository());

            // First enroll a student
            //
            var courseEnrollment = new CourseEnrollment
            {
                CourseOfferingNo = 0,
                StudentId        = -98,
                GradeNo          = 1,
                StatusId         = 1,
                ImportDate       = DateTime.Now,
                ImportConversion = "Student Portal"
            };
            int isEnrolled = service.EnrollStudent(courseEnrollment);

            Assert.AreEqual(1, isEnrolled);

            // Then Un-Enroll that student
            //
            var isUnEnrolled = service.UnEnrollStudent(courseEnrollment.StudentId, courseEnrollment.CourseOfferingNo);

            Assert.IsTrue(isUnEnrolled);
        }
        public void EnrollmentService_TestEnrollmentRepository_Rejects_Duplicate_Enrollments_in_a_Class_Offered_in_a_Term()
        {
            IEnrollmentService service = new EnrollmentService(new TestEnrollmentRepository());

            var courseEnrollment = new CourseEnrollment
            {
                CourseOfferingNo = 0,
                StudentId        = 0,
                GradeNo          = 1,
                StatusId         = 1,
                ImportDate       = DateTime.Now,
                ImportConversion = "Student Portal"
            };

            int isEnrolled = service.EnrollStudent(courseEnrollment);

            Assert.AreEqual(1, isEnrolled);

            isEnrolled = service.EnrollStudent(courseEnrollment);
            Assert.AreEqual(0, isEnrolled);
        }
        public void EnrollmentService_SqlEnrollmentRepository_Rejects_Duplicate_Enrollments_in_a_Class_Offered_in_a_Term()
        {
            IEnrollmentService service = new EnrollmentService(new SqlEnrollmentRepository());

            var courseEnrollment = new CourseEnrollment
            {
                CourseOfferingNo = 0,
                StudentId        = 1,
                GradeNo          = 1,
                StatusId         = 1,
                ImportDate       = DateTime.Now,
                ImportConversion = "Test Data"
            };


            /**
             * Manually delete the entry from the database.
             */
            int isEnrolled = service.EnrollStudent(courseEnrollment);

            Assert.AreEqual(1, isEnrolled);

            try
            {
                // This line should throw an exception
                isEnrolled = service.EnrollStudent(courseEnrollment);

                // This should not be executed. In case of a duplicate entry
                // above line must throw an exception.
                Assert.Fail();
            }
            catch (Exception)
            {
                // Nothing to do, since in this scenario exception must be thrown
            }
        }
        public ActionResult Enroll(int courseOfferingNo, int pageNumber)
        {
            var studentNo        = Session[UserController.SessionKeyStudentNo].ToString();
            var courseEnrollment = new CourseEnrollment
            {
                CourseOfferingNo = courseOfferingNo,
                StudentId        = int.Parse(studentNo),
                ImportDate       = DateTime.Now,
                StatusId         = 1,
                GradeNo          = 1,
                ImportConversion = "Student Portal"
            };

            try
            {
                IEnrollmentService service = new EnrollmentService();
                int result       = service.EnrollStudent(courseEnrollment);
                int selectedTerm = Convert.ToInt32(Session[UserController.SessionKeyCourseOfferingTermId]);
                // Load Terms
                Dictionary <int, DateTime> terms = null;
                terms = service.FetchTermsForOnlineEnrollment();
                ViewData["enrollmentTerms"] = terms;

                // Load Course
                var courseOffering = GetCourseOffering(service, studentNo, selectedTerm, pageNumber);
                //int totalRows = 0;
                //var courseOffering = service.FetchCourseOfferings(Convert.ToInt32(studentNo), selectedTerm, out totalRows, pageNumber, PageSize);
                //int totalPages = totalRows / PageSize;
                //ViewData["pageNumberLast"] = totalPages;
                ////int pageNumber = 1;
                //// Decrement page number only if it doesn't pass the minimum page number.
                //ViewData["pageNumberPrev"] = (pageNumber <= 1) ? 1 : pageNumber - 1;

                //ViewData["pageNumberCurrent"] = pageNumber;

                //// Increment page number only if it doesn't pass the maximum page number.
                //ViewData["pageNumberNext"] = (pageNumber >= totalPages) ? totalPages : pageNumber + 1;

                if (result > 0)
                {
                    ViewData["successMsgEnroll"] = "1";
                }
                else
                {
                    var sb = new StringBuilder();
                    sb.AppendFormat("Unable to enroll student. EnrollStudent returned: {0}, EnrollmentData:{1}", result,
                                    courseEnrollment.ToString());

                    _logger.Warn(sb.ToString());

                    Response.Redirect(AppHelper.SharedUrl("Reply/Error"));
                }
                return(View("Enroll", courseOffering));
            }
            catch (Exception ex)
            {
                var sb = new StringBuilder();
                sb.AppendFormat("Exception Occurred. StudentNo: {0}, EnrollmentData:{1}", studentNo,
                                courseEnrollment);

                _logger.Error(sb.ToString(), ex);

                Response.Redirect(AppHelper.SharedUrl("Reply/Error"));
                return(null);
            }
        }