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