public void TestInviteAFriend()
        {
            ProfileDTO          inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO          invited = (ProfileDTO)profiles[1].Tag;
            SessionData         data    = SecurityManager.CreateNewSession(inviter, ClientInformation);
            FriendInvitationDTO result  = null;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNotNull(result);
            Assert.AreEqual(InvitationType.Invite, result.InvitationType);
            int count = Session.QueryOver <FriendInvitation>().RowCount();

            Assert.AreEqual(1, count);
            var invitation = Session.Get <FriendInvitation>(new FriendInvitation()
            {
                Inviter = profiles[0],
                Invited = profiles[1]
            });

            Assert.IsNotNull(invitation);
            Assert.AreEqual(DateTime.Now.Day, invitation.CreateDate.Day);
            Assert.AreEqual(FriendInvitationType.Invitation, invitation.InvitationType);
        }
Beispiel #2
0
        public void TestDoNotSendMessageAfterInvitation()
        {
            profiles[1].Settings.NotificationSocial = ProfileNotification.Message;
            profiles[0].Settings.NotificationSocial = ProfileNotification.Message;
            insertToDatabase(profiles[1]);
            insertToDatabase(profiles[0]);
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
                Assert.IsFalse(((MockEmailService)Service.EMailService).EMailSent);
            });

            int count = Session.QueryOver <Message>().RowCount();

            Assert.AreEqual(0, count);
        }
        public void TestCancelInvitation()
        {
            ProfileDTO          inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO          invited = (ProfileDTO)profiles[1].Tag;
            FriendInvitationDTO result  = null;

            SessionData data = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNotNull(result);
            Assert.AreEqual(InvitationType.Invite, result.InvitationType);
            int count = Session.QueryOver <FriendInvitation>().RowCount();

            Assert.AreEqual(1, count);
            //now the same user wants to cancel the invitation (means delete invitation object from the db)

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Reject;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNull(result);
            count = Session.QueryOver <FriendInvitation>().RowCount();
            Assert.AreEqual(0, count);
        }
Beispiel #4
0
 public static FriendInvitationDTO InviteFriendOperation(InviteFriendOperationData data)
 {
     return(exceptionHandling(delegate
     {
         return Instance.InviteFriendOperation(Token, data);
     }));
 }
        public void TestInviteAFriend_RemoveFromInvitedFavoritesCollection()
        {
            ProfileDTO inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO invited = (ProfileDTO)profiles[1].Tag;

            profiles[1].FavoriteUsers.Add(profiles[0]);
            insertToDatabase(profiles[1]);

            SessionData         data   = SecurityManager.CreateNewSession(inviter, ClientInformation);
            FriendInvitationDTO result = null;

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = service.InviteFriendOperation(data.Token, arg);
            });

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                result        = service.InviteFriendOperation(data.Token, arg);
            });
            var dbProfile = Session.Get <Profile>(invited.Id);

            Assert.AreEqual(1, dbProfile.Friends.Count);
            Assert.AreEqual(0, dbProfile.FavoriteUsers.Count);
        }
Beispiel #6
0
        public FriendInvitationDTO InviteFriendOperation(Token token, InviteFriendOperationData data)
        {
            var securityInfo = SecurityManager.EnsureAuthentication(token);

            var service = new InvitationService(Session, securityInfo, Configuration, PushNotificationService, EMailService);

            return(service.InviteFriendOperation(data));
        }
Beispiel #7
0
        public void TestSendMessageAfterRejectFriendship()
        {
            profiles[1].Settings.NotificationSocial = ProfileNotification.Message;
            profiles[0].Settings.NotificationSocial = ProfileNotification.Message;
            insertToDatabase(profiles[1]);
            insertToDatabase(profiles[0]);
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            data = CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            //reject friendship
            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                arg.Message   = "test msg";
                result        = Service.InviteFriendOperation(data.Token, arg);
                Assert.IsFalse(((MockEmailService)Service.EMailService).EMailSent);
            });

            int count = Session.QueryOver <Message>().RowCount();

            //one message from accept and second from reject friendship
            Assert.AreEqual(2, count);
            var message = Session.QueryOver <Message>().List();

            Assert.AreEqual(invited.GlobalId, message[0].Sender.GlobalId);
            Assert.AreEqual(MessagePriority.System, message[0].Priority);
            Assert.AreEqual(inviter.GlobalId, message[0].Receiver.GlobalId);

            Assert.AreEqual(MessagePriority.System, message[1].Priority);
            Assert.AreEqual(invited.GlobalId, message[1].Sender.GlobalId);
            Assert.AreEqual(inviter.GlobalId, message[1].Receiver.GlobalId);
            Assert.IsNotNull(message[1].Content);
        }
