private function apply(UserSubscription $subscription, SubscriptionData $data)
 {
     if ($data->userId) {
         $user = $this->em->getRepository('Newscoop\\Entity\\User')->getOneActiveUser($data->userId, false)->getOneOrNullResult();
         if ($user) {
             $subscription->setUser($user);
         }
     }
     if ($data->publicationId) {
         $publication = $this->em->getRepository('Newscoop\\Entity\\Publication')->findOneBy(array('id' => $data->publicationId));
         if ($publication) {
             $subscription->setPublication($publication);
         }
     }
     if ($data->toPay) {
         $subscription->setToPay($data->toPay);
     }
     if ($data->subscriptionId) {
         $subscription->setSubscription($data->subscriptionId);
     }
     if ($data->currency) {
         $subscription->setCurrency($data->currency);
     }
     if ($data->active) {
         $subscription->setActive($data->active);
     }
     if ($data->type) {
         $subscription->setType($data->type);
     }
     return $subscription;
 }
 /**
  * Sets notify sent flag for given user subscription.
  * Level two of the notifications, for instance,
  * sends notifications 3 days before expiration.
  *
  * @param UserSubscription $subscription User subscription
  * @param \DateTime        $datetime     Date time when notify has been sent
  */
 public function setSentDateTimeOnLevelTwo(UserSubscription $subscription, $datetime = null)
 {
     $subscription->setNotifySentLevelTwo($datetime ?: new \DateTime('now'));
     $this->em->flush();
 }