コード例 #1
0
 /**
  * @param ISummit $summit
  * @param array $event_data
  * @return mixed
  */
 public function updateEvent(ISummit $summit, array $event_data)
 {
     $event_repository = $this->event_repository;
     return $this->tx_service->transaction(function () use($summit, $event_data, $event_repository) {
         if (!isset($event_data['id'])) {
             throw new EntityValidationException(array('missing required param: id'));
         }
         $event_id = intval($event_data['id']);
         $event = $event_repository->getById($event_id);
         if (is_null($event)) {
             throw new NotFoundEntityException('Summit Event', sprintf('id %s', $event_id));
         }
         if (intval($event->SummitID) !== intval($summit->getIdentifier())) {
             throw new EntityValidationException(array('event doest not belongs to summit'));
         }
         $event->Title = $event_data['title'];
         $event->Description = $event_data['description'];
         $event->setStartDate($event_data['start_date']);
         $event->setEndDate($event_data['end_date']);
         $event->AllowFeedBack = $event_data['allow_feedback'];
         $event->LocationID = intval($event_data['location_id']);
         $event->TypeID = intval($event_data['event_type']);
         $event->AllowedSummitTypes()->setByIDList($event_data['summit_type']);
         $event->Tags()->setByIDList(explode(',', $event_data['tags']));
         $event->Sponsors()->setByIDList(explode(',', $event_data['sponsors']));
         // Speakers, if one of the added members is not a speaker, we need to make him one
         if ($event->isPresentation()) {
             $presentation = $event_repository->getPresentationById($event_id);
             $speaker_ids = array();
             $member_ids = explode(',', $event_data['speakers']);
             foreach ($member_ids as $member_id) {
                 $speaker = PresentationSpeaker::get()->filter('MemberID', $member_id)->first();
                 if (!$speaker) {
                     $member = Member::get()->byID($member_id);
                     $speaker = new PresentationSpeaker();
                     $speaker->FirstName = $member->FirstName;
                     $speaker->LastName = $member->Surname;
                     $speaker->MemberID = $member->ID;
                     $speaker->write();
                 }
                 $speaker_ids[] = $speaker->ID;
             }
             $event->Speakers()->setByIDList($speaker_ids);
         }
         return $event;
     });
 }
コード例 #2
0
 /**
  * @param ISummitEvent $event
  * @param array $event_data
  * @return ISummitEvent
  * @throws NotFoundEntityException
  * @throws ValidationException
  * @throws null
  */
 public static function updatePresentation(ISummitEvent $event, array $event_data)
 {
     // Speakers, if one of the added members is not a speaker, we need to make him one
     if ($event instanceof Presentation) {
         foreach ($event_data['speakers'] as $speaker) {
             if (!isset($speaker['speaker_id']) || !isset($speaker['member_id'])) {
                 throw new EntityValidationException('missing parameter on speakers collection!');
             }
             $speaker_id = intval($speaker['speaker_id']);
             $member_id = intval($speaker['member_id']);
             $speaker = $speaker_id > 0 ? PresentationSpeaker::get()->byID($speaker_id) : null;
             $speaker = is_null($speaker) && $member_id > 0 ? PresentationSpeaker::get()->filter('MemberID', $member_id)->first() : $speaker;
             if (is_null($speaker)) {
                 $member = Member::get()->byID($member_id);
                 if (is_null($member)) {
                     throw new NotFoundEntityException('Member', sprintf(' member id %s', $member_id));
                 }
                 $speaker = new PresentationSpeaker();
                 $speaker->FirstName = $member->FirstName;
                 $speaker->LastName = $member->Surname;
                 $speaker->MemberID = $member->ID;
                 $speaker->write();
             }
             $speaker_ids[] = $speaker->ID;
             $event->ModeratorID = 0;
         }
         $event->Speakers()->setByIDList($speaker_ids);
         if ($event->Type()->Type == 'Keynotes' || $event->Type()->Type == 'Panel') {
             if (!isset($event_data['moderator'])) {
                 throw new EntityValidationException('moderator is required!');
             }
             $moderator = $event_data['moderator'];
             if (!isset($moderator['member_id']) || !isset($moderator['speaker_id'])) {
                 throw new EntityValidationException('missing parameter on moderator!');
             }
             $speaker_id = intval($moderator['speaker_id']);
             $member_id = intval($moderator['member_id']);
             $moderator = $speaker_id > 0 ? PresentationSpeaker::get()->byID($speaker_id) : null;
             $moderator = is_null($moderator) && $member_id > 0 ? PresentationSpeaker::get()->filter('MemberID', $member_id)->first() : $moderator;
             if (is_null($moderator)) {
                 $member = Member::get()->byID($member_id);
                 if (is_null($member)) {
                     throw new NotFoundEntityException('Member', sprintf(' member id %s', $member_id));
                 }
                 $moderator = PresentationSpeaker::create();
                 $moderator->FirstName = $member->FirstName;
                 $moderator->LastName = $member->Surname;
                 $moderator->MemberID = $member->ID;
                 $moderator->write();
             }
             $event->ModeratorID = $moderator->ID;
         }
         $track = PresentationCategory::get()->byID(intval($event_data['track']));
         if (is_null($track)) {
             throw new NotFoundEntityException('Track');
         }
         $event->CategoryID = $track->ID;
         $event->AttendeesExpectedLearnt = html_entity_decode($event_data['expect_learn']);
         $event->Level = $event_data['level'];
     }
     return $event;
 }