Example #1
0
        private async Task <List <(int, int)> > GetTotalWordsAsync(long chatId, TelegramDbContext context)
        {
            var chat = await context.Chats.FirstOrDefaultAsync(x => x.TelegramId == chatId);

            if (chat == null)
            {
                _logger.LogInformation("Got message from a new chat with id {0}", chatId);
                _logger.LogInformation("Adding chat {0} to database...", chatId);

                chat = new Database.Models.Chat {
                    TelegramId = chatId
                };
                await context.Chats.AddAsync(chat);

                await context.SaveChangesAsync();
            }

            var chatUsers = await context.ChatUsers
                            .Include(x => x.User)
                            .Include(x => x.ChatUserWords)
                            .Where(x => x.ChatId == chat.Id)
                            .Select(x => new { User = x.User.TelegramId, TotalWords = x.ChatUserWords.Where(cuw => cuw.ChatUserId == x.Id).Count() })
                            .ToListAsync();

            return(chatUsers.Select(x => (x.User, x.TotalWords)).ToList());
        }
Example #2
0
        private async Task <Database.Models.ChatUser> GetChatUserAsync(Database.Models.Chat chat, Database.Models.User user, TelegramDbContext context)
        {
            var chatUser = await context.ChatUsers.FirstOrDefaultAsync(x => x.ChatId == chat.Id && x.UserId == user.Id);

            if (chatUser == null)
            {
                _logger.LogInformation("Creating connection between user {0} and chat {1}...", user.TelegramId, chat.TelegramId);

                chatUser = new Database.Models.ChatUser {
                    User = user, Chat = chat
                };
                await context.ChatUsers.AddAsync(chatUser);

                await context.SaveChangesAsync();
            }

            return(chatUser);
        }
Example #3
0
        private async Task <Database.Models.Chat> GetChatAsync(long chatId, TelegramDbContext context)
        {
            var chat = await context.Chats.FirstOrDefaultAsync(x => x.TelegramId == chatId);

            if (chat == null)
            {
                _logger.LogInformation("Got message from a new chat with id {0}", chatId);
                _logger.LogInformation("Adding chat {0} to database...", chatId);

                chat = new Database.Models.Chat {
                    TelegramId = chatId
                };
                await context.Chats.AddAsync(chat);

                await context.SaveChangesAsync();
            }

            return(chat);
        }