/// <summary> /// Calling this will remove any bonuses or penalties whose time has expired. /// </summary> /// <returns></returns> public ClientHandling.Message Cleanup() { List<string> messages = new List<string>(); MongoCollection bonusCollection = MongoUtils.MongoData.GetCollection("Messages", "Bonuses"); BsonDocument found = null; BsonArray array = null; IMongoQuery query = null; ClientHandling.Message message = new ClientHandling.Message(); foreach (KeyValuePair<string, Tuple<double, DateTime>> item in _bonus) { if (item.Value.Item2 != DateTime.MaxValue && DateTime.Now >= item.Value.Item2) { query = Query.EQ("_id", item.Key); found = bonusCollection.FindOneAs<BsonDocument>(query).AsBsonDocument; //let's add the messages that removing the bonus/penalty could have array = found["Messages"][0]["Self"].AsBsonArray; int choice = Extensions.RandomNumber.GetRandomNumber().NextNumber(0, array.Count()); message.Self = array[choice].AsString; array = found["Messages"][0]["Target"].AsBsonArray; if (array.Count >= choice - 1) { message.Target = array[choice].AsString; } array = found["Messages"][0]["Others"].AsBsonArray; if (array.Count == choice - 1) { message.Room = array[choice].AsString; } //remove the bonus/penalty Remove((BonusTypes)Enum.Parse(typeof(BonusTypes),item.Key)); } } return message; }
/// <summary> /// Calling this will remove any bonuses or penalties whose time has expired. /// </summary> /// <returns></returns> public ClientHandling.Message Cleanup() { List <string> messages = new List <string>(); MongoCollection bonusCollection = MongoUtils.MongoData.GetCollection("Messages", "Bonuses"); BsonDocument found = null; BsonArray array = null; IMongoQuery query = null; ClientHandling.Message message = new ClientHandling.Message(); foreach (KeyValuePair <string, Tuple <double, DateTime> > item in _bonus) { if (item.Value.Item2 != DateTime.MaxValue && DateTime.Now >= item.Value.Item2) { query = Query.EQ("_id", item.Key); found = bonusCollection.FindOneAs <BsonDocument>(query).AsBsonDocument; //let's add the messages that removing the bonus/penalty could have array = found["Messages"][0]["Self"].AsBsonArray; int choice = Extensions.RandomNumber.GetRandomNumber().NextNumber(0, array.Count()); message.Self = array[choice].AsString; array = found["Messages"][0]["Target"].AsBsonArray; if (array.Count >= choice - 1) { message.Target = array[choice].AsString; } array = found["Messages"][0]["Others"].AsBsonArray; if (array.Count == choice - 1) { message.Room = array[choice].AsString; } //remove the bonus/penalty Remove((BonusTypes)Enum.Parse(typeof(BonusTypes), item.Key)); } } return(message); }