/**
  * @param OutputInterface $output
  */
 private function doRaffle(OutputInterface $output)
 {
     while ($prizes = $this->event->getPrizes()) {
         $prize = $this->event->popPrize($this->selectPrize($prizes, $output));
         $winner = $this->getRandomAttendee($output, $prize);
         $prize->setWinner($winner);
         $this->dataHandler->saveWinner($this->event->getId(), $prize);
         $this->dataHandler->saveEvent($this->event);
         $this->tweetWinner($output, $prize);
     }
 }
 /**
  * @see Command
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $dataHandler = $this->getApplication()->getContainer()->get('data_adapter');
     $this->event = $dataHandler->getEvent($input->getArgument('event_id'));
     if (!$this->event->hasPrizes()) {
         throw new \Exception('This event has no prizes setted.');
     }
     $output->writeln("<info>List of prizes:</info>");
     foreach ($this->event->getPrizes() as $prize) {
         $output->writeln("<comment>{$prize->getSponsorName()} - {$prize->getPrizeTitle()}</comment>");
     }
 }
 public function testConvertToArrayAndJson()
 {
     $event = new Event('test');
     $expected = array('event' => array('id' => (string) $event, 'attendees' => $event->getAttendees(true), 'prizes' => $event->getPrizes(true)));
     $this->assertEquals($expected, $event->toArray());
     $this->assertEquals(json_encode($expected), $event->toJson());
 }