/**
  * @param string $provider
  * @param OAuth2User $oauthUser
  * @param string $name
  * @param string $email
  * @param string $bio
  * @return User
  */
 public function create($provider, OAuth2User $oauthUser, $name = null, $email = null, $bio = null)
 {
     if ($email === null && $oauthUser->getEmail() == '' || $name === null && $oauthUser->getName() == '') {
         return;
     }
     $user = User::create($name ?: $oauthUser->getName(), $email ?: $oauthUser->getEmail(), $bio);
     $user->addProfile(SocialProfile::create($provider, $oauthUser, true));
     $this->repository->append($user);
     $message = $this->deliveryService->getMessageFromTemplate('Welcome', array('name' => $user->getName()));
     $message->setTo($user->getEmail());
     $this->deliveryService->send($message);
     return $user;
 }
 /**
  * @param Payment $payment
  * @return Attendee
  */
 public function confirmPayment(Payment $payment)
 {
     $attendee = $this->repository->findOneByPayment($payment);
     if ($attendee === null) {
         return;
     }
     // TODO refactor this!
     if ($attendee->isStudentRegistration()) {
         $attendee->setStatus(Attendee::CHECK_PAYMENT);
     } else {
         $attendee->approve();
     }
     $this->repository->update($attendee);
     $message = $this->deliveryService->getMessageFromTemplate('PaymentConfirmation', array('user_name' => $attendee->getUser()->getName(), 'event_name' => $attendee->getEvent()->getName()));
     $message->setTo($attendee->getUser()->getEmail());
     $this->deliveryService->send($message);
     return $attendee;
 }