public void DeleteFriend(UserFriendRequest request, Result result)
        {
            try
            {
                _unitOfWork.FriendRepo.RemoveFriend(request.UserId, request.FriendId);

                result.Status = Status.Success.ToString();
                result.Message = string.Format("Successfully removed {0} and {1} as friends", request.FriendId, request.UserId);
            }
            catch (Exception ex)
            {
                result.Status = Status.Error.ToString();
                result.Message = string.Format("Error deleting friends {0}. Reason :: {1}", request, ex.Message);
            }

        }
        public void AddFriend(UserFriendRequest request, Result result)
        {
            try
            {
                _unitOfWork.FriendRepo.AddFriend(request.UserId, request.FriendId);

                result.Status = Status.Success.ToString();
                result.Message = string.Format("Successfully added {0} and {1} as friends", request.FriendId, request.UserId);
            }
            catch (Exception ex)
            {
                result.Status = Status.Error.ToString();
                result.Message = string.Format("Error adding user {0} as friend of user {1}. Reason :: {2}", request.FriendId, request.UserId, ex.Message);
            }

        }
        public IEnumerable<UsersConnectionResponse> GetShortestConnection(UserFriendRequest request, Result result)
        {
            try
            {
                var allPossiblePaths = _unitOfWork.FriendNetworkRepo.GetAllPaths(request.UserId, request.FriendId).ToList();

                var allPaths = allPossiblePaths.Select(path => path as IList<UserResponse> ?? path.ToList()).Select(userResponses => new UsersConnectionResponse
                {
                    Count = userResponses.Count(), Path = string.Join("->", userResponses.Select(each => each.UserName))
                }).ToList();

                result.Status = Status.Success.ToString();

                return allPaths.OrderBy(each=>each.Count);
            }
            catch (Exception ex)
            {
                result.Status = Status.Error.ToString();
                result.Message = string.Format("Error in getting the connection between {0} and {1}. Reason :: {2}", request.UserId, request.FriendId, ex.Message);
            }

            return null;
        }
 public Response<IEnumerable<UsersConnectionResponse>> Post(UserFriendRequest request)
 {
     return FriendFinderServiceBase.GetResponse(request, (req, result) => _friendsController.GetShortestConnection(request, result));
 }
        public Response Delete(int userId, int friendId)
        {
            var request = new UserFriendRequest { UserId = userId, FriendId = friendId };

            return FriendFinderServiceBase.GetResponse(request, (req, result) => _friendsController.DeleteFriend(request, result));
        }