public PartialViewResult RoomListByDate(DateTime date, TimeSpan from, TimeSpan to) { DateTime start = date.AddHours(from.Hours).AddMinutes(from.Minutes); DateTime end = date.AddHours(to.Hours).AddMinutes(to.Minutes); var org = GetMyOrganisation(); var member = MemberService.GetMember(org.Id); var isOrgAdmin = member?.IsAdmin ?? false; var rooms = new MyStik.TimeTable.Web.Services.RoomService().GetFreeRooms(org.Id, isOrgAdmin, start, end); var model = new List <FreeRoomModel>(); foreach (var room in rooms) { var freeRoom = new FreeRoomModel { Room = room, CurrentDates = null, LastDate = room.Dates.Where(d => d.End <= end).OrderBy(d => d.End).LastOrDefault(), NextDate = room.Dates.Where(d => d.Begin >= end).OrderBy(d => d.Begin).FirstOrDefault(), From = start, To = end, }; model.Add(freeRoom); } model = model.OrderByDescending(r => r.Room.Number).ToList(); return(PartialView("_RoomList", model)); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult Free() { var from = DateTime.Now; var to = from; var model = new FreeRoomSummaryModel(); var org = GetMyOrganisation(); // Ermittle alle Räume im Zeitraum [von, bis] // jeden Raum durchgehen // aktuelle Veranstaltung ermitteln // letzte Veranstaltung ermitteln, die beendet ist // nächste Veranstaltung ermitteln, die in Zukunft beginnen wird var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var fk09 = Db.Organisers.SingleOrDefault(o => o.Id == org.Id); model.AvailableRooms = roomService.GetAvaliableRoomsNow(fk09.Id); model.FutureRooms = roomService.GetNextAvaliableRoomsNow(fk09.Id); model.AvailableRooms = model.AvailableRooms.OrderBy(r => r.Room.Number).ToList(); ViewBag.Organiser = fk09.ShortName; return(View("Free", model)); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult Assignments() { var roomService = new MyStik.TimeTable.Web.Services.RoomService(); // Raum - Organisation - Genehmigung für interne - Genehmigung für Externe roomService.AddAssignment("R BG.089", "FK 09", false, true); // Raum steht FK 09 exklusiv zur Verfügung roomService.AddAssignment("T 2.017", "FK 09", true, false); // Raum steht FK 09 nur teilweise zur Verfügung roomService.AddAssignment("R 3.099", "FK 09", true, true); // Raum soll freigehalten werden return(View("Admin")); }
public ActionResult Labels(Guid?id) { var semester = SemesterService.GetSemester(id); var nextSemester = SemesterService.GetNextSemester(semester); var org = GetMyOrganisation(); var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var rooms = roomService.GetRooms(org.Id, true); ViewBag.UserRight = GetUserRight(User.Identity.Name, org.ShortName); ViewBag.Organiser = org; ViewBag.Semester = semester; ViewBag.NextSemester = nextSemester; return(View(rooms)); }
public PartialViewResult GetAvailableRooms(string date, string begin, string end) { var sDate = DateTime.Parse(date); var sBegin = TimeSpan.Parse(begin); var sEnd = TimeSpan.Parse(end); var from = sDate.Add(sBegin); var until = sDate.Add(sEnd); var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var org = GetMyOrganisation(); var userRight = GetUserRight(org); // Alle Räume, auf die der Veranstalter Zugriff hat var rooms = roomService.GetAvaliableRooms(org.Id, from, until, userRight.IsRoomAdmin); return(PartialView("_FreeRoomList", rooms)); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult Transfer() { var model = new RoomTransferModel(); model.StartDate = DateTime.Today.ToShortDateString(); model.StartTime = "08:00"; model.EndDate = DateTime.Today.ToShortDateString(); model.EndTime = "22:00"; var org = GetMyOrganisation(); var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var rooms = roomService.GetRooms(org.Id, true).OrderBy(x => x.Number).ToList(); ViewBag.SourceRoomId = new SelectList(rooms, "Id", "FullName"); ViewBag.TargetRoomId = new SelectList(rooms, "Id", "FullName"); ViewBag.Organiser = org; return(View(model)); }
public PartialViewResult Faculty(Guid facultyId) { var model = new List <RoomInfoModel>(); var org = Db.Organisers.SingleOrDefault(o => o.Id == facultyId); if (org != null) { // Alle Räume, auf die der Veranstalter Zugriff hat var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var rooms = roomService.GetRooms(org.Id, true); // Für jeden Raum den Status besorgen foreach (var room in rooms) { var info = new RoomInfoModel { Room = room, CurrentDate = roomService.GetCurrentDate(room), NeedInternalConfirmation = roomService.NeedInternalConfirmation(room, org.ShortName) }; // Nächste Belegung nur dann notwendig, wenn Raum aktuell frei ist if (info.CurrentDate == null) { info.NextDate = roomService.GetNextDate(room); } model.Add(info); } model = model.OrderBy(r => r.Room.Number).ToList(); ViewBag.Organiser = org; ViewBag.UserRight = GetUserRight(User.Identity.Name, org.ShortName); } return(PartialView("_FacultyRoomList", model)); }
public PartialViewResult Search(RoomLookUpModel model) { var sDateStart = DateTime.Parse(model.NewDate); var sDateEnd = DateTime.Parse(model.NewDate2); var sBegin = TimeSpan.Parse(model.NewBegin); var sEnd = TimeSpan.Parse(model.NewEnd); var roomService = new MyStik.TimeTable.Web.Services.RoomService(); var org = GetMyOrganisation(); var userRight = GetUserRight(User.Identity.Name, org.ShortName); if (sDateEnd < sDateStart) { return(PartialView("_ErrorMsg", "Enddatum ist kleiner als Startdatum")); } if (sEnd < sBegin) { return(PartialView("_ErrorMsg", "Ende ist kleiner als Beginn")); } var result = new RoomSearchResultModel(); result.Begin = sBegin; result.End = sEnd; // Fallunterscheidungen // gleicher Tag if (sDateStart == sDateEnd) { var from = sDateStart.Add(sBegin); var until = sDateStart.Add(sEnd); var rooms = roomService.GetFreeRooms(org.Id, userRight.IsRoomAdmin, from, until); result.Rooms = rooms.ToList(); result.DayList = new List <DateTime>(); result.DayList.Add(sDateStart); return(PartialView("_SearchResultList", result)); } // Zeitraum, ggf. Wochentage berücksichtigen // ermittle alle Tage zwischen Beginn und Ende var dateList = new List <DateTime>(); var date = sDateStart; if (!model.IsMonday && !model.IsTuesday && !model.IsWednesday && !model.IsThursday && !model.IsFriday && !model.IsSaturday && !model.IsSunday) { while (date <= sDateEnd) { dateList.Add(date); date = date.AddDays(1); } } else { while (date <= sDateEnd) { if (model.IsMonday && date.DayOfWeek == DayOfWeek.Monday) { dateList.Add(date); } if (model.IsTuesday && date.DayOfWeek == DayOfWeek.Tuesday) { dateList.Add(date); } if (model.IsWednesday && date.DayOfWeek == DayOfWeek.Wednesday) { dateList.Add(date); } if (model.IsThursday && date.DayOfWeek == DayOfWeek.Thursday) { dateList.Add(date); } if (model.IsFriday && date.DayOfWeek == DayOfWeek.Friday) { dateList.Add(date); } if (model.IsSaturday && date.DayOfWeek == DayOfWeek.Saturday) { dateList.Add(date); } if (model.IsSunday && date.DayOfWeek == DayOfWeek.Sunday) { dateList.Add(date); } date = date.AddDays(1); } } var rooms2 = roomService.GetFreeRooms(org.Id, userRight.IsRoomAdmin, dateList, sBegin, sEnd); result.DayList = dateList; result.Rooms = rooms2.ToList(); return(PartialView("_SearchResultList", result)); }