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); }