Exemple #1
0
 public void ParseFriendshipInvitations(GetStateResponse response, IUserDatabase userDatabase, IInternalLocalUser localUser, out IList <IInternalIncomingFriendInvitation> incomingFriendInvitations, out IList <IInternalOutgoingFriendInvitation> outgoingFriendInvitations)
 {
     incomingFriendInvitations = new List <IInternalIncomingFriendInvitation>();
     outgoingFriendInvitations = new List <IInternalOutgoingFriendInvitation>();
     if (response.FriendshipInvitations != null)
     {
         foreach (FriendshipInvitation invitation in response.FriendshipInvitations)
         {
             List <User>       users     = response.Users;
             Func <User, bool> predicate = (User user) => user.DisplayName == invitation.FriendDisplayName;
             string            firstName = users.FirstOrDefault(predicate)?.FirstName;
             if (invitation.IsInviter.Value)
             {
                 IInternalUnidentifiedUser invitee = RemoteUserFactory.CreateUnidentifiedUser(invitation.FriendDisplayName, firstName, userDatabase);
                 OutgoingFriendInvitation  outgoingFriendInvitation = new OutgoingFriendInvitation(localUser, invitee, invitation.IsTrusted.Value);
                 outgoingFriendInvitation.SendComplete(invitation.FriendshipInvitationId.Value);
                 outgoingFriendInvitations.Add(outgoingFriendInvitation);
             }
             else
             {
                 IInternalUnidentifiedUser inviter = RemoteUserFactory.CreateUnidentifiedUser(invitation.FriendDisplayName, firstName, userDatabase);
                 IncomingFriendInvitation  incomingFriendInvitation = new IncomingFriendInvitation(inviter, localUser, invitation.IsTrusted.Value);
                 incomingFriendInvitation.SendComplete(invitation.FriendshipInvitationId.Value);
                 incomingFriendInvitations.Add(incomingFriendInvitation);
             }
         }
     }
 }
 private static IEnumerable <IncomingFriendInvitation> GetIncomingFriendInvitations(IUserDatabase userDatabase, IInternalLocalUser localUser)
 {
     return((from friendInvitationDoc in userDatabase.GetFriendInvitationDocuments(isInviter : false)
             where userDatabase.GetUserByDisplayName(friendInvitationDoc.DisplayName) != null
             select friendInvitationDoc).Select(delegate(FriendInvitationDocument friendInvitationDoc)
     {
         UserDocument userByDisplayName = userDatabase.GetUserByDisplayName(friendInvitationDoc.DisplayName);
         string displayName = userByDisplayName.DisplayName;
         IInternalUnidentifiedUser inviter = RemoteUserFactory.CreateUnidentifiedUser(displayName, userByDisplayName.FirstName, userDatabase);
         bool isTrusted = friendInvitationDoc.IsTrusted;
         IncomingFriendInvitation incomingFriendInvitation = new IncomingFriendInvitation(inviter, localUser, isTrusted);
         incomingFriendInvitation.SendComplete(friendInvitationDoc.FriendInvitationId);
         return incomingFriendInvitation;
     }).ToList());
 }
Exemple #3
0
    private void ReconcileFriendInvitations(GetStateResponse response, IInternalLocalUser localUser, IUserDatabase userDatabase)
    {
        List <FriendshipInvitation> friendshipInvitations = response.FriendshipInvitations;
        List <IInternalIncomingFriendInvitation> list     = localUser.InternalIncomingFriendInvitations.ToList();
        List <IInternalOutgoingFriendInvitation> list2    = localUser.InternalOutgoingFriendInvitations.ToList();

        if (friendshipInvitations != null)
        {
            foreach (FriendshipInvitation friendInvitation in friendshipInvitations)
            {
                List <IInternalIncomingFriendInvitation>       source              = list;
                Func <IInternalIncomingFriendInvitation, bool> predicate           = (IInternalIncomingFriendInvitation i) => i.InvitationId == friendInvitation.FriendshipInvitationId;
                IInternalIncomingFriendInvitation internalIncomingFriendInvitation = source.FirstOrDefault(predicate);
                if (internalIncomingFriendInvitation != null)
                {
                    if (internalIncomingFriendInvitation.RequestTrust != friendInvitation.IsTrusted)
                    {
                        internalIncomingFriendInvitation.RequestTrust = friendInvitation.IsTrusted.Value;
                    }
                    list.Remove(internalIncomingFriendInvitation);
                }
                else
                {
                    IInternalOutgoingFriendInvitation internalOutgoingFriendInvitation = list2.FirstOrDefault((IInternalOutgoingFriendInvitation i) => i.InvitationId == friendInvitation.FriendshipInvitationId);
                    if (internalOutgoingFriendInvitation != null)
                    {
                        if (internalOutgoingFriendInvitation.RequestTrust != friendInvitation.IsTrusted)
                        {
                            internalOutgoingFriendInvitation.RequestTrust = friendInvitation.IsTrusted.Value;
                        }
                        list2.Remove(internalOutgoingFriendInvitation);
                    }
                    else
                    {
                        string firstName = response.Users.FirstOrDefault((User user) => user.DisplayName == friendInvitation.FriendDisplayName)?.FirstName;
                        if (friendInvitation.IsInviter.Value)
                        {
                            IInternalUnidentifiedUser invitee = RemoteUserFactory.CreateUnidentifiedUser(friendInvitation.FriendDisplayName, firstName, userDatabase);
                            OutgoingFriendInvitation  outgoingFriendInvitation = new OutgoingFriendInvitation(localUser, invitee, friendInvitation.IsTrusted.Value);
                            outgoingFriendInvitation.SendComplete(friendInvitation.FriendshipInvitationId.Value);
                            localUser.AddOutgoingFriendInvitation(outgoingFriendInvitation);
                        }
                        else
                        {
                            IInternalUnidentifiedUser inviter = RemoteUserFactory.CreateUnidentifiedUser(friendInvitation.FriendDisplayName, firstName, userDatabase);
                            IncomingFriendInvitation  incomingFriendInvitation = new IncomingFriendInvitation(inviter, localUser, friendInvitation.IsTrusted.Value);
                            incomingFriendInvitation.SendComplete(friendInvitation.FriendshipInvitationId.Value);
                            localUser.AddIncomingFriendInvitation(incomingFriendInvitation);
                        }
                    }
                }
            }
        }
        foreach (IInternalIncomingFriendInvitation item in list)
        {
            localUser.RemoveIncomingFriendInvitation(item);
            item.Rejected();
        }
        foreach (IInternalOutgoingFriendInvitation item2 in list2)
        {
            localUser.RemoveOutgoingFriendInvitation(item2);
            item2.Rejected();
        }
    }