/**
  * Add invitation into db
  *
  * @author Hrayr Shahbazyan
  * @param array $data
  * @return int
  */
 public function addInvitation(array $data)
 {
     //Get entity manager
     $em = $this->getEntityManager();
     //Get the entity
     $invitation = new \Company\Entity\Invitation();
     //Populate the Invitation's entity
     $invitation->setUser($this->getServiceLocator()->get('user.service')->getUserById($data['user_id']))->setGroup($this->getServiceLocator()->get('group.service')->getGroupById($data['group_id']))->setUserEmail($data['user_email']);
     $em->persist($invitation);
     $em->flush();
     return $invitation->getId();
 }
 /**
  * Add invitation
  *
  * @author Stoyan Rangelov
  * @param array $data
  * @return array
  */
 public function addInvitation(array $data)
 {
     //Get entity manager
     $em = $this->getEntityManager();
     //Input filters
     $inputFilter = new \Company\InputFilter\Invitation();
     $customFilter = $inputFilter->addInvitation($this->getCompanyRepo());
     $inputFilter->setInputFilter($customFilter);
     $filter = $inputFilter->getInputFilter();
     $filter->setData($data);
     if ($filter->isValid()) {
         $invitation = new \Company\Entity\Invitation();
         $invitation->setEmail($data['email'])->setCompany($this->getCompanyRepo()->find($data['company_id']))->setCode(md5(uniqid()))->setCreatedAt(new \DateTime())->setUpdatedAt(new \DateTime());
         $em->persist($invitation);
         $em->flush();
         $result = array();
         $userInfo = $this->getUserInformationRepo()->findOneBy(array('user' => $data['user_id']));
         $username = $userInfo->getFirstName() . ' ' . $userInfo->getLastName();
         //If the user is not registered
         if (is_null($this->getUsersRepo()->findOneBy(array('login' => $invitation->getEmail())))) {
             $this->sendInvitationEmail($invitation->getEmail(), $invitation->getCode(), $username);
         } else {
             //                $email = $invitation->getEmail();
             //                $sql = "SELECT id, login from user where login = '******'";
             //                $stmt = $this->getEntityManager()->getConnection()->prepare($sql);
             //                $stmt->execute();
             //                $userData = $stmt->fetchAll();
             //                $result['user_id'] = $userData[0]['id'];
             $this->sendInternalInvitationEmail($invitation->getEmail(), $invitation->getCode(), $username);
         }
         $result['status_code'] = 201;
         $result['invitation_id'] = $invitation->getId();
         return $result;
     } else {
         return $this->getErrorMessages($filter);
     }
 }