public ActionResult EditSchedule(FormCollection collection) { var classes = db.getClassList(); var teachers = db.getTeacherList(); var rooms = db.getRoomList(); var scheduleViewModel = new ScheduleViewModel { Classes = classes, Teachers = teachers, Rooms = rooms }; int id = (int)TempData["EditScheduleId"]; var schedule = db.getScheduleById(id); ViewBag.EditSchedule = schedule; // getg var selectedTeacher = Convert.ToInt32(collection["SelectedTeacherId"]); //var selectedCLass = collection["SelectedClassId"]; var selectedCLass = Convert.ToInt32(collection["SelectedClassId"]); var selectedRoom = Convert.ToInt32(collection["SelectedRoomId"]); DateTime classDate = Convert.ToDateTime(collection["classDate"]); TimeSpan timePicker = TimeSpan.Parse(collection["picker"]); var status = collection["status"]; ViewBag.tid = selectedTeacher; ViewBag.cid = selectedCLass; ViewBag.rid = selectedRoom; XDocument xd = db.getAvailability(selectedTeacher); string dayOftheWeek = classDate.DayOfWeek.ToString(); TimeSpan sTime; TimeSpan eTime; Yoga_User u = db.getUserById(selectedTeacher); if (DateTime.Now.Date > classDate) { ViewBag.message = "<p><span style=\"color:red\">Date Error: Can't Select Dates in the Past</span>"; return(View(scheduleViewModel)); } try { sTime = TimeSpan.Parse(xd.Root.Element(dayOftheWeek).Element("Start").Value); eTime = TimeSpan.Parse(xd.Root.Element(dayOftheWeek).Element("End").Value); } catch { ViewBag.message = "<p><span style=\"color:red\">Availability Error: </span>" + u.U_First_Name + " " + u.U_Last_Name + " is unavailable " + dayOftheWeek.ToLower() + "s."; return(View(scheduleViewModel)); } Class c = db.getClass(selectedCLass); TimeSpan classEnd = timePicker.Add(c.Class_Length); ViewBag.time = timePicker.Hours + ":" + timePicker.Minutes; ViewBag.date = classDate.ToString("yyyy-MM-dd"); // put db update method if (sTime > timePicker) { ViewBag.message = "Availability Error: " + u.U_First_Name + " " + u.U_Last_Name + " starts " + dayOftheWeek + " at " + sTime.Hours + ":" + sTime.Minutes.ToString("00"); return(View(scheduleViewModel)); } if (classEnd > eTime) { ViewBag.message = "<p><span style=\"color:red\">Availability Error: </span>" + u.U_First_Name + " " + u.U_Last_Name + " ends " + dayOftheWeek + " at " + eTime.Hours + ":" + eTime.Minutes.ToString("00") + "<br/>" + "Class End: " + classEnd.Hours + ":" + classEnd.Minutes.ToString("00") + "</p><br/>"; return(View(scheduleViewModel)); } IEnumerable <Schedule> sList = db.getScheduleByRoomAndDay(selectedRoom, classDate); foreach (Schedule s in sList) { String date = s.Class_Date.ToString("dd/MM/yyyy"); TimeSpan sEnd = s.Start_Time.Add(s.Class.Class_Length); if (timePicker >= s.Start_Time && timePicker < sEnd && s.Schedule_Id != schedule.Schedule_Id || classEnd > s.Start_Time && classEnd <= sEnd && s.Schedule_Id != schedule.Schedule_Id) { ViewBag.message = "<p><span style=\"color:red\">Room Error: </span>" + s.Room.Room_Name + " is unavailable from " + s.Start_Time.Hours + ":" + s.Start_Time.Minutes.ToString("00") + " until " + sEnd.Hours + ":" + sEnd.Minutes.ToString("00") + " on " + date + "</p>"; return(View(scheduleViewModel)); } } IEnumerable <Schedule> sListbyTeacher = db.getScheduleByTeacherAndDay(selectedTeacher, classDate); foreach (Schedule s in sListbyTeacher) { String date = s.Class_Date.ToString("dd/MM/yyyy"); TimeSpan sEnd = s.Start_Time.Add(s.Class.Class_Length); if (timePicker >= s.Start_Time && timePicker < sEnd && s.Schedule_Id != schedule.Schedule_Id || classEnd > s.Start_Time && classEnd <= sEnd && s.Schedule_Id != schedule.Schedule_Id) { ViewBag.message = "<p><span style=\"color:red\">Availability Error: </span>" + u.U_First_Name + " " + u.U_Last_Name + " is already scheduleed from " + s.Start_Time.Hours + ":" + s.Start_Time.Minutes.ToString("00") + " until " + sEnd.Hours + ":" + sEnd.Minutes.ToString("00") + " on " + date + "</p>"; return(View(scheduleViewModel)); } } if (schedule.Schedule_Status != status && status == "CANCELLED" && schedule.Class_Date.Date > DateTime.Now.Date) { List <Yoga_User> list = db.getScheduleSignUpList(schedule.Schedule_Id); db.CancelledScheduleRefund(id); EmailSender.ClassCancelledEmail(list, schedule); } if (schedule.Schedule_Status != status && status == "ACTIVE" && schedule.Class_Date.Date > DateTime.Now.Date) { List <Yoga_User> list = db.getScheduleSignUpList(schedule.Schedule_Id); db.RestoreScheduleRemoveUsers(id); EmailSender.ClassRestoreEmail(list, schedule); } schedule.Teacher_Id = selectedTeacher; schedule.Class_Id = selectedCLass; schedule.Room_Id = selectedRoom; schedule.Class_Date = classDate; schedule.Schedule_Status = status; db.UpdateSchedule(schedule); return(RedirectToAction("ScheduleList")); }