public UserSearchResult EnsureUniqueUsers(UserSearchResult searchResult) { searchResult.TlUsers = searchResult.TlUsers.GroupBy(x => x.Id).Select(y => y.First()).ToList(); searchResult.Users = searchResult.Users.GroupBy(x => x.Id).Select(y => y.First()).ToList(); return(searchResult); }
public async Task <UserSearchResult> GetUsersOld(TelegramClient client) { UserSearchResult searchResult = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; try { dynamic dialogs; try { dialogs = (TLDialogs)await client.GetUserDialogsAsync(); } catch (Exception ex) { dialogs = (TLDialogsSlice)await client.GetUserDialogsAsync(); Logger.Error(ex); } foreach (TLAbsChat element in dialogs.Chats) { if (element is TLChat) { TLChat chat = element as TLChat; var request = new TLRequestGetFullChat() { ChatId = chat.Id }; TeleSharp.TL.Messages.TLChatFull chatFull = await client.SendRequestAsync <TeleSharp.TL.Messages.TLChatFull>(request); foreach (var absUser in chatFull.Users) { TLUser user = absUser as TLUser; if (!user.Bot && !user.Deleted && !user.Self) { searchResult.TlUsers.Add(user); var customeUser = _userService.CreateCustomUserModel(user); searchResult.Users.Add(customeUser); } } } } } catch (Exception ex) { Logger.Error(ex); } return(searchResult); }
public async Task <UserSearchResult> GetUsers(TelegramClient client, List <string> chatsNames) { UserSearchResult searchResult = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; try { List <TLChannel> channels = await GetChats(client, chatsNames); foreach (var channel in channels) { var request = new TLRequestGetParticipants { Channel = new TLInputChannel { AccessHash = (long)channel.AccessHash, ChannelId = channel.Id }, Filter = new TLChannelParticipantsRecent() }; TLChannelParticipants found = await client.SendRequestAsync <TLChannelParticipants>(request); foreach (var absUser in found.Users) { TLUser user = absUser as TLUser; if (!user.Bot && !user.Deleted && !user.Self) { searchResult.TlUsers.Add(user); var customeUser = _userService.CreateCustomUserModel(user); searchResult.Users.Add(customeUser); } } } } catch (Exception ex) { Logger.Error(ex); } return(searchResult); }
private UserSearchResult GetByPresenetNickname(UserSearchResult users, bool?isNicknamePresent) { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users.TlUsers) { bool isPresent = user.Username == null ? false : true; if (isPresent == isNicknamePresent) { result.TlUsers.Add(user); result.Users.Add(_userService.CreateCustomUserModel(user)); } } return(result); }
private UserSearchResult GetUsersBasedOnPhotoPresense(UserSearchResult users, bool?isPhotoPresent) { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users.TlUsers) { bool actualPhotoPresense = user.Photo != null ? true : false; if (actualPhotoPresense == isPhotoPresent) { result.TlUsers.Add(user); result.Users.Add(_userService.CreateCustomUserModel(user)); } } return(result); }
private async Task <UserSearchResult> GetUsersBasedOnPhotoPresense(TelegramClient client, List <TLUser> users, bool?isPhotoPresent) { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users) { bool actualPhotoPresense = user.Photo != null ? true : false; if (actualPhotoPresense == isPhotoPresent) { result.TlUsers.Add(user); result.Users.Add(CreateCustomUser(user, isPhoto: isPhotoPresent)); } } return(result); }
private async Task <UserSearchResult> GetByPresenetNickname(TelegramClient client, List <TLUser> users, bool?isNicknamePresent)//todo delete client { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users) { bool isPresent = user.Username == null ? false : true; if (isPresent == isNicknamePresent) { result.TlUsers.Add(user); result.Users.Add(CreateCustomUser(user)); } } return(result); }
public UserSearchResult GetByUserStatus(UserSearchResult users, TLAbsUserStatus searchedStatus) { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users.TlUsers) { TLAbsUserStatus actualStatus = user.Status; var searchedStatusName = searchedStatus.GetType().FullName; if (actualStatus.ToString() == searchedStatusName) { result.TlUsers.Add(user); result.Users.Add(_userService.CreateCustomUserModel(user)); } } return(result); }
public async Task <UserSearchResult> GetByUserStatus(TelegramClient client, List <TLUser> users, TLAbsUserStatus searchedStatus) { var result = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; foreach (TLUser user in users) { TLAbsUserStatus actualStatus = user.Status; var searchedStatusName = searchedStatus.GetType().FullName; if (actualStatus.ToString() == searchedStatusName) { var statusStr = searchedStatusName.Substring(14); result.TlUsers.Add(user); result.Users.Add(CreateCustomUser(user, userStatus: searchedStatusName.Substring(11))); //todo didn't check } } return(result); }
public async Task <UserSearchResult> Find(TelegramClient client, UserSearchModel searchModel) { UserSearchResult searchResult = new UserSearchResult() { TlUsers = new List <TLUser>(), Users = new List <UserModel>() }; List <TLUser> users = await GetUsers(client); if (searchModel.IsPhotoPresent != null) { var res = await GetUsersBasedOnPhotoPresense(client, users, searchModel.IsPhotoPresent); searchResult.TlUsers.AddRange(res.TlUsers); searchResult.Users.AddRange(res.Users); } if (searchModel.UserStatus != null) { var res = await GetByUserStatus(client, users, searchModel.UserStatus); searchResult.TlUsers.AddRange(res.TlUsers); searchResult.Users.AddRange(res.Users); } if (searchModel.LastSeen != null) { var res = await GetByLastSeen(client, users, searchModel.LastSeen); searchResult.TlUsers.AddRange(res.TlUsers); searchResult.Users.AddRange(res.Users); } if (searchModel.IsNicknamePresent != null) { var res = await GetByPresenetNickname(client, users, searchModel.IsNicknamePresent); searchResult = res; searchResult.TlUsers.AddRange(res.TlUsers); searchResult.Users.AddRange(res.Users); } return(EnsureUniqueUsers(searchResult)); }
public async Task <UserSearchResult> Find(TelegramClient client, UserSearchModel searchModel) { UserSearchResult users = await GetUsers(client, searchModel.GroupsList); if (searchModel.IsPhotoPresent != null) { users = GetUsersBasedOnPhotoPresense(users, searchModel.IsPhotoPresent); } if (searchModel.UserStatus != null) { users = GetByUserStatus(users, searchModel.UserStatus); } if (searchModel.LastSeen != null) { users = GetByLastSeen(users, searchModel.LastSeen); } if (searchModel.IsNicknamePresent != null) { users = GetByPresenetNickname(users, searchModel.IsNicknamePresent); } return(EnsureUniqueUsers(users)); }