예제 #1
0
 private LongLastingUserActionArguments GetUserActionArguments(TelegramRozkladUser user)
 {
     return(new LongLastingUserActionArguments
     {
         TelegramRozkladUser = user
     });
 }
예제 #2
0
        public async Task Add(TelegramRozkladUser telegramRozkladUser)
        {
            var alreadyExistedUser =
                await _dbContext.TelegramRozkladUsers
                .AsNoTracking()
                .Where(u => u.TelegramId == telegramRozkladUser.TelegramId)
                .FirstOrDefaultAsync();

            if (alreadyExistedUser == null)
            {
                await _dbContext.TelegramRozkladUsers.AddAsync(telegramRozkladUser);

                await _rozkladUsersDao.Add(telegramRozkladUser);

                _memoryCache.Set(telegramRozkladUser.TelegramId, telegramRozkladUser);
            }
            else
            {
                _dbContext.TelegramRozkladUsers.Update(telegramRozkladUser);
                await _rozkladUsersDao.Update(telegramRozkladUser);

                _memoryCache.Set(telegramRozkladUser.TelegramId, telegramRozkladUser);
            }
            await _dbContext.SaveChangesAsync();
        }
예제 #3
0
        public async Task Delete(TelegramRozkladUser telegramRozkladUser)
        {
            _memoryCache.Remove(telegramRozkladUser.TelegramId);
            await _rozkladUsersDao.Delete(telegramRozkladUser);

            _dbContext.TelegramRozkladUsers.Update(telegramRozkladUser);
            await _dbContext.SaveChangesAsync();
        }
예제 #4
0
        public async Task Update(TelegramRozkladUser telegramRozkladUser)
        {
            _dbContext.Update(telegramRozkladUser);
            await _rozkladUsersDao.Update(telegramRozkladUser);

            await _dbContext.SaveChangesAsync();

            _memoryCache.Set(telegramRozkladUser.TelegramId, telegramRozkladUser);
        }
예제 #5
0
        public TelegramRozkladUser[] GetDifferentUsers(long count)
        {
            var result = new TelegramRozkladUser[count];

            for (var i = 0; i < count; i++)
            {
                result[i] = new TelegramRozkladUser();
            }

            return(result);
        }
        public async Task InitializeCurrentUser(Update update)
        {
            int  userTelegramId;
            long chatId;

            switch (update.Type)
            {
            case UpdateType.Message:
                userTelegramId = update.Message.From.Id;
                chatId         = update.Message.Chat.Id;
                break;

            case UpdateType.CallbackQuery:
                userTelegramId = update.CallbackQuery.From.Id;
                chatId         = update.CallbackQuery.Message.Chat.Id;
                break;

            case UpdateType.EditedMessage:
                userTelegramId = update.EditedMessage.From.Id;
                chatId         = update.EditedMessage.Chat.Id;
                break;

            default:
                throw new CurrentUserInitializationException($"Unknown telegram update type: {update.Type}");
            }

            TelegramRozkladUser telegramRozkladUser = null;

            try
            {
                telegramRozkladUser = await _telegramRozkladUserDao.FindByTelegramId(userTelegramId);

                if (telegramRozkladUser == null)
                {
                    telegramRozkladUser = new TelegramRozkladUser
                    {
                        TelegramId = userTelegramId,
                        Language   = _localizationService.DefaultLanguage
                    };

                    await _telegramRozkladUserDao.Add(telegramRozkladUser);
                }

                if (telegramRozkladUser.IsDeleted)
                {
                    telegramRozkladUser.IsDeleted = false;

                    await _telegramRozkladUserDao.Update(telegramRozkladUser);
                }

                _currentTelegramUserContext.TelegramRozkladUser = telegramRozkladUser;
                _currentTelegramUserContext.ChatId = chatId;
            }
            catch (Exception e)
            {
                var outE = new CurrentUserInitializationException("Error when getting user", e);

                var telegramRozkladUserId = telegramRozkladUser?.TelegramId;
                _logger.LogError(TelegramLogEvents.UserInitializationError, outE,
                                 "userTelegramId = {userTelegramId}. " +
                                 "chatId = {chatId}. " +
                                 "TelegramRozkladUser telegram id = {telegramRozkladUserId}",
                                 userTelegramId, chatId, telegramRozkladUserId);

                throw outE;
            }
        }
예제 #7
0
 public Task <LongLastingUserActionArguments> GetUserLongLastingAction(TelegramRozkladUser telegramRozkladUser)
 {
     return(_actionCache.TryGetValue(telegramRozkladUser.TelegramId, out var value)
         ? Task.FromResult(value.Arguments)
         : Task.FromResult <LongLastingUserActionArguments>(null));
 }
예제 #8
0
 public Task ClearUserAction(TelegramRozkladUser rozkladUser)
 {
     _actionCache.TryRemove(rozkladUser.TelegramId, out _);
     return(Task.CompletedTask);
 }