public void VerifyAndMerge() { var dbManager = new DatabaseManager(); var database = dbManager.GetDatabase(); var collection = database.GetCollection <IUser>(typeof(IUser).Name); var config = (MapUserConfiguration)ConfigurationManager.GetSection("databasemap"); foreach (UserMap user in config.Users) { var names = user.SubNames.Split(','); foreach (var name in names) { var query = Query.EQ("Name", name); IUser subUser = collection.FindOne(query); if (subUser != null) { query = Query.EQ("Name", user.MainName); IUser mainUser = collection.FindOne(query); if (mainUser == null) { subUser.Name = user.MainName; mainUser = subUser; } else { foreach (var key in subUser.ExtensionPoint.Keys) { IExtension value = null; if (mainUser.ExtensionPoint.TryGetValue(key, out value)) { var merge = value.Merge(subUser.ExtensionPoint[key]); mainUser.ExtensionPoint[key] = merge; } else { mainUser.ExtensionPoint.Add(key, subUser.ExtensionPoint[key]); } } } dbManager.Delete <IUser>(subUser.Id); dbManager.Update <IUser>(mainUser); } } } }
public void LoadBadges() { var type = typeof(IBadge); var badges = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(s => s.GetTypes()) .Where(p => type.IsAssignableFrom(p) && p.IsClass); var db = new DatabaseAccess.DatabaseManager(); var collection = db.GetDatabase().GetCollection <IBadge>(typeof(IBadge).Name); foreach (var badge in badges) { var query = Query.EQ("_t", badge.Name); var b = collection.FindOne(query); if (b == null) { b = (IBadge)Activator.CreateInstance(Type.GetType(badge.FullName)); db.Insert <IBadge>(b); } } }
public void LoadBadges() { log.Info("Loading badges"); var type = typeof(IBadge); var badges = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(s => s.GetTypes()) .Where(p => type.IsAssignableFrom(p) && p.IsClass); var db = new DatabaseAccess.DatabaseManager(); var collection = db.GetDatabase().GetCollection<IBadge>(typeof(IBadge).Name); foreach (var badge in badges) { var query = Query.EQ("_t", badge.Name); var b = collection.FindOne(query); if (b == null) { b = (IBadge)Activator.CreateInstance(Type.GetType(badge.FullName)); db.Insert<IBadge>(b); } } }