/**
     * 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);
     }
 }