Пример #1
0
        public async Task AwardPoints(DiscordUser discordUser, int points = 1)
        {
            // Get user
            var knownUser = await _userService.GetOrCreateKnownUserForDiscordUser(discordUser);

            // Get current score (if present)
            var userScore = await _selfcareDb.UserScores.Where(us => us.KnownUser.Id == knownUser.Id)
                            .FirstOrDefaultAsync();

            // If user does not have a score, then create it
            if (userScore == null)
            {
                userScore = new UserScore
                {
                    KnownUser = knownUser,
                    Category  = HydrationCategory,
                    Score     = 0
                };

                _selfcareDb.UserScores.Add(userScore);
            }

            // give points
            userScore.Score += points;

            // Save changes
            await _selfcareDb.SaveChangesAsync();
        }
Пример #2
0
        public async Task <KnownUser> GetOrCreateKnownUserForDiscordUser(DiscordUser discordUser)
        {
            // Get user (if present)
            var knownUser = await _selfcareDb.KnownUsers.Where(kn => kn.DiscordId == discordUser.Id)
                            .FirstOrDefaultAsync();

            // Record user if not present
            if (knownUser == null)
            {
                // Create db user from discord user
                knownUser = new KnownUser
                {
                    DiscordId     = discordUser.Id,
                    Username      = discordUser.Username,
                    Discriminator = discordUser.Discriminator
                };

                // Add to database
                _selfcareDb.KnownUsers.Add(knownUser);
                await _selfcareDb.SaveChangesAsync();
            }

            return(knownUser);
        }