示例#1
0
        /// <summary>
        /// Позволяет получить список пользователей мультидиалога по его id.
        /// </summary>
        /// <param name="chatIds">Идентификаторы бесед. список целых чисел, разделенных запятыми (Список целых чисел, разделенных запятыми).</param>
        /// <param name="fields">Список дополнительных полей профилей, которые необходимо вернуть.
        /// Доступные значения: nickname, screen_name, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, counters, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список строк, разделенных через запятую (Список строк, разделенных через запятую).</param>
        /// <param name="nameCase">Падеж для склонения имени и фамилии пользователя. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom. строка (Строка).</param>
        /// <returns>
        /// После успешного выполнения возвращает список идентификаторов участников беседы.
        /// Если был задан параметр fields, возвращает список объектов пользователей с дополнительным полем invited_by, содержащим идентификатор пользователя, пригласившего в беседу.
        /// </returns>
        /// <remarks>
        /// Страница документации ВКонтакте <see href="http://vk.com/dev/messages.getChatUsers" />.
        /// </remarks>
        public ReadOnlyCollection<User> GetChatUsers(IEnumerable<long> chatIds, UsersFields fields, NameCase nameCase)
        {
            var parameters = new VkParameters {

                { "chat_ids", chatIds },
                { "fields", fields },
                { "name_case", nameCase }
            };

            var response = _vk.Call("messages.getChatUsers", parameters);

            var list = new List<User>();

            foreach ( var chatId in chatIds )
            {
                var chatResponse = response[chatId.ToString()];
                var users = chatResponse.ToReadOnlyCollectionOf(x => fields != null ? x : new User { Id = (long) x });

                foreach ( var user in users )
                {
                    bool exist = list.Exists(first => first.Id == user.Id);
                    if ( !exist )
                        list.Add(user);
                }
            }

            return list.ToReadOnlyCollection();
        }