/** * Build an instance of ReferralInterface using data from the form, and tie it to the logged in user and the current * existing reward configuration from the database. * * @param array $data Data from a ReferAFriend form * * @return Referral */ public function build(array $data) { if ($this->_user instanceof User\AnonymousUser) { throw new \LogicException('User must be logged in to make a referral'); } if (!array_key_exists('email', $data)) { throw new \LogicException('Data must contain a value with a key of `email`'); } $referral = $this->_factory->getReferral(); $referral->setReferrer($this->_user); $referral->setRewardConfig($this->_config); $referral->setReferredEmail($data['email']); $referral->setReferredName($data['name']); $referral->setStatus(Statuses::PENDING); $referral->setCreatedAt(new \DateTime()); return $referral; }
/** * Bind query results to an instance of ReferralProxy * * @param Result $result * * @return array */ private function _bind(Result $result) { $referrals = []; foreach ($result as $row) { $referral = $this->_referralFactory->getReferralProxy(); $referral->setID($row->id); $referral->setStatus($row->status); $referral->setRewardConfigID($row->rewardConfigID); $referral->setReferrerID($row->referrerID); $referral->setReferredEmail($row->referredEmail); $referral->setReferredName($row->referredName); $referral->setLoaders($this->_entityLoaders); $createdAt = new \DateTime(); $createdAt->setTimestamp($row->createdAt); $referral->setCreatedAt($createdAt); $referrals[] = $referral; } return $referrals; }