protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs e) { string oldBaseNick = e.OldBaseNick; string newBaseNick = e.NewBaseNick; using (var ctx = GetNewContext()) { // fix up subscription var oldOptedInUser = ctx.OptedInUsers .FirstOrDefault(u => u.UserName == oldBaseNick); if (oldOptedInUser == null) { // no subscription to transfer return; } ctx.OptedInUsers.Remove(oldOptedInUser); var newOptedInUser = ctx.OptedInUsers .FirstOrDefault(u => u.UserName == newBaseNick); if (newOptedInUser == null) { // add this subscription ctx.OptedInUsers.Add(new OptedInUser { UserName = newBaseNick }); } ctx.SaveChanges(); } }
protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs e) { string oldBaseNick = e.OldBaseNick; string newBaseNick = e.NewBaseNick; using (var ctx = GetNewContext()) { IQueryable <CounterEntry> matchedEntries; matchedEntries = ctx.Entries .Where(u => u.CounterUsername == oldBaseNick); foreach (CounterEntry entry in matchedEntries) { entry.CounterUsername = newBaseNick; } ctx.SaveChanges(); matchedEntries = ctx.Entries .Where(u => u.PerpUsername == oldBaseNick); foreach (CounterEntry entry in matchedEntries) { entry.PerpUsername = newBaseNick; } ctx.SaveChanges(); } }
public void ReportBaseNickChange(string oldBaseNick, string newBaseNick) { // trigger update among plugins Logger.LogInformation("reporting base nick change from {OldBaseNickname} to {NewBaseNickname}", oldBaseNick, newBaseNick); var e = new BaseNickChangedEventArgs(oldBaseNick, newBaseNick); OnBaseNickChanged(e); }
protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs args) { // merge score of old and new object gameLock = GameState?.Lock ?? new object(); lock (gameLock) { var oldNickLower = args.OldBaseNick.ToLowerInvariant(); var newNickLower = args.NewBaseNick.ToLowerInvariant(); using (TriviaContext ctx = GetNewContext()) { LeaderboardEntry oldEntry = ctx.LeaderboardEntries .FirstOrDefault(le => le.NicknameLowercase == oldNickLower); if (oldEntry == null) { // don't bother return; } LeaderboardEntry newEntry = ctx.LeaderboardEntries .FirstOrDefault(le => le.NicknameLowercase == newNickLower); if (newEntry == null) { newEntry = new LeaderboardEntry { NicknameLowercase = newNickLower, CorrectAnswers = oldEntry.CorrectAnswers }; ctx.Add(newEntry); } else { newEntry.CorrectAnswers += oldEntry.CorrectAnswers; } ctx.Remove(oldEntry); ctx.SaveChanges(); } } }
protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs args) { var oldNickLower = args.OldBaseNick.ToLowerInvariant(); var newNickLower = args.NewBaseNick.ToLowerInvariant(); using (var ctx = GetNewContext()) { var thanksEntries = ctx.ThanksEntries .Where(te => te.ThankerLowercase == oldNickLower || te.ThankeeLowercase == oldNickLower); foreach (var thanksEntry in thanksEntries) { if (thanksEntry.ThankerLowercase == oldNickLower) { if (thanksEntry.ThankeeLowercase == newNickLower) { // self-thanks are not allowed; remove ctx.ThanksEntries.Remove(thanksEntry); } else { thanksEntry.ThankerLowercase = newNickLower; } } else if (thanksEntry.ThankeeLowercase == oldNickLower) { if (thanksEntry.ThankerLowercase == newNickLower) { // self-thanks are not allowed; remove ctx.ThanksEntries.Remove(thanksEntry); } else { thanksEntry.ThankeeLowercase = newNickLower; } } } ctx.SaveChanges(); } }
protected virtual void HandleBaseNickChanged(object sender, BaseNickChangedEventArgs e) { var oldNickLower = e.OldBaseNick.ToLowerInvariant(); var newNickLower = e.NewBaseNick.ToLowerInvariant(); using (var ctx = GetNewContext()) { // fix up quote ownership var authorQuotes = ctx.Quotes .Where(q => q.Author.ToLower() == oldNickLower); foreach (var authorQuote in authorQuotes) { authorQuote.Author = e.NewBaseNick; } ctx.SaveChanges(); // fix up quote votes var votes = ctx.QuoteVotes .Where(qv => qv.VoterLowercase == oldNickLower || qv.VoterLowercase == newNickLower) .ToList(); foreach (var oldNickVote in votes.Where(qv => qv.VoterLowercase == oldNickLower)) { // did the new nick vote for the same quote? if (votes.Any(qv => qv.QuoteID == oldNickVote.QuoteID && qv.VoterLowercase == newNickLower)) { // yes; delete this one to prevent a duplicate ctx.QuoteVotes.Remove(oldNickVote); } else { // no; update this one oldNickVote.VoterLowercase = newNickLower; } } ctx.SaveChanges(); } }
protected virtual void OnBaseNickChanged(BaseNickChangedEventArgs e) { HandleEvent(BaseNickChangedSubscribers, e, "base nick change"); }