public override async Task Execute(CallbackQuery callbackQuery, TelegramBotClient bot) { if (trustedUsers.Any(u => u.ID == callbackQuery.From.Id)) { string[] data = callbackQuery.Data.Split("|"); int userID; if ((data.Length > 1) && int.TryParse(data[1], out userID) && trustedUsersForApprove.Any(u => u.ID == userID)) { TrustedUserDTO user = trustedUsersForApprove.First(u => u.ID == userID); trustedUsers.Add(user); trustedUsersForApprove.Remove(user); await bot.AnswerCallbackQueryAsync(callbackQueryId : callbackQuery.Id, text : $"Selected user with ID: {user.ID}"); await bot.SendTextMessageAsync(chatId : callbackQuery.Message.Chat.Id, text : $"User {user.Username ?? user.FirstName} with ID {user.ID} added as trusted"); } else { await bot.SendTextMessageAsync(chatId : callbackQuery.Message.Chat.Id, text : "Wrong command. UserID is not found"); } } else { await bot.SendTextMessageAsync(chatId : callbackQuery.Message.Chat.Id, text : "You are not trusted user. You can't approve users"); } }
private void TrustedUsers_CollectionChanged(object sender, NotifyCollectionChangedEventArgs eventArgs) { using (var scope = scopeFactory.CreateScope()) { IUnitOfWork <TelegramBotTrustedUser> teleBotTrustedUsersUnitOfWork = scope.ServiceProvider.GetRequiredService <IUnitOfWork <TelegramBotTrustedUser> >(); switch (eventArgs.Action) { case NotifyCollectionChangedAction.Add: { if (eventArgs.NewItems.Count > 0) { foreach (var item in eventArgs.NewItems) { if (item is TrustedUserDTO) { TrustedUserDTO trustedUser = (TrustedUserDTO)item; TelegramBotTrustedUser dbTrustedUser = teleBotTrustedUsersUnitOfWork.GetRepository().Query().FirstOrDefault(user => user.userID == trustedUser.ID); if (dbTrustedUser == null) { teleBotTrustedUsersUnitOfWork.GetRepository().Add(new TelegramBotTrustedUser { userID = trustedUser.ID, FirstName = trustedUser.FirstName, Username = trustedUser.Username }); } } } teleBotTrustedUsersUnitOfWork.SaveChanges(); } break; } case NotifyCollectionChangedAction.Remove: { if (eventArgs.OldItems.Count > 0) { foreach (var item in eventArgs.OldItems) { if (item is TrustedUserDTO) { TrustedUserDTO trustedUser = (TrustedUserDTO)item; TelegramBotTrustedUser dbTrustedUser = teleBotTrustedUsersUnitOfWork.GetRepository().Query().FirstOrDefault(user => user.userID == trustedUser.ID); if (dbTrustedUser != null) { teleBotTrustedUsersUnitOfWork.GetRepository().Delete(dbTrustedUser); } } } teleBotTrustedUsersUnitOfWork.SaveChanges(); } break; } default: break; } } }