Exemple #1
0
 public int NumberOfFreeRooms(DateTime arrivalDate, DateTime departureDate)
 {
     return(Rooms.Count() - Reservations.Where(r =>
                                               (((r.ArrivalDate <= arrivalDate) && (r.DepartureDate >= arrivalDate)) ||
                                                ((r.ArrivalDate <= departureDate) && (r.DepartureDate >= departureDate)) ||
                                                ((r.ArrivalDate >= arrivalDate) && (r.DepartureDate <= departureDate)))).Select(r => r.HotelRoom).Count());
 }
        public override IList <GroupChatModel> FindGroupChats(GroupChatModel filter)
        {
            Trace.Call(filter);

            RefreshRooms();
            string searchPattern = null;

            if (filter == null || String.IsNullOrEmpty(filter.Name))
            {
                // full channel list
            }
            else
            {
                if (!filter.Name.StartsWith("*") && !filter.Name.EndsWith("*"))
                {
                    searchPattern = String.Format("*{0}*", filter.Name);
                }
                else
                {
                    searchPattern = filter.Name;
                }
            }

            List <GroupChatModel> chats = new List <GroupChatModel>(Rooms.Count());
            IEnumerable <Room>    matching;

            matching = searchPattern == null ? Rooms :
                       Rooms.Where(r => Pattern.IsMatch(r.Name, searchPattern));

            foreach (var room in matching)
            {
                GroupChatModel chat  = new GroupChatModel(room.Id.ToString(), room.Name, null);
                var            users = Client.Get <RoomResponse>(String.Format("/room/{0}.json", chat.ID)).Room.Users;

                /* Don't waste this data */
                lock (Users) {
                    foreach (var user in users)
                    {
                        if (!Users.ContainsKey(user.Id))
                        {
                            Users[user.Id] = CreatePerson(user);
                        }
                    }
                }


                chat.PersonCount = users.Length;

                chat.Topic = CreateMessageBuilder().AppendMessage(room.Topic).ToMessage();
                lock (chat) {
                    chats.Add(chat);
                }
            }

            return(chats);
        }
        /// <summary>
        /// Convert the game DAT file into XML with accompanying comments
        /// </summary>
        public void SaveAsCommentedXML()
        {
            XElement gameData = new XElement("GameData");

            gameData.Add(
                new XElement("Header"
                             , new XElement("FileName", GameName)
                             , new XElement("Unknown", Header.Unknown)
                             , new XElement("MaxCarry", Header.MaxCarry)
                             , new XElement("StartRoom", Header.StartRoom)
                             , new XElement("TotalTreasures", Header.TotalTreasures)
                             , new XElement("WordLength", Header.WordLength)
                             , new XElement("LightDuration", Header.LightDuration)
                             , new XElement("TreasureRoom", Header.TreasureRoom)
                             )
                );

            //
            gameData.Add(new XElement("Actions"
                                      , new XAttribute("Count", Actions.Count())
                                      , Actions.Select((val, ind) => MakeAction(val, ind, false)))
                         );


            //add words
            gameData.Add(
                new XElement("Words"

                             , new XElement("Verbs", new XAttribute("Count", Verbs.Count())
                                            , Verbs.Select((val, ind) => new { index = ind, value = val })
                                            .Where(v => !v.value.StartsWith("*"))
                                            .Select(v =>
                                                    new XElement("Verb", new object[] { new XAttribute("value", v.value), new XAttribute("index", v.index)
                                                                                        , from al in Verbs.Skip(v.index + 1).TakeWhile(al => al.StartsWith("*")) select new XElement("Alias", al) }
                                                                 ))
                                            )
                             , new XElement("Nouns", new XAttribute("Count", Nouns.Count())
                                            , Nouns.Select((val, ind) => new { index = ind, value = val })
                                            .Where(v => !v.value.StartsWith("*") & v.value.Length > 0)
                                            .Select(v =>
                                                    new XElement("Noun", new object[] { new XAttribute("value", v.value), new XAttribute("index", v.index)
                                                                                        , from al in Nouns.Skip(v.index + 1).TakeWhile(al => al.StartsWith("*")) select new XElement("Alias", al) }
                                                                 ))
                                            )
                             )
                );

            //add rooms
            string[] directionsLong = { "North", "South", "East", "West", "Up", "Down" };
            gameData.Add(
                new XElement("Rooms"
                             , new XAttribute("Count", Rooms.Count())
                             , Rooms.Select((val, ind) => new XElement("Room",
                                                                       new object[] {
                new XAttribute("index", ind)
                , new XElement("Description", val.RawDescription)
                , val.Exits.Select((v, i) => new XElement(directionsLong[i], v))
            })))

                );


            //messaes
            gameData.Add(
                new XElement("Messages"
                             , new XAttribute("Count", Messages.Count())
                             , Messages.Select((val, ind) => new XElement("Message",
                                                                          new object[] {
                new XAttribute("index", ind)
                , val
            })))
                );

            gameData.Add(
                new XElement("Items"
                             , new XAttribute("Count", Items.Count())
                             , Items.Select((val, ind) => new XElement("Item",
                                                                       new object[] {
                new XAttribute("index", ind)
                , new XElement("Description", val.Description)
                , new XElement("RoomID", val.Location)
                , val.Word != null ? new XElement("Word", val.Word) :  null
            }))));

            gameData.Add(
                new XElement("Footer"
                             , new XElement("Version", Footer.Version)
                             , new XElement("AdventureNumber", Footer.AdventureNumber)
                             , new XElement("Unknown", Footer.Unknown)
                             )
                );

            gameData.Save(GameName + ".xml");
        }