/**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $users = array(1 => array('name' => 'John Doe', 'email' => '*****@*****.**', 'friends' => array(), 'requests' => array()), 2 => array('name' => 'Sara Doe', 'email' => '*****@*****.**', 'friends' => array(), 'requests' => array(1)), 3 => array('name' => 'James Doe', 'email' => '*****@*****.**', 'friends' => array(), 'requests' => array(1, 2)), 4 => array('name' => 'Jane Smith', 'email' => '*****@*****.**', 'friends' => array(), 'requests' => array(3)), 5 => array('name' => 'Anonymous', 'email' => '*****@*****.**', 'friends' => array(), 'requests' => array(4)));
     foreach ($users as $id => $userData) {
         $user = new User();
         $user->setName($userData['name']);
         $user->setEmail($userData['email']);
         foreach ($userData['friends'] as $friendId) {
             $user->addFriend($this->getReference('user_' . $friendId));
         }
         foreach ($userData['requests'] as $requestId) {
             $user->addRequest($this->getReference('user_' . $requestId));
         }
         $manager->persist($user);
         $this->addReference('user_' . $id, $user);
     }
     $manager->flush();
 }
Example #2
0
 /**
  * @param UserDocument $user
  * @param UserDocument $request
  */
 public function addRequest($user, $request)
 {
     $user->addRequest($request);
     $this->manager->persist($user);
     $this->manager->flush();
 }
 /**
  * Route to add friends (which also accepts friend requests)
  *
  * @param User $friend User to link current user with
  *
  * @return null
  *
  * @ApiDoc(
  *  resource=false,
  *  description="Creates a friendship request of current user to desired one",
  *  statusCodes={
  *      401 = "Unauthorized - log in first",
  *      204 = "Successfully requested",
  *      409 = "User already added as friend"
  *  }
  * )
  * @Annotations\Link(requirements={"friend"="\w{24}"})
  */
 public function linkAction(User $friend)
 {
     $currentUser = $this->getUser();
     if (!$currentUser instanceof User) {
         throw new UnauthorizedHttpException('Probably you are not authorized');
     }
     $currentUserId = $currentUser->getId();
     $friendId = $friend->getId();
     if ($currentUser->hasFriend($friendId)) {
         $conflictMessage = sprintf('user %s is already your friend', $friendId);
         throw new ConflictHttpException($conflictMessage);
     }
     // Add a friend (subscription) and make friendship request
     $currentUser->addFriend($friendId);
     $friend->addRequest($currentUserId);
     // Accept removes request if exists any
     $currentUser->removeRequest($friendId);
     // Persist changes to DB
     $documentManager = $this->get('doctrine.odm.mongodb.document_manager');
     $documentManager->flush();
 }