/**
  * {@inheritdoc}
  */
 public function generate(PayloadInterface $payload, SmartCodeOptions $options)
 {
     $codes = array();
     $now = new \DateTime();
     for ($i = 0, $amount = $options->getAmount(); $i < $amount; $i++) {
         $smartCode = new SmartCode($payload);
         $smartCode->setCreatedAt($now);
         $smartCode->setCode($this->generateUniqueCode());
         $smartCode->setUsageLimit($options->getUsageLimit());
         $smartCode->setExpiresAt($options->getExpiresAt());
         $smartCode->setStartsAt($options->getStartsAt());
         $smartCode->setBatch($options->getBatch());
         $codes[] = $smartCode;
         $this->manager->persist($smartCode);
     }
     $this->manager->flush();
     return $codes;
 }