Beispiel #8
0
        public void friendshipOperation(InviteFriendOperation operation)
        {
            var m = new ServiceManager <InviteFriendOperationCompletedEventArgs>(delegate(BodyArchitectAccessServiceClient client1, EventHandler <InviteFriendOperationCompletedEventArgs> operationCompleted)
            {
                InviteFriendOperationData data = new InviteFriendOperationData();
                data.Operation = operation;
                data.User      = user;
                client1.InviteFriendOperationCompleted -= operationCompleted;
                client1.InviteFriendOperationCompleted += operationCompleted;
                client1.InviteFriendOperationAsync(ApplicationState.Current.SessionData.Token, data);
            });

            m.OperationCompleted += (s, a) =>
            {
                FaultException <BAServiceException> faultEx = a.Error as FaultException <BAServiceException>;
                if (a.Error != null && (faultEx == null || faultEx.Detail.ErrorCode != ErrorCode.ObjectNotFound))
                {
                    BugSenseHandler.Instance.SendExceptionAsync(a.Error);
                    onOperationCompleted();
                    BAMessageBox.ShowError(ApplicationStrings.UserViewModel_ErrOperation);
                }
                else
                {
                    if (operation == InviteFriendOperation.Reject)
                    {
                        ApplicationState.Current.ProfileInfo.Friends.Remove(user);
                        NotifyPropertyChanged("IsFriend");
                        NotifyPropertyChanged("IsCalendarAccessible");
                        NotifyPropertyChanged("HasAccessToMeasurements");
                    }
                    else
                    {
                        ApplicationState.Current.ProfileInfo.Invitations.Add(new FriendInvitationDTO()
                        {
                            CreatedDateTime = DateTime.UtcNow, InvitationType = InvitationType.Invite, Invited = user
                        });
                    }
                    NotifyPropertyChanged("CanBeFriend");
                    onOperationCompleted();
                }
            };

            if (!m.Run())
            {
                onOperationCompleted();
                if (ApplicationState.Current.IsOffline)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrOfflineMode);
                }
                else
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrNoNetwork);
                }
            }
        }
        public void TestGetProfileInformations_WithRejectedFriendship()
        {
            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                Service.InviteFriendOperation(data.Token, arg);
            });

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                Service.InviteFriendOperation(data.Token, arg);
            });
            int count = Session.QueryOver <FriendInvitation>().RowCount();

            Assert.AreEqual(0, count);
            //reject friendship

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                Service.InviteFriendOperation(data.Token, arg);
            });
            count = Session.QueryOver <FriendInvitation>().RowCount();
            Assert.AreEqual(0, count);

            GetProfileInformationCriteria criteria = new GetProfileInformationCriteria();
            ProfileInformationDTO         info     = null;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                info = Service.GetProfileInformation(data.Token, criteria);
            });
            Assert.AreEqual(0, info.Messages.Count);
            data = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                info = Service.GetProfileInformation(data.Token, criteria);
            });
            Assert.AreEqual(2, info.Messages.Count);
        }
        public void TestInviteAFriend_RejectFriendship()
        {
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                Service.InviteFriendOperation(data.Token, arg);
            });
            //so now invited user invoke the same method but with reversed arguments (in this case invited became iviter)
            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Accept);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                Service.InviteFriendOperation(data.Token, arg);
            });
            int count          = Session.QueryOver <FriendInvitation>().RowCount();
            var profileInviter = Session.Get <Profile>(inviter.Id);
            var profileInvited = Session.Get <Profile>(invited.Id);

            Assert.AreEqual(1, profileInviter.Friends.Count);
            Assert.AreEqual(1, profileInvited.Friends.Count);

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Reject);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNull(result);
            count          = Session.QueryOver <FriendInvitation>().RowCount();
            profileInviter = Session.Get <Profile>(inviter.Id);
            profileInvited = Session.Get <Profile>(invited.Id);
            Assert.AreEqual(0, profileInviter.Friends.Count);
            Assert.AreEqual(0, profileInvited.Friends.Count);
            Assert.AreEqual(0, count);
        }
        public void TestSendMessageAfterRejectFriendship()
        {
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            //reject friendship
            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                arg.Message   = "test msg";
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            int count = Session.QueryOver <Message>().RowCount();

            //one message from accept and second from reject friendship
            Assert.AreEqual(2, count);
            var message = Session.QueryOver <Message>().List();

            Assert.AreEqual(MessageType.InvitationAccepted, message[0].MessageType);
            Assert.AreEqual(invited.Id, message[0].Sender.Id);
            Assert.AreEqual(MessagePriority.System, message[0].Priority);
            Assert.AreEqual(inviter.Id, message[0].Receiver.Id);

            Assert.AreEqual(MessageType.FriendshipRejected, message[1].MessageType);
            Assert.AreEqual(MessagePriority.System, message[1].Priority);
            Assert.AreEqual(invited.Id, message[1].Sender.Id);
            Assert.AreEqual(inviter.Id, message[1].Receiver.Id);
            Assert.AreEqual("test msg", message[1].Content);
        }
        public void TestInviteAFriend_DeletedProfileException()
        {
            ProfileDTO          inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO          invited = (ProfileDTO)profiles[3].Tag;
            SessionData         data    = SecurityManager.CreateNewSession(inviter, ClientInformation);
            FriendInvitationDTO result  = null;

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
        }
