public ActionResult Create(RoomAllocation roomallocation) { Room room = db.Rooms.Find(roomallocation.RoomId); Course course = db.Courses.Find(roomallocation.CourseId); Day day = db.Days.Find(roomallocation.DayId); if (ModelState.IsValid) { int givenfrom, givenEnd; try { givenfrom = ConvertTimetoInt(roomallocation.StartTime); } catch (Exception anException) { if (TempData["ErrorMessage3"] == null) { TempData["ErrorMessage1"] = anException.Message; } TempData["ErrorMessage4"] = TempData["ErrorMessage3"]; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } try { givenEnd = ConvertTimetoInt(roomallocation.EndTime); } catch (Exception anException) { if (TempData["ErrorMessage3"] == null) { TempData["ErrorMessage2"] = anException.Message; } TempData["ErrorMessage5"] = TempData["ErrorMessage3"]; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } if (givenEnd < givenfrom) { TempData["Message"] = "Class Should Start Before End (24 hours)"; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } if (givenEnd == givenfrom) { TempData["Message"] = "Class Should Start Before End (24 hours)"; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } if ((givenfrom < 0) || (givenEnd >= (24*60))) { TempData["Message"] = " 24 hours--format HH:MM"; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } List<RoomAllocation> overLapList=new List<RoomAllocation>(); var DayRoomAllocationList = db.RoomAllocations.Include(c => c.Course).Include(d =>d.Day).Include(r => r.Room).Where(r => r.RoomId == roomallocation.RoomId && r.DayId == roomallocation.DayId) .ToList(); foreach (var aDayroomAllocation in DayRoomAllocationList) { //int OverlapFrom = 0; //int OverlapEnd = 0; //RoomAllocation overlap =new RoomAllocation(); int DbFrom = ConvertTimetoInt(aDayroomAllocation.StartTime); int DbEnd = ConvertTimetoInt(aDayroomAllocation.EndTime); if ( ((DbFrom <= givenfrom) && (givenfrom < DbEnd)) || ((DbFrom < givenEnd) && (givenEnd <= DbEnd)) || ((givenfrom <= DbFrom) && (DbEnd <= givenEnd)) ) { overLapList.Add(aDayroomAllocation); } } if (overLapList.Count == 0) { db.RoomAllocations.Add(roomallocation); db.SaveChanges(); TempData["Message"] = "Room : " + room.Name + "Allocated " + " for course : " + course.Code + " From " + roomallocation.StartTime + " to " + roomallocation.EndTime + " on " + day.Name; } else { string message = "Room : " + room.Name + " Overlapped With : "; foreach (var anOverlappedRoom in overLapList) { int dbFrom = ConvertTimetoInt(anOverlappedRoom.StartTime); int dbEnd = ConvertTimetoInt(anOverlappedRoom.EndTime); string overlapStart, overlapEnd; if ((dbFrom <= givenfrom) && (givenfrom < dbEnd)) overlapStart = roomallocation.StartTime; else overlapStart = anOverlappedRoom.StartTime; if ((dbFrom < givenEnd) && (givenEnd <= dbEnd)) overlapEnd = roomallocation.EndTime; else overlapEnd = anOverlappedRoom.EndTime; message += " Course : " + anOverlappedRoom.Course.Code + " Start Time : " + anOverlappedRoom.StartTime + " End Time : " + anOverlappedRoom.EndTime + " Overlapped from : "; message += overlapStart + " To " + overlapEnd; } TempData["Message"] = message + " on " + day.Name ; ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code"); ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", course.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses.Where(c => c.DepartmentId == course.DepartmentId), "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); } //} return RedirectToAction("Create"); } ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", roomallocation.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses, "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); }
public ActionResult Edit(RoomAllocation roomallocation) { if (ModelState.IsValid) { db.Entry(roomallocation).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.DepartmentId = new SelectList(db.Departments, "DepartmentId", "Code", roomallocation.DepartmentId); ViewBag.CourseId = new SelectList(db.Courses, "CourseId", "Code", roomallocation.CourseId); ViewBag.RoomId = new SelectList(db.Rooms, "RoomId", "Name", roomallocation.RoomId); ViewBag.DayId = new SelectList(db.Days, "DayId", "Name", roomallocation.DayId); return View(roomallocation); }