/** * 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'); }
/** * @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; }
/** * @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(''); }
/** * @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()); } }
/** * @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; }