Beispiel #13
0
        public void TestAcceptInvitation_Statistics()
        {
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            data = CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            var dbProfile = Session.Get <Profile>(inviter.GlobalId);
            var test      = dbProfile.Friends.Count;

            Assert.AreEqual(1, dbProfile.Statistics.FriendsCount);
            dbProfile = Session.Get <Profile>(invited.GlobalId);
            Assert.AreEqual(1, dbProfile.Statistics.FriendsCount);

            //now we reject the friendship
            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Reject);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            dbProfile = Session.Get <Profile>(inviter.GlobalId);
            Assert.AreEqual(0, dbProfile.Statistics.FriendsCount);
            dbProfile = Session.Get <Profile>(invited.GlobalId);
            Assert.AreEqual(0, dbProfile.Statistics.FriendsCount);
        }
        public void TestInviteAFriend_RejectAfterRejectFriendship()
        {
            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                Service.InviteFriendOperation(data.Token, arg);
            });
            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Accept);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                Service.InviteFriendOperation(data.Token, arg);
            });
            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Reject);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                Service.InviteFriendOperation(data.Token, arg);
            });
            data = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Reject);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Reject;
                Service.InviteFriendOperation(data.Token, arg);
            });
        }
        void inviteOperation(InviteFriendOperation operation)
        {
            progressBar.ShowProgress(true, ApplicationStrings.ProfileInfoPage_ProgressSend);
            var m = new ServiceManager <InviteFriendOperationCompletedEventArgs>(delegate(BodyArchitectAccessServiceClient client1, EventHandler <InviteFriendOperationCompletedEventArgs> operationCompleted)
            {
                InviteFriendOperationData data = new InviteFriendOperationData();
                data.Operation = operation;
                data.User      = viewModel.User;
                client1.InviteFriendOperationCompleted -= operationCompleted;
                client1.InviteFriendOperationCompleted += operationCompleted;
                client1.InviteFriendOperationAsync(ApplicationState.Current.SessionData.Token, data);
            });

            m.OperationCompleted += (s, a) =>
            {
                progressBar.ShowProgress(false);
                FaultException <BAServiceException> faultEx = a.Error as FaultException <BAServiceException>;
                if (a.Error != null && faultEx.Detail.ErrorCode != ErrorCode.ObjectNotFound)
                {
                    BAMessageBox.ShowError(ApplicationStrings.InvitationViewPage_ErrInvitationOperation);
                }
                else
                {
                    ApplicationState.Current.ProfileInfo.Invitations.Remove(viewModel.Invitation);
                    if (NavigationService.CanGoBack)
                    {
                        NavigationService.GoBack();
                    }
                }
            };

            if (!m.Run())
            {
                progressBar.ShowProgress(false);
                if (ApplicationState.Current.IsOffline)
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrOfflineMode);
                }
                else
                {
                    BAMessageBox.ShowError(ApplicationStrings.ErrNoNetwork);
                }
            }
        }
 private void usrProgressIndicatorButtons1_OkClick(object sender, CancellationSourceEventArgs e)
 {
     try
     {
         InviteFriendOperationData data = new InviteFriendOperationData();
         data.User      = user;
         data.Operation = operation;
         data.Message   = memoEdit1.Text;
         ServiceManager.InviteFriendOperation(data);
         UserContext.RefreshUserData();
         ThreadSafeClose();
     }
     catch (CannotAcceptRejectInvitationDoesntExistException ex)
     {
         UserContext.RefreshUserData();
         ExceptionHandler.Default.Process(ex, ApplicationStrings.ErrorInvitationDoesntExist, ErrorWindow.MessageBox);
         ThreadSafeClose(System.Windows.Forms.DialogResult.OK);
     }
 }
Beispiel #17
0
        public void TestInviteAFriend_AcceptInvitation_UsingInviteOperation()
        {
            ProfileDTO          inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO          invited = (ProfileDTO)profiles[1].Tag;
            FriendInvitationDTO result  = null;

            SessionData data = CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNotNull(result);
            Assert.AreEqual(InvitationType.Invite, result.InvitationType);

            //so now invited user invoke the same method but with reversed arguments (in this case invited became iviter)
            data = CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNull(result);

            int count          = Session.QueryOver <FriendInvitation>().RowCount();
            var profileInviter = Session.Get <Profile>(inviter.GlobalId);
            var profileInvited = Session.Get <Profile>(invited.GlobalId);

            Assert.AreEqual(1, profileInviter.Friends.Count);
            Assert.AreEqual(1, profileInvited.Friends.Count);
            Assert.AreEqual(profileInvited, profileInviter.Friends.ElementAt(0));
            Assert.AreEqual(profileInviter, profileInvited.Friends.ElementAt(0));
            Assert.AreEqual(0, count);
        }
        public void TestInviteAFriend_AcceptInvitation_UsingAcceptOperation()
        {
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNotNull(result);
            Assert.AreEqual(InvitationType.Invite, result.InvitationType);

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Accept);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNull(result);

            int count          = Session.QueryOver <FriendInvitation>().RowCount();
            var profileInviter = Session.Get <Profile>(inviter.Id);
            var profileInvited = Session.Get <Profile>(invited.Id);

            Assert.AreEqual(1, profileInviter.Friends.Count);
            Assert.AreEqual(1, profileInvited.Friends.Count);
            Assert.AreEqual(profileInvited, profileInviter.Friends[0]);
            Assert.AreEqual(profileInviter, profileInvited.Friends[0]);
            Assert.AreEqual(0, count);
        }
        public void TestInviteAFriend_DuplicateInvitation()
        {
            ProfileDTO          inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO          invited = (ProfileDTO)profiles[1].Tag;
            FriendInvitationDTO result  = null;

            SessionData data = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNotNull(result);
            Assert.AreEqual(InvitationType.Invite, result.InvitationType);
            int count = Session.QueryOver <FriendInvitation>().RowCount();

            Assert.AreEqual(1, count);
            //we send invitation second time - in the database still should be one invitation

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //result = Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });
            Assert.IsNull(result);
            count = Session.QueryOver <FriendInvitation>().RowCount();
            Assert.AreEqual(1, count);
            var invitation = Session.QueryOver <FriendInvitation>().SingleOrDefault();

            Assert.IsNotNull(invitation);
            Assert.AreEqual(FriendInvitationType.Invitation, invitation.InvitationType);
        }
        public void TestSendMessageAfterRejectInvitation()
        {
            FriendInvitationDTO result = null;

            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Reject;
                arg.Message   = "test msg";
                result        = Service.InviteFriendOperation(data.Token, arg);
            });

            int count = Session.QueryOver <Message>().RowCount();

            Assert.AreEqual(1, count);
            var message = Session.QueryOver <Message>().SingleOrDefault();

            Assert.AreEqual(MessageType.InvitationRejected, message.MessageType);
            Assert.AreEqual("test msg", message.Content);
            Assert.AreEqual(MessagePriority.System, message.Priority);
            Assert.AreEqual(invited.Id, message.Sender.Id);
            Assert.AreEqual(inviter.Id, message.Receiver.Id);
        }
        public void TestInviteAFriend_AlreadyFriendsException()
        {
            ProfileDTO  inviter = (ProfileDTO)profiles[0].Tag;
            ProfileDTO  invited = (ProfileDTO)profiles[1].Tag;
            SessionData data    = SecurityManager.CreateNewSession(inviter, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, invited, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = invited;
                arg.Operation = InviteFriendOperation.Invite;
                Service.InviteFriendOperation(data.Token, arg);
            });
            //accept invitation
            data = SecurityManager.CreateNewSession(invited, ClientInformation);

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Accept);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Accept;
                Service.InviteFriendOperation(data.Token, arg);
            });

            //this should throw exception because those users are friends already

            RunServiceMethod(delegate(InternalBodyArchitectService Service)
            {
                //Service.InviteFriendOperation(data.Token, inviter, InviteFriendOperation.Invite);
                var arg       = new InviteFriendOperationData();
                arg.User      = inviter;
                arg.Operation = InviteFriendOperation.Invite;
                Service.InviteFriendOperation(data.Token, arg);
            });
        }
 public FriendInvitationDTO InviteFriendOperation(Token token, InviteFriendOperationData data)
 {
     return(exceptionHandling(token, () => InternalService.InviteFriendOperation(token, data)));
 }
Beispiel #23
0
 public FriendInvitationDTO InviteFriendOperation(Token token, InviteFriendOperationData data)
 {
     throw new NotImplementedException();
 }
        public FriendInvitationDTO InviteFriendOperation(InviteFriendOperationData data)
        {
            Log.WriteWarning("InviteFriendOperation:Username={0},Operation:{1},User:{2}", SecurityInfo.SessionData.Profile.UserName, data.Operation, data.User.UserName);

            if (SecurityInfo.SessionData.Profile.GlobalId == data.User.GlobalId)
            {
                throw new InvalidOperationException("You cannot add yourself as a friend");
            }
            var session = Session;

            FriendInvitation returnValue = null;

            using (var tx = session.BeginSaveTransaction())
            {
                var friendProfile = session.Get <Profile>(data.User.GlobalId);
                var inviter       = session.Get <Profile>(SecurityInfo.SessionData.Profile.GlobalId);

                if (friendProfile.IsDeleted)
                {
                    throw new UserDeletedException("Cannot invite a deleted profile");
                }
                if (data.Operation == Model.InviteFriendOperation.Invite)
                {
                    if (inviter.Friends.Contains(friendProfile))
                    {
                        throw new ProfileAlreadyFriendException("Specified profile is already a friend");
                    }
                    //check if user add invitation second time
                    var existingInvitation = session.Get <FriendInvitation>(new FriendInvitation()
                    {
                        Inviter = inviter,
                        Invited = friendProfile
                    });
                    if (existingInvitation == null)
                    {
                        Log.WriteVerbose("1: existingInvitation == null");
                        existingInvitation = session.Get <FriendInvitation>(new FriendInvitation()
                        {
                            Inviter = friendProfile,
                            Invited = inviter
                        });
                        if (existingInvitation == null)
                        {
                            Log.WriteVerbose("2: existingInvitation == null. Perform invite operation");
                            FriendInvitation invitation = new FriendInvitation();
                            invitation.Inviter        = inviter;
                            invitation.Invited        = friendProfile;
                            invitation.Message        = data.Message;
                            invitation.CreateDate     = Configuration.TimerService.UtcNow;
                            invitation.InvitationType = FriendInvitationType.Invite;
                            session.Save(invitation);
                            returnValue = invitation;

                            if ((friendProfile.Settings.NotificationSocial & ProfileNotification.Email) == ProfileNotification.Email)
                            {
                                EmailService.SendEMail(friendProfile, "InviteFriendEMailSubject", "InviteFriendEMailMessage", inviter.UserName, DateTime.Now, data.Message);
                            }
                        }
                        else
                        {
                            acceptInvitation(session, friendProfile, inviter, existingInvitation, data);
                        }
                    }
                }
                else if (data.Operation == Model.InviteFriendOperation.Accept)
                {
                    var existingInvitation = session.Get <FriendInvitation>(new FriendInvitation()
                    {
                        Inviter = friendProfile,
                        Invited = inviter
                    });
                    if (existingInvitation != null)
                    {
                        acceptInvitation(session, friendProfile, inviter, existingInvitation, data);
                    }
                    else
                    {
                        throw new CannotAcceptRejectInvitationDoesntExistException("You are not invited to be a friend for specified user");
                    }
                }
                else
                {//reject
                    var existingInvitation = session.Get <FriendInvitation>(new FriendInvitation()
                    {
                        Inviter = friendProfile,
                        Invited = inviter
                    });

                    if (existingInvitation != null)
                    {
                        Log.WriteVerbose("3: existingInvitation != null.");
                        if (existingInvitation.InvitationType == FriendInvitationType.Invite)
                        {
                            session.Delete(existingInvitation);

                            //messageService.SendSystemMessage(data.Message, inviter, friendProfile, MessageType.InvitationRejected);
                            //SendMessage(friendProfile.Settings.NotificationSocial, inviter, friendProfile, data.Message, MessageType.InvitationRejected
                            //, "RejectInvitationEmailSubject", "RejectInvitationEmailMessage", inviter.UserName, DateTime.Now, data.Message);
                            NewSendMessageEx(inviter.Settings.NotificationSocial, inviter, friendProfile, "RejectInvitationEmailSubject", "RejectInvitationEmailMessage", inviter.UserName, DateTime.Now, data.Message);
                        }
                        else
                        {
                            Log.WriteError("4:This should not be invoked.");
                        }
                    }
                    else if (inviter.Friends.Contains(friendProfile))
                    {
                        Log.WriteVerbose("Reject friendship");
                        inviter.Friends.Remove(friendProfile);
                        friendProfile.Friends.Remove(inviter);
                        ProfileStatisticsUpdater.UpdateFriends(session, inviter, friendProfile);
                        //SendMessage(friendProfile.Settings.NotificationSocial, inviter, friendProfile, data.Message, MessageType.FriendshipRejected
                        //    , "RejectFriendshipEmailSubject", "RejectFriendshipEmailMessage", inviter.UserName, DateTime.Now, data.Message);
                        NewSendMessageEx(inviter.Settings.NotificationSocial, inviter, friendProfile, "RejectFriendshipEmailSubject", "RejectFriendshipEmailMessage", inviter.UserName, DateTime.Now, data.Message);
                        //messageService.SendSystemMessage(data.Message, inviter, friendProfile, MessageType.FriendshipRejected);
                    }
                    else
                    {
                        existingInvitation = session.Get <FriendInvitation>(new FriendInvitation()
                        {
                            Inviter = inviter,
                            Invited = friendProfile
                        });
                        //user whats to cancel invitation
                        if (existingInvitation != null)
                        {
                            Log.WriteVerbose("Reject invitation");
                            session.Delete(existingInvitation);
                        }
                        else
                        {
                            throw new CannotAcceptRejectInvitationDoesntExistException("There is no invitation to reject");
                        }
                    }
                }


                tx.Commit();
                Log.WriteVerbose("Operation completed");
                if (returnValue != null)
                {
                    return(ObjectsConverter.ConvertFriendInvitation(inviter, returnValue));
                }
                return(null);
            }
        }
        void acceptInvitation(ISession session, Profile inviter, Profile invited, FriendInvitation existingInvitation, InviteFriendOperationData data)
        {
            Log.WriteVerbose("accept invitation. Friend:{0}, Inviter:{1}", inviter.UserName, invited.UserName);
            inviter.Friends.Add(invited);
            invited.Friends.Add(inviter);
            session.Update(inviter);
            session.Update(invited);
            session.Delete(existingInvitation);

            //now check and remove this user from followers list
            invited.FavoriteUsers.Remove(inviter);
            inviter.FavoriteUsers.Remove(invited);
            ProfileStatisticsUpdater.UpdateFriends(session, invited, inviter);
            //MessageService messageService = new MessageService(Session, null, Configuration, PushNotification);
            //messageService.SendSystemMessage(data.Message,invited, inviter, MessageType.InvitationAccepted);
            //SendMessage(inviter.Settings.NotificationSocial, invited, inviter, data.Message, MessageType.InvitationAccepted, "AcceptInvitationEMailSubject", "AcceptInvitationEMailMessage", inviter.UserName,DateTime.Now,data.Message);

            NewSendMessageEx(inviter.Settings.NotificationSocial, invited, inviter, "AcceptInvitationEMailSubject", "AcceptInvitationEMailMessage", inviter.UserName, DateTime.Now, data.Message);
        }