コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
ファイル: TriviaPlugin.cs プロジェクト: detmach/SharpIrcBot
        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();
                }
            }
        }
コード例 #5
0
        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();
            }
        }
コード例 #6
0
ファイル: QuotesPlugin.cs プロジェクト: detmach/SharpIrcBot
        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();
            }
        }
コード例 #7
0
 protected virtual void OnBaseNickChanged(BaseNickChangedEventArgs e)
 {
     HandleEvent(BaseNickChangedSubscribers, e, "base nick change");
 }