Ejemplo n.º 1
0
 public void TestLocation()
 {
     Assert.AreEqual(RoomDisplayNameParser.ParseLocation("Tampere - Adobe ()"), "Tampere");
     Assert.AreEqual(RoomDisplayNameParser.ParseLocation("Tre - Adobe (4)"), "Tampere");
     Assert.AreEqual(RoomDisplayNameParser.ParseLocation("Helsinki - Adobe (7)"), "Helsinki");
     Assert.AreEqual(RoomDisplayNameParser.ParseLocation("Hki - Adobe (4)"), "Helsinki");
     Assert.AreEqual(RoomDisplayNameParser.ParseLocation("Tampere - Helsinki (5) Video"), "Tampere");
 }
Ejemplo n.º 2
0
 public void TestCapacity()
 {
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (4)"), 4);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (7++)"), 7);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Neukkari1 (7++)"), 7);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Helsinki - Alfa-4 (7++)"), 7);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Helsinki - Alfa 35 (4)"), 4);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (-3)"), 3);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Oulu - Toripolliisi (12) Video Asiakas"), 12);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (>7)"), 7);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (~4)"), 4);
     Assert.AreEqual(RoomDisplayNameParser.ParseCapacity("Tampere - Adobe (4 tai enemmän)"), 4);
 }
Ejemplo n.º 3
0
 public void TestHasVideoSupport()
 {
     Assert.True(RoomDisplayNameParser.ParseHasVideoConferencingSupport("Tre - Linus (5) Video"));
     Assert.True(RoomDisplayNameParser.ParseHasVideoConferencingSupport("Tre - Linus (5) video"));
     Assert.True(RoomDisplayNameParser.ParseHasVideoConferencingSupport("Tre - Linus (5) VidEo"));
 }
Ejemplo n.º 4
0
 public void TestIsNotSuitableForClientMeetings()
 {
     Assert.False(RoomDisplayNameParser.ParseSuitabilityForClientMeetings("Tampere (4) vIdeO sisainen"));
     Assert.False(RoomDisplayNameParser.ParseSuitabilityForClientMeetings("Tampere (4) vIdeO asijakas sisainen"));
 }
Ejemplo n.º 5
0
 public void TestIsSuitableForClientMeetings()
 {
     Assert.True(RoomDisplayNameParser.ParseSuitabilityForClientMeetings("Helsinki (5) Asiakas"));
     Assert.True(RoomDisplayNameParser.ParseSuitabilityForClientMeetings("Tampere (4) asiakas"));
 }
Ejemplo n.º 6
0
 public void TestIsNotSuitableForInternalMeetings()
 {
     Assert.False(RoomDisplayNameParser.ParseSuitabilityForInternalMeetings("Oulu sisainen"));
 }
Ejemplo n.º 7
0
 public void TestIsSuitableForInternalMeetings()
 {
     Assert.True(RoomDisplayNameParser.ParseSuitabilityForInternalMeetings("Oulu Sisäinen"));
 }
Ejemplo n.º 8
0
 public void TestHasNoVideoSupport()
 {
     Assert.False(RoomDisplayNameParser.ParseHasVideoConferencingSupport("Helsinki - Mavideomaa (5) Sisäinen"));
     Assert.False(RoomDisplayNameParser.ParseHasVideoConferencingSupport("Helsinki - Neukkari (3) Vide"));
 }
Ejemplo n.º 9
0
        /** Returns a list of rooms and their bookings. The returned list of rooms is sorted by room location. */
        public IEnumerable <Room> GetRooms(DateTime dateTime)
        {
            Logger.Logger.Info("Getting rooms for date: " + dateTime);
            var    dateString     = dateTime.ToString("yyyy-MM-dd");
            Object connectionLock = null;

            if (connectionLocks.ContainsKey(dateString))
            {
                Logger.Logger.Info("Got connection lock for date: " + dateString);
                connectionLock = connectionLocks[dateString];
            }
            else
            {
                connectionLock = new object();
                connectionLocks.Add(dateString, connectionLock);
                Logger.Logger.Info("Creating a new connection lock for date: " + dateString);
            }

            lock (connectionLock) {
                // While we waited for the lock, it is possible that another thread
                // retrieved the rooms from Exchange. So, before making a connection,
                // try to retrieve the Rooms from cache.
                if (ConfigurationManager.AppSettings["UseRoomCaching"].Equals("true") && RoomCacheManager.FindCachedRoomsForDay(dateTime) != null)
                {
                    Logger.Logger.Info("Got rooms from cache for date: " + dateString);
                    var cachedRooms = RoomCacheManager.FindCachedRoomsForDay(dateTime);
                    return(cachedRooms.GetRooms());
                }

                Logger.Logger.Info("Connecting to Exchange to retrieve rooms for date: " + dateString);

                var ad    = new ADConnector();
                var rooms = ad.GetRoomsList();
                RoomDisplayNameParser.ParseDisplayNameForRooms(rooms);
                rooms = ApplySpecialFilters(rooms);
                AddAvailabilityInfoToRooms(rooms, dateTime);
                rooms = rooms.OrderBy(room => room.Location).ThenBy(room => room.Name).ToList();

                var allResultsOk = true;
                foreach (var room in rooms)
                {
                    if (room.Error)
                    {
                        allResultsOk = false;
                        break;
                    }
                }

                if (allResultsOk)
                {
                    Logger.Logger.Info("Caching Exchange response.");
                    RoomCacheManager.CacheRooms(rooms, dateTime);
                }
                else
                {
                    Logger.Logger.Info("Not caching Exchange response with errors.");
                }

                return(rooms);
            }
        }