private bool CheckTimeCollision(int courseId, TimetableViewModel.AddTimetableModel newTimetable)
        {
            var  userId = User.Identity.GetUserId();
            bool result = true;

            result &= newTimetable.CourseStartTime < newTimetable.CourseEndTime;
            result &= newTimetable.CourseStartTime > DateTime.Now;
            //check the timetable collision
            db.TrainingCourseTimetables
            .Where(timetable => timetable.TrainingCourseId == courseId)
            .ForEach(timetable => {
                if (timetable.CourseStartTime < newTimetable.CourseStartTime)
                {
                    result &= timetable.CourseEndTime < newTimetable.CourseStartTime;
                }
                else
                {
                    result &= timetable.CourseStartTime > newTimetable.CourseEndTime;
                }
            });
            if (!result)
            {
                ViewBag.TimeErrorMessage = "The chosen time duration has not mathched the constraints, please try again";
            }
            return(result);
        }
 public ActionResult Create([Bind(Include = "CourseStartTime,CourseEndTime,TrainingCourseId,IsLastOne")] int courseId, TimetableViewModel.AddTimetableModel newTimetable)
 {
     if (ModelState.IsValid && CheckTimeCollision(courseId, newTimetable))
     {
         TrainingCourseTimetable trainingCourseTimetable = new TrainingCourseTimetable();
         trainingCourseTimetable.CourseStartTime  = newTimetable.CourseStartTime;
         trainingCourseTimetable.CourseEndTime    = newTimetable.CourseEndTime;
         trainingCourseTimetable.TrainingCourseId = courseId;
         trainingCourseTimetable.IsLastOne        = newTimetable.IsLastOne;
         db.TrainingCourseTimetables.Add(trainingCourseTimetable);
         db.SaveChanges();
         return(RedirectToAction("FindByCourseId", new { id = courseId }));
     }
     ViewBag.courseId = courseId;
     return(View(newTimetable));
 }