/**
  * @param ISummitRegistrationPromoCode $promo_code
  * @return $this
  */
 public function registerPromoCode(ISummitRegistrationPromoCode $promo_code)
 {
     $promo_code->assignOwner($this->owner);
     return $this;
 }
 /**
  * @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;
 }