public bool AddInstantly(UserWrapper user, string achievementId) { if (AllowedAchievements.ContainsKey(achievementId)) { var achievement = AllowedAchievements[achievementId]; DB.Achievement dbAchievement = DB.Achievement.FindUserAchievement(user.Id, achievementId); if (dbAchievement == null) { dbAchievement = new DB.Achievement(); dbAchievement.UserId = user.Id; dbAchievement.AchievementId = achievementId; dbAchievement.AchievedAt = DateTime.Now; var result = dbAchievement.Save(); if (result) { var messageBuilder = Game.messageBuilder; var message = messageBuilder.GetText("AchievementUnlocked"); var achievementText = $"<b>{achievement.Icon} {achievement.Name}</b>"; var replaces = new Dictionary <string, object> { { "name", messageBuilder.FormatName(user) }, { "achievement", achievementText } }; messageBuilder .Text(messageBuilder.Format(message, replaces), false) .SendPublic(Game.gameChannel); } return(result); } } return(false); }
public bool AddInstantly(UserWrapper user, string achievementId) { if (AllowedAchievements.ContainsKey(achievementId)) { var achievement = AllowedAchievements[achievementId]; using (var gameContext = new GameContext()) { var dbAchievement = gameContext.Achievements .Where(a => a.UserId == user.Id).SingleOrDefault(a => a.AchievementId == achievementId); if (dbAchievement == null) { dbAchievement = new DB.Achievement() { UserId = user.Id, AchievementId = achievementId, AchievedAt = DateTime.Now }; gameContext.Achievements.Add(dbAchievement); try { gameContext.SaveChanges(); var messageBuilder = Game.MessageBuilder; var achievementText = $"<b>{achievement.Icon} {achievement.GetName(messageBuilder.Language)}</b>"; messageBuilder .PrepareTextReplacePlayer("AchievementUnlocked", new InGamePlayerInfo(user, Game), additionalReplaceDictionary: new ReplaceDictionary { ["achievement"] = achievementText }) .SendPublic(Game.GameChannel); return(true); } catch (Exception) { // ignored } } } } return(false); }