public GetUserDetailsResponse GetUserDetails(ISession session, GetUserDetailsRequest request)
 {
     var response = request.CreateResponse<GetUserDetailsResponse>();
     using (var uow = UnitOfWorkFactory.Create())
     {
         Specification<User> spec = null;
         if (request.UserId != 0)
         {
             spec = UserSpecification.Id(request.UserId);
         }
         else if (!string.IsNullOrEmpty(request.Name))
         {
             spec = UserSpecification.Name(request.Name);
         }
         else
         {
             return response; //invalid request
         }
         
         var user = uow.UsersRepository.FirstMatching(spec);
         if (user != null)
         {
             response.User = user.ProjectedAs<UserDto>();
             response.IsFriend = session.User.Friends.Any(p => p.Id == user.Id);
             
             uow.Attach(session.User);
         }
     }
     return response;
 }
		public Task<GetUserDetailsResponse> GetUserDetails(GetUserDetailsRequest request)
		{
			return ConnectionManager.SendRequestAndWaitResponse<GetUserDetailsResponse>(request);
		}