/** * Save the referral to the database. * * @param ReferralInterface $referral * * @return ReferralInterface */ public function save(ReferralInterface $referral) { $result = $this->_query->run(' INSERT INTO refer_a_friend_referral ( reward_config_id, status, referrer_id, referred_email, referred_name, created_at, created_by, updated_at, updated_by ) VALUES ( :rewardConfigID?i, :status?s, :referrerID?i, :referredEmail?s, :referredName?s, :createdAt?d, :createdBy?in, :createdAt?d, :createdBy?in ) ', ['rewardConfigID' => $referral->getRewardConfig()->getID(), 'status' => $referral->getStatus(), 'referrerID' => $referral->getReferrer()->id, 'referredEmail' => $referral->getReferredEmail(), 'referredName' => $referral->getReferredName(), 'createdAt' => $referral->getCreatedAt() ?: new \DateTime(), 'createdBy' => $this->_currentUser->id]); $referral->setID($result->id()); return $referral; }
/** * Add query saving the referral to the database transaction * * @param ReferralInterface $referral */ private function _addToTransaction(ReferralInterface $referral) { $this->_trans->add(' UPDATE refer_a_friend_referral SET status = :status?s, referrer_id = :referrerID?i, referred_email = :referredEmail?s, updated_at = :updatedAt?d, updated_by = :updatedBy?in WHERE referral_id = :id?i ', ['status' => $referral->getStatus(), 'referrerID' => $referral->getReferrer()->id, 'referredEmail' => $referral->getReferredEmail(), 'updatedAt' => new \DateTime(), 'updatedBy' => $this->_currentUser->id, 'id' => $referral->getID()]); }
/** * {@inheritDoc} */ public function isValid(ReferralInterface $referral) { return $referral->getReferredEmail() !== $referral->getReferrer()->email; }
/** * {@inheritDoc} */ public function isValid(ReferralInterface $referral) { $existing = $this->_loader->getByEmail($referral->getReferredEmail()); return count($existing) <= 0; }
/** * {@inheritDoc} */ public function isValid(ReferralInterface $referral) { $users = $this->_userLoader->getByEmail($referral->getReferredEmail()); return empty($users); }