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; }