// GET: Absence/Create
        public ActionResult Create()
        {
            //Note: On 2nd pass I updated this view to have a dropdown for course title instead of textbox,
            //      this helps remove the need for so much error checking/handling on course title textbox because now,
            //      the title will match what is in the database when they select it from the dropdown list.

            //      Old Code
            //      return View();

            //      New Code
            var viewModel = new AbsenceIndexViewModel();
            // viewModel.CourseTitles = db.Courses.Select(c => c.Title).ToList();
            //viewModel.CourseTitles = db.Courses.Select(x => new SelectListItem { Text = x.Title, Value = x.Id.ToString() }).ToList();
            viewModel.CourseTitles = db.Courses.Select(c => c.Title).ToList();

            return View(viewModel);
        }
        public ActionResult Create(AbsenceIndexViewModel viewModel)
        {
            //TODO: Refreshing the whole list of Courses, only the selected 1 is posting back, maybe refactor later?
            viewModel.CourseTitles = db.Courses.Select(c => c.Title).ToList();

            if (ModelState.IsValid)
            {
                var absence = new Absence();

                absence.StudentLastName = viewModel.StudentLastName;
                absence.StudentFirstName = viewModel.StudentFirstName;
                absence.AbsenceDate = viewModel.AbsenceDate;

                //Old Code

                //.Replace(" ", "")  and .ToLower() are used to try and get both strings to a similar format
                //this helps when trying to compare 2 strings, and input/comparison variations are likely

                //var student = db.Students.Where(s => s.FirstName.Replace(" ", "").ToLower() == viewModel.StudentFirstName.Replace(" ", "").ToLower() &&
                //                                     s.LastName.Replace(" ", "").ToLower() == viewModel.StudentLastName.Replace(" ", "").ToLower()).FirstOrDefault();

                //var course = db.Courses.Where(c => c.Title.Replace(" ", "").ToLower() == viewModel.CourseTitle.Replace(" ", "").ToLower()).FirstOrDefault();

                //New Code
                var student = db.Students.Where(s => s.FirstName.Replace(" ", "").ToLower() == viewModel.StudentFirstName.Replace(" ", "").ToLower() &&
                                                     s.LastName.Replace(" ", "").ToLower() == viewModel.StudentLastName.Replace(" ", "").ToLower()).FirstOrDefault();

                var course = db.Courses.Where(c => c.Title == viewModel.CourseTitle).FirstOrDefault();

                //Get the student and course record for entered data
                //TODO: Update Later.
                if (student == null)
                {
                    return View("Create", viewModel);
                    //Old Code
                   // return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Student was not found.");
                }

                if (course == null)
                {
                    return View("Create", viewModel);

                    //Old Code
                    //return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Course was not found.");
                }

                //Make sure that student is enrolled in that specific course
                var enrollment = db.Enrollments.Where(e => e.StudentId == student.Id && e.CourseId == course.Id).FirstOrDefault();

                if (enrollment == null)
                {
                    return View("Create", viewModel);

                    //Old Code
                    //return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Student is not enrolled in that course.");
                }

                absence.CourseId = course.Id;
                absence.StudentId = student.Id;
                absence.CourseTitle = course.Title; //Use the db instance of the title (in case the user entered in a mangled string :))

                db.Absences.Add(absence);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

               return View("Create", viewModel);
        }