示例#1
0
        public void AddFriendshipInvitation(FriendshipInvitation invitation, User friend)
        {
            long invitationId = invitation.FriendshipInvitationId.Value;

            if (oldInvitationIds.Contains(invitationId) || outgoingFriendInvitations.Any((IInternalOutgoingFriendInvitation i) => i.InvitationId == invitationId) || incomingFriendInvitations.Any((IInternalIncomingFriendInvitation i) => i.InvitationId == invitationId))
            {
                return;
            }
            if (invitation.IsInviter.Value)
            {
                IInternalOutgoingFriendInvitation internalOutgoingFriendInvitation = outgoingFriendInvitations.FirstOrDefault((IInternalOutgoingFriendInvitation i) => i.Invitee.DisplayName.Text == invitation.FriendDisplayName && i.RequestTrust != invitation.IsTrusted);
                if (internalOutgoingFriendInvitation != null)
                {
                    RemoveOutgoingFriendInvitation(internalOutgoingFriendInvitation.InvitationId);
                }
                IInternalUnidentifiedUser invitee = RemoteUserFactory.CreateUnidentifiedUser(friend.DisplayName, friend.FirstName, userDatabase);
                OutgoingFriendInvitation  outgoingFriendInvitation = new OutgoingFriendInvitation(this, invitee, invitation.IsTrusted.Value);
                outgoingFriendInvitation.SendComplete(invitationId);
                AddOutgoingFriendInvitation(outgoingFriendInvitation);
            }
            else
            {
                IInternalIncomingFriendInvitation internalIncomingFriendInvitation = incomingFriendInvitations.FirstOrDefault((IInternalIncomingFriendInvitation i) => i.Inviter.DisplayName.Text == invitation.FriendDisplayName && i.RequestTrust != invitation.IsTrusted);
                if (internalIncomingFriendInvitation != null)
                {
                    RemoveIncomingFriendInvitation(internalIncomingFriendInvitation.InvitationId);
                }
                IInternalUnidentifiedUser inviter = RemoteUserFactory.CreateUnidentifiedUser(friend.DisplayName, friend.FirstName, userDatabase);
                IncomingFriendInvitation  incomingFriendInvitation = new IncomingFriendInvitation(inviter, this, invitation.IsTrusted.Value);
                incomingFriendInvitation.SendComplete(invitationId);
                AddIncomingFriendInvitation(incomingFriendInvitation);
            }
        }
    private static void HandleFriendshipInvitationAdded(IUserDatabase userDatabase, IInternalLocalUser localUser, AbstractAddFriendshipInvitationNotificationEventArgs e)
    {
        AddFriendshipInvitationNotification notification = e.Notification;
        FriendshipInvitation invitation = notification.Invitation;
        User friend = notification.Friend;

        userDatabase.PersistUser(null, null, invitation.FriendDisplayName, friend.FirstName, friend.Status);
        FriendInvitationDocument friendInvitationDocument = new FriendInvitationDocument();

        friendInvitationDocument.FriendInvitationId = invitation.FriendshipInvitationId.Value;
        friendInvitationDocument.IsInviter          = invitation.IsInviter.Value;
        friendInvitationDocument.IsTrusted          = invitation.IsTrusted.Value;
        friendInvitationDocument.DisplayName        = invitation.FriendDisplayName;
        FriendInvitationDocument doc = friendInvitationDocument;

        userDatabase.InsertOrUpdateFriendInvitation(doc);
        localUser.AddFriendshipInvitation(invitation, friend);
    }