Получение всех друзей в DNN программно

Я пытаюсь получить все friends конкретного пользователя. Из DNN RelationshipController я могу найти только способ установить отношения между двумя пользователями. Можно ли получить всех друзей пользователя?

'Получить связь между двумя пользователями:

DotNetNuke.Entities.Users.Social.RelationshipController.Instance.GetFriendRelationship(Me.UserInfo)

person alwaysVBNET    schedule 07.11.2016    source источник


Ответы (1)


У меня валялся этот код. Я получаю текущего пользователя, затем получаю все идентификаторы пользователей отношений, которые являются друзьями (по сравнению с подписчиками) и «Приняты». Используя этот список, я снова присоединяюсь к списку пользователей, чтобы получить пользовательские атрибуты друга и вернуться в качестве нового объекта.

Надеюсь это поможет.

private const int DNNSOCIAL_RELATIONSHIPTYPE_FRIEND = 1;
private const int DNNSOCIAL_RELATIONSHIPTYPE_FOLLOWER = 2;

public List<UserFriend> GetUserFriends(int portalid, int userid)
{
    UserInfo currentUser = UserController.GetUserById(portalid, userid);

    var friends = currentUser.Social.UserRelationships
                    .Where(r => r.RelationshipId == DNNSOCIAL_RELATIONSHIPTYPE_FRIEND 
                        && r.Status == RelationshipStatus.Accepted);

    return (from f in friends
            join u in UserController.GetUsers(portalid).Cast<UserInfo>()
            on f.RelatedUserId equals u.UserID
            select new UserFriend { UserId = u.UserID,  DisplayName = u.DisplayName, ProfilePicUrl = u.Profile.PhotoURL }).ToList();
}

...

public class UserFriend
{
    public int UserId { get; set; }
    public string DisplayName { get; set; }
    public string ProfilePicUrl { get; set; }
}

Версия VB.NET

Public Function GetUserFriends(portalid As Integer, userid As Integer) As List(Of UserFriend)
    Dim currentUser As UserInfo = UserController.GetUserById(portalid, userid)

Dim friends = currentUser.Social.UserRelationships.Where(Function(r) r.RelationshipId = DNNSOCIAL_RELATIONSHIPTYPE_FRIEND AndAlso r.Status = Social.RelationshipStatus.Accepted)

Return (From f In friends
        Join u In UserController.GetUsers(portalid).Cast(Of UserInfo)()
        On f.RelatedUserId Equals u.UserID
        Select New UserFriend With {.UserId = u.UserID, .DisplayName = u.DisplayName, .ProfilePicUrl = u.Profile.PhotoURL}).ToList()
 End Function
person DotNetNuclear    schedule 08.11.2016
comment
Я только что заметил, что это работает только с одним концом пользователей. Пользователь, отправивший запрос и установивший дружбу, может просмотреть при вызове вышеуказанной функции. Однако получатель видит себя другом при вызове этой функции из своего профиля. Любые идеи? - person alwaysVBNET; 26.11.2016