public function getSpeakerByID(SS_HTTPRequest $request)
 {
     try {
         $speaker_id = intval($request->param('SPEAKER_ID'));
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = Summit::get_by_id('Summit', $summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $speaker = PresentationSpeaker::get_by_id('PresentationSpeaker', $speaker_id);
         $speaker_array = array('Title' => $speaker->Title, 'FirstName' => $speaker->FirstName, 'LastName' => $speaker->LastName, 'Email' => $speaker->RegistrationRequest()->Email, 'Member' => $speaker->Member()->Exists() ? $speaker->Member()->toMap() : null, 'Twitter' => $speaker->TwitterName, 'IRC' => $speaker->IRCHandle, 'Bio' => $speaker->Bio, 'PicUrl' => $speaker->ProfilePhoto(50), 'Expertise' => $speaker->AreasOfExpertise()->toNestedArray(), 'Presentations' => $speaker->Presentations()->toNestedArray(), 'OtherPresentations' => $speaker->OtherPresentationLinks()->toNestedArray(), 'TravelPreferences' => $speaker->TravelPreferences()->toNestedArray(), 'Languages' => $speaker->Languages()->toNestedArray(), 'Promocodes' => $speaker->PromoCodes()->toNestedArray(), 'Assistances' => $speaker->SummitAssistances()->toNestedArray(), 'OrganizationalRoles' => $speaker->OrganizationalRoles()->toNestedArray(), 'ActiveInvolvements' => $speaker->ActiveInvolvements()->toNestedArray());
         return $this->ok($speaker_array, false);
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2->getMessage(), SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $ex->getMessage();
     }
 }
 /**
  * @param int $summit_id
  * @param array $data
  * @param ISummitRegistrationPromoCode $promocode
  * @return ISummitRegistrationPromoCode
  */
 public function populatePromoCode($summit_id, array $data, $promocode)
 {
     $code_type = $data['code_type'];
     switch ($code_type) {
         case 'ACCEPTED':
         case 'ALTERNATE':
             if (isset($data['speaker_id']) && $data['speaker_id']) {
                 $speaker = PresentationSpeaker::get_by_id('PresentationSpeaker', trim($data['speaker_id']));
                 if ($speaker->Exists()) {
                     $promocode->assignSpeaker($speaker);
                 }
             }
             break;
         case 'VIP':
         case 'ATC':
         case 'MEDIA ANALYST':
             if (isset($data['member_id']) && $data['member_id']) {
                 $owner = Member::get_by_id('Member', trim($data['member_id']));
                 if ($owner->Exists()) {
                     $promocode->assignOwner($owner);
                 }
             }
             if (isset($data['first_name'])) {
                 $promocode->setFirstName(trim($data['first_name']));
             }
             if (isset($data['last_name'])) {
                 $promocode->setLastName(trim($data['last_name']));
             }
             if (isset($data['email'])) {
                 $promocode->setEmail(trim($data['email']));
             }
             break;
         case 'SPONSOR':
             if (isset($data['member_id']) && $data['member_id']) {
                 $owner = Member::get_by_id('Member', trim($data['member_id']));
                 if ($owner->Exists()) {
                     $promocode->assignOwner($owner);
                 }
             }
             if (isset($data['company_id']) && $data['company_id']) {
                 $sponsor = Company::get_by_id('Company', trim($data['company_id']));
                 if ($sponsor->Exists()) {
                     $promocode->assignSponsor($sponsor);
                 }
             }
             if (isset($data['first_name'])) {
                 $promocode->setFirstName(trim($data['first_name']));
             }
             if (isset($data['last_name'])) {
                 $promocode->setLastName(trim($data['last_name']));
             }
             if (isset($data['email'])) {
                 $promocode->setEmail(trim($data['email']));
             }
             break;
     }
     $email_sent = isset($data['email_sent']) ? 1 : 0;
     $redeemed = isset($data['redeemed']) ? 1 : 0;
     $promocode->setCode(trim($data['code']));
     $promocode->setEmailSent($email_sent);
     $promocode->setRedeemed($redeemed);
     $promocode->setSummit(trim($summit_id));
     $promocode->setSource('ADMIN');
     $promocode->setType($code_type);
     $promocode->setCreator(Member::currentUser());
     return $promocode;
 }