/**
  * Linkedin authentication
  *
  * @ApiDoc(
  *     description = "Linkedin authentication",
  *     statusCodes = {
  *         200 = "Returned when successful",
  *         400 = "Returned when have any error"
  *     },
  *      output={
  *          "class" = "array<Hackathon\WorkBundle\Entity\User>",
  *          "groups" = {"user_detail"}
  *      },
  *      views = {"default"}
  * )
  *
  * @Get("/authentications/linkedin/{token}")
  *
  * @View(serializerGroups="user_detail")
  *
  * @param string $token
  * @return User
  */
 public function getAuthenticationLinkedinAction($token)
 {
     //Get user
     $linkedinUser = LinkedinUser::getUserByToken($token);
     $userManager = $this->getUserManager();
     $user = $userManager->findByLinkedin($linkedinUser);
     return $this->checkEmptyObject($user, 'hackathon.message._user_not_found');
 }
예제 #2
0
 /**
  * @inheritdoc
  */
 public function findByLinkedin(LinkedinUser $linkedinUser, User $user = null)
 {
     $linkedinUserTemp = $this->linkedinRepository->findByIdLinkedin($linkedinUser->getIdLinkedin());
     $arrLinkedinSkill = $this->linkedinSkillRepository->getOrCreateArray($linkedinUser->getLinkedinSkills());
     $skillResults = $arrLinkedinSkill['skill'];
     $linkedinSkillResults = $arrLinkedinSkill['linkedinSkill'];
     $linkedinUser->setLinkedinSkills($linkedinSkillResults);
     if (empty($linkedinUserTemp)) {
         $linkedinUserTemp = $this->persist($linkedinUser);
     } else {
         $linkedinUserTemp->updateFromAnother($linkedinUser);
         $this->entityManager->flush();
     }
     if (empty($user)) {
         /** @var User $user */
         $user = $this->repository->findUserByIdLinkedinUser($linkedinUserTemp->getId());
         if (empty($user)) {
             $user = $this->repository->createFromLinkedinUser($linkedinUserTemp);
             $user->setSkills($skillResults);
             $this->persist($user);
             $skills = $user->getSkills();
             $counts = $linkedinUserTemp->getCounts();
             $i = 0;
             foreach ($skills as $skill) {
                 $this->repository->newNumberForSkill($user, $skill, $counts[$i++], 1);
             }
         } else {
             foreach ($skillResults as $skill) {
                 $user->addSkill($skill);
             }
             $this->entityManager->flush();
         }
     } else {
         $user->setLinkedinUser($linkedinUserTemp);
         $this->entityManager->flush();
     }
     return $user;
 }
예제 #3
0
 /**
  * @param $token
  * @return Response
  */
 public function getInfoAction($token)
 {
     $linkedinUser = LinkedinUser::getUserByToken($token);
     $user = new User();
     $user->setEmail($linkedinUser->getEmail());
     $user->setName($linkedinUser->getFirstName() . ' ' . $linkedinUser->getLastName());
     $user->setLinkedinUser($linkedinUser);
     /** @var EntityManager $entityManager */
     $entityManager = $this->get('neo4j.manager');
     $entityManager->persist($linkedinUser);
     $entityManager->persist($user);
     $entityManager->flush();
     return new Response('');
 }
예제 #4
0
 /**
  * @param LinkedinUser $linkedinUser
  */
 public function setLinkedinUser(LinkedinUser $linkedinUser, $withData = false)
 {
     $this->linkedinUser = $linkedinUser;
     if ($withData) {
         $this->setName($linkedinUser->getFirstName() . ' ' . $linkedinUser->getLastName());
         $this->setEmail($linkedinUser->getEmail());
         $this->setAvatar($linkedinUser->getPictureUrl());
     }
 }
예제 #5
0
 /**
  * @param LinkedinUser $linkedinUser
  * @return $this
  */
 public function updateFromAnother(LinkedinUser $linkedinUser)
 {
     $this->setEmail($linkedinUser->getEmail());
     $this->setFirstName($linkedinUser->getFirstName());
     $this->setLastName($linkedinUser->getLastName());
     $this->setNumConnections($linkedinUser->getNumConnections());
     $this->setPictureUrl($linkedinUser->getPictureUrl());
     $this->setSiteUrl($linkedinUser->getSiteUrl());
     $this->setLinkedinSkills($linkedinUser->getLinkedinSkills());
     $this->setCounts($linkedinUser->getCounts());
     return $this;
 }