/** * 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; }
/** * {@inheritDoc} */ public function isValid(ReferralInterface $referral, Event $event) { if (!$event instanceof OrderEvent) { throw new \LogicException('Event should be an instance of OrderEvent'); } $orderDate = $event->getOrder()->authorship->createdAt()->format('Y-m-d'); $referralDate = $referral->getCreatedAt()->format('Y-m-d'); $diff = strtotime($orderDate) - strtotime($referralDate); $timedOut = $diff <= $this->_value; if (false === $timedOut) { $referral->setStatus(Statuses::EXPIRED); $this->_referralEdit->save($referral); } }