/**
  * @param User $user
  *
  * @return array
  */
 public function findByUser(User $user)
 {
     $em = $this->getEntityManager();
     $qb = $em->createQueryBuilder();
     $qb->select('i')->from('ProjectPreviewProjectBundle:Input', 'i')->join('ProjectPreviewProjectBundle:Project', 'p')->join('ProjectPreviewProjectBundle:User', 'u', 'WITH', 'u.id = :user_id')->where('p.project_manager = u')->orWhere('p.commercial = u')->orWhere('u in (p.clients')->orderBy('p.name', 'ASC')->setParameter('user_id', $user->getId());
     $query = $qb->getQuery();
     return $query->getArrayResult();
 }
 /**
  * @param User $user
  */
 public function updateUser(User $user)
 {
     $plainPassword = $user->getPlainPassword();
     if (!empty($plainPassword)) {
         $encoder = $this->getEncoder($user);
         $user->setPassword($encoder->encodePassword($plainPassword, $user->getSalt()));
         $user->eraseCredentials();
     }
 }
 /**
  * Import Users
  */
 private function importUsers()
 {
     $this->output->write(sprintf('%-30s', 'Importing users'));
     $previewUsers = $this->previewService->getUsers();
     $created = 0;
     $updated = 0;
     foreach ($previewUsers as $previewUser) {
         if (!strlen($previewUser->email)) {
             continue;
         }
         /**
          * @var User $user
          */
         $user = $this->entityManager->getRepository('ProjectPreviewUserBundle:User')->find($previewUser->id);
         if (is_null($user)) {
             $user = new User();
             $user->setId($previewUser->id);
             $user->setPassword('toto');
             $created++;
         } else {
             $updated++;
         }
         $user->setEmail($previewUser->email);
         $user->setUsername($previewUser->email);
         $user->setLastname($previewUser->lastname);
         $user->setFirstname($previewUser->firstname);
         if (isset($previewUser->avatar->urls->avatar_xs)) {
             $user->setAvatar($previewUser->avatar->urls->avatar_xs);
         }
         $this->entityManager->persist($user);
     }
     $this->output->writeln(sprintf('done (total: % 4d, created: % 4d, updated: % 4d)', $created + $updated, $created, $updated));
     $this->entityManager->flush();
 }
 /**
  * @param User $user
  *
  * @return \Google_Client
  */
 public function getAuthenticateClient(User $user)
 {
     $client = $this->getClient();
     $client->setAccessToken($user->getGoogleAgendaToken());
     if ($client->isAccessTokenExpired()) {
         $token = json_decode($user->getGoogleAgendaToken());
         if (isset($token->refreshToken)) {
             $client->refreshToken($token->refreshToken);
             $user->setGoogleAgendaToken($client->getAccessToken());
             $this->entityManager->persist($user);
             $this->entityManager->flush();
         }
     }
     return $client;
 }