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)); }