Exemplo n.º 1
0
        public static Karma UpdateKarma(this IMongoDatabase db, string nick, string channel, string server, int incr)
        {
            var karma    = db.GetCollection <BsonDocument>("Karma");
            var builder  = Builders <BsonDocument> .Filter;
            var filter   = builder.Eq("nick", nick) & builder.Eq("channel", channel.ToLower()) & builder.Eq("network", server);
            var document = karma.Find(filter).FirstOrDefault();

            if (document == null)
            {
                karma.InsertOne(new BsonDocument {
                    { "nick", nick },
                    { "channel", channel.ToLower() },
                    { "network", server },
                    { "score", 0 }
                });
                document = karma.Find(filter).FirstOrDefault();
            }

            var update = Builders <BsonDocument> .Update.Inc("score", incr);

            karma.UpdateOne(filter, update);
            var toReturn = Karma.FromJson(document.ToJson(new JsonWriterSettings {
                OutputMode = JsonOutputMode.Strict
            }));

            toReturn.Score += incr;
            return(toReturn);
        }