private bool AmountPaidIsValid(Course course, decimal amountPaid)
        {
            bool result = true;

            if (course != null)
            {
                if (course.Cost > amountPaid)
                {
                    result = false;
                }
            }
            return result;
        }
 private void CreateEnrollmentAttendanceAndNotificationData(Course course, Student thisStudent)
 {
     course.SeatsTaken = course.SeatsTaken + 1;
     BuildEnrollmentData(course, thisStudent);
     BuildAttendanceData(course, thisStudent);
     BuildNotificationData(course, thisStudent);
     db.SaveChanges();
 }
 private void BuildNotificationData(Course course)
 {
     var newNotification = new Notification
         {
             Time = DateTime.Now,
             Details =
                 "An Administrator has approved your application to teach " + course.Title + " beginning "
                 + course.StartDate,
             Link = Url.Action("AttendanceView", "Attendance", new { id = course.CourseID }),
             ViewableBy = course.Instructor.UserName,
             Complete = false
         };
     db.Notification.Add(newNotification);
 }
 private void BuildNotificationData(
     ApplyCourseViewModel appliedCourse, Instructor instructorAgain, Course newCourse)
 {
     var newNotification = new Notification
         {
             Time = DateTime.Now,
             Details =
                 "An Instructor by the name of " + instructorAgain.LastName + " has applied to teach "
                 + appliedCourse.Title,
             Link = Url.Action("Details", "Course", new { id = newCourse.CourseID }),
             ViewableBy = "Admin",
             Complete = false
         };
     db.Notification.Add(newNotification);
 }
 private void BuildNotificationData(Course course, Student thisStudent)
 {
     var newNotification = new Notification
         {
             Time = DateTime.Now,
             Details =
                 "A Student by the name of " + thisStudent.FirstMidName + " " + thisStudent.LastName
                 + " has signed up for " + course.Title,
             Link = Url.Action("Details", "Student", new { id = thisStudent.StudentID }),
             ViewableBy = "Admin",
             Complete = false
         };
     db.Notification.Add(newNotification);
 }
 private void BuildEnrollmentData(Course course, Student thisStudent)
 {
     bool hasPaid = course.Cost == 0;
     var newEnrollment = new Enrollment
         {
             CourseID = course.CourseID,
             StudentID = thisStudent.StudentID,
             Grade = "incomplete",
             Paid = hasPaid
         };
     db.Enrollments.Add(newEnrollment);
 }
 private Course BuildCourseData(ApplyCourseViewModel appliedCourse, Instructor instructorAgain)
 {
     Debug.Write(appliedCourse.Cost);
     var newCourse = new Course
         {
             Title = appliedCourse.Title,
             Credits = appliedCourse.Credits,
             Elective = appliedCourse.Elective,
             InstructorID = instructorAgain.InstructorID,
             Year = appliedCourse.StartDate.Year,
             AttendingDays = appliedCourse.AttendingDays,
             AttendanceCap = appliedCourse.AttendanceCap,
             StartDate = appliedCourse.StartDate,
             EndDate = appliedCourse.EndDate,
             Location = appliedCourse.Location,
             Parish = appliedCourse.Parish,
             Description = appliedCourse.Description,
             Cost = appliedCourse.Cost,
             Approved = false,
             Completed = false,
             Archived = false
         };
     db.Courses.Add(newCourse);
     return newCourse;
 }
 private void BuildAttendanceData(Course course, Student thisStudent)
 {
     for (int i = 0; i < course.AttendingDays; i++)
     {
         // Adds attendance rows for every day needed in the attendance table
         var newAttendance = new Attendance
             {
                 CourseID = course.CourseID,
                 StudentID = thisStudent.StudentID,
                 AttendanceDay = i + 1,
                 Present = true
             };
         db.Attendance.Add(newAttendance);
     }
 }
        public ActionResult EditCourse(Course course)
        {
            if (ModelState.IsValid)
            {
                db.Entry(course).State = EntityState.Modified;

                Instructor thisInstructor = db.Instructors.FirstOrDefault(o => o.InstructorID == course.InstructorID);

                // Add a notification for the Instructor to see that the Course was modified
                var newNotification = new Notification
                    {
                        Time = DateTime.Now,
                        Details =
                            "An Admin has edited the course you applied to teach: " + course.Title + " beginning "
                            + course.StartDate,
                        Link = Url.Action("Details", "Course", new { id = course.CourseID }),
                        // ViewableBy = course.Instructor.UserName,
                        ViewableBy = thisInstructor.UserName,
                        Complete = false
                    };
                db.Notification.Add(newNotification);
                db.SaveChanges();
                TempData["tempMessage"] =
                    "You have successfully applied edited this course.  A notification has been sent to the instructor who applied to teach this course.";
                return RedirectToAction("Index");
            }

            return View(course);
        }
        public ActionResult DeleteConfirmed(int id, Course hasReasonForDeletion)
        {
            Course course = db.Courses.Find(id);

            // Add the notification for the Instructor that their Course has been unapproved
            var newNotification = new Notification
                {
                    Time = DateTime.Now,
                    Details =
                        "An Administrator has denied your application to teach " + course.Title
                        + " citing the following reason: " + hasReasonForDeletion.AdminDenialReason,
                    Link = Url.Action("ApplyToTeach", "Course", new { id = course.CourseID }),
                    ViewableBy = course.Instructor.UserName,
                    Complete = false
                };
            db.Notification.Add(newNotification);

            db.Courses.Remove(course);
            db.SaveChanges();
            return RedirectToAction("Index", "Notification");
        }
        public ActionResult ApplyUsingDetails(Course idGetter)
        {
            // try to join course
            Course course = db.Courses.Find(idGetter.CourseID);
            if (course.Approved && !course.Completed)
            {
                Student thisStudent = db.Students.FirstOrDefault(o => o.UserName == User.Identity.Name);

                Enrollment nullIfStudentDoesNotHaveThisCourse =
                    db.Enrollments.FirstOrDefault(
                        p => p.StudentID == thisStudent.StudentID && p.CourseID == course.CourseID);

                if (nullIfStudentDoesNotHaveThisCourse == null)
                {
                    if (course.Enrollments.Count < course.AttendanceCap)
                    {
                        CreateEnrollmentAttendanceAndNotificationData(course, thisStudent);
                        TempData["tempMessage"] =
                            "You have successfully enrolled in this Course. (Please note that the below details are default values until your Instructor updates them)";
                        return RedirectToAction("StudentDetails", "Attendance", new { id = course.CourseID });
                    }

                    return RedirectToAction("Message", new { message = "This course is full." });
                }

                return RedirectToAction("Message", new { message = "This student is already enrolled in this course." });
            }

            return RedirectToAction(
                "Message",
                new
                    {
                        message =
                            "Course is not ready to be joined, it has not been approved by an Administrator or has already concluded."
                    });
        }