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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 8
0
        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));
        }
Exemplo n.º 11
0
        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));
        }