Exemple #1
0
        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));
        }
Exemple #2
0
        /// <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));
        }
Exemple #3
0
        /// <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"));
        }
Exemple #4
0
        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));
        }
Exemple #5
0
        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));
        }
Exemple #6
0
        /// <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));
        }
Exemple #7
0
        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));
        }
Exemple #8
0
        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));
        }