示例#1
0
        public object Post(AcceptFriendRequest request)
        {
            AcceptFriendRequestValidator.ValidateAndThrow(request);

            using (var session = NHibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var friendQuery = session.QueryOver <FriendModel>()
                                      .Where(row => row.Friendee.Id == request.FriendUserId)
                                      .And(row => row.Friender.Id == request.UserId);

                    var friend = friendQuery.SingleOrDefault <FriendModel>();

                    if (friend.FriendRequestStatus != FriendRequestStatus.Accepted)
                    {
                        friend.FriendRequestStatus = FriendRequestStatus.Accepted;
                        session.SaveOrUpdate(friend);
                    }

                    var converseFriendQuery = session.QueryOver <FriendModel>()
                                              .Where(row => row.Friendee.Id == request.UserId)
                                              .And(row => row.Friender.Id == request.FriendUserId);

                    var converseFriend = converseFriendQuery.SingleOrDefault <FriendModel>();

                    if (converseFriend == null)
                    {
                        // Set up the converse friendship
                        var newConverseFriend = new FriendModel()
                        {
                            Friender            = session.Get <UserModel>(request.FriendUserId),
                            Friendee            = session.Get <UserModel>(request.UserId),
                            FriendRequestStatus = FriendRequestStatus.Accepted,
                            FollowRequestStatus = FollowRequestStatus.Uninitiated,
                        };

                        session.SaveOrUpdate(newConverseFriend);
                    }

                    transaction.Commit();

                    return(new FriendDto(friend));
                }
            }
        }
示例#2
0
        public object Put(RequestFriend request)
        {
            RequestFriendValidator.ValidateAndThrow(request);

            using (var session = NHibernateHelper.OpenSession())
            {
                using (var transaction = session.BeginTransaction())
                {
                    var friend = new FriendModel()
                    {
                        Friendee            = session.Get <UserModel>(request.FriendUserId),
                        Friender            = session.Get <UserModel>(request.UserId),
                        FriendRequestStatus = FriendRequestStatus.Pending,
                        FollowRequestStatus = FollowRequestStatus.Uninitiated,
                    };

                    session.SaveOrUpdate(friend);

                    transaction.Commit();

                    return(new FriendDto(friend));
                }
            }
        }