Exemplo n.º 1
0
 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());
 }
 /**
  * @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>");
     }
 }
 /**
  * Parses the content into the Event.
  *
  * @param  string     $prizes
  * @throws \Exception
  */
 private function parsePrizes($prizes)
 {
     try {
         $prizes = json_decode($prizes);
         foreach ($prizes->prizes as $item) {
             $prize = new Prize();
             $prize->setSponsorName($item->sponsor);
             $prize->setPrizeTitle($item->prize);
             $prize->setTweetMessage($item->tweet_message);
             $this->event->addPrize($prize);
         }
     } catch (\Exception $error) {
         throw new \Exception($error->getMessage());
     }
 }
 /**
  * @see Command
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $container = $this->getApplication()->getContainer();
     $dataHandler = $container->get('data_adapter');
     $this->event = $dataHandler->getEvent($input->getArgument('event_id'));
     $doGetAttendees = true;
     if ($this->event->hasAttendees()) {
         $doGetAttendees = $this->getHelper('dialog')->askConfirmation($output, 'The list of attendees for this event ID already exists, do you want to override? (no) ', false);
     }
     if ($doGetAttendees) {
         $this->event->clearAttendees();
         $attendees = $container->get('provider')->getAttendees((string) $this->event);
         $this->event->setAttendees($attendees);
         $dataHandler->saveEvent($this->event);
         $output->writeln("<info>Total attendees:</info><comment>{$this->event->getNumberOfAttendees()}</comment>");
     }
     $output->writeln("<info>You can now start the prizes raffle!</info>");
 }
 /**
  * @param  OutputInterface $output
  * @param  string          $prize  The prize name
  * @return Attendee
  */
 private function getRandomAttendee(OutputInterface $output, $prize)
 {
     $isWinner = false;
     while (!$isWinner) {
         $attendee = $this->event->popRandomAttendee();
         $this->dataHandler->saveEvent($this->event);
         $output->writeln(sprintf('<comment>The winner of the</comment> <info>%s</info> <comment>prize is</comment> <info>%s - %s</info>', $prize, $attendee->getName(), $attendee->getEmail()));
         $isWinner = $this->getHelper('dialog')->askConfirmation($output, 'Save the Winner? (no) ', false);
     }
     return $attendee;
 }
 /**
  * Parses the json data into an Event object
  *
  * @param $data
  *
  * @return Event
  */
 private function parseEventFromJson($data)
 {
     $dataObj = json_decode($data);
     $event = new Event($dataObj->event->id);
     if (isset($dataObj->event->attendees)) {
         // cleans the array
         $attendees = array_filter($dataObj->event->attendees);
         foreach ($attendees as $item) {
             $attendee = new Attendee();
             $attendee->setId($item->id);
             $attendee->setName($item->name);
             $attendee->setEmail($item->email);
             if (isset($item->twitterHandler) && !empty($item->twitterHandler)) {
                 $attendee->setTwitterHandler($item->twitterHandler);
             }
             $event->addAttendee($attendee);
         }
     }
     if (isset($dataObj->event->prizes)) {
         // cleans the array
         $prizes = array_filter($dataObj->event->prizes);
         foreach ($prizes as $item) {
             $prize = new Prize();
             $prize->setSponsorName($item->sponsor);
             $prize->setPrizeTitle($item->prize);
             if (isset($item->winner)) {
                 $attendee = new Attendee();
                 $attendee->setId($item->winner->id);
                 $prize->setWinner($attendee);
             }
             if (isset($item->tweet_message)) {
                 $prize->setTweetMessage($item->tweet_message);
             }
             $event->addPrize($prize);
         }
     }
     return $event;
 }