public function ingest($summit_id)
 {
     $this->tx_manager->transaction(function () use($summit_id) {
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             return;
         }
         foreach ($summit->getVenues() as $venue) {
             if ($venue->getTypeName() != SummitVenue::TypeName) {
                 continue;
             }
             foreach ($venue->getRooms() as $room) {
                 foreach ($room->getMetricTypes() as $metric) {
                     $sample_data = $this->rest_api->getSamplesDataFromEndpointSinceTimestamp($metric->getEndpointUrl(), $metric->getLastSampleTimeStamp());
                     if (count($sample_data) == 0) {
                         continue;
                     }
                     foreach ($sample_data as $entry) {
                         if (count($entry) != 2) {
                             continue;
                         }
                         $metric->addSample($entry[0], $entry[1]);
                     }
                 }
             }
         }
     });
 }
 public function mergeSpeakers(SS_HTTPRequest $request)
 {
     try {
         $summit_id = intval($request->param('SUMMIT_ID'));
         $speaker_1 = intval($request->param('ID_ONE'));
         $speaker_2 = intval($request->param('ID_TWO'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $data = $this->getJsonRequest();
         $changes = $this->summit_service->mergeSpeakers($summit, $speaker_1, $speaker_2, $data);
         return $this->ok($changes);
     } catch (EntityValidationException $ex1) {
         SS_Log::log($ex1->getMessage(), SS_Log::WARN);
         return $this->validationError($ex1->getMessages());
     } 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 $this->serverError();
     }
 }
Esempio n. 3
0
 public function getExtraQuestionsForPresentation(SS_HTTPRequest $request)
 {
     try {
         $category_id = intval($request->param('CAT_ID'));
         $presentation_id = intval($request->param('PRES_ID'));
         $presentation = null;
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         if ($presentation_id) {
             $presentation = Presentation::get_by_id('Presentation', $presentation_id);
         }
         $category = PresentationCategory::get_by_id('PresentationCategory', $category_id);
         $extra_questions = $category->ExtraQuestions();
         $question_map = array();
         foreach ($extra_questions as $q) {
             //builder
             $type = $q->Type();
             $builder_class = $type . 'QuestionTemplateUIBuilder';
             $builder = Injector::inst()->create($builder_class);
             $answer = $presentation ? $presentation->findAnswerByQuestion($q) : null;
             $field = $builder->build($q, $answer);
             $field->addHolderClass('track-question');
             $question_map[] = array('Name' => $q->Name, 'InsertAfter' => $q->AfterQuestion, 'Html' => strval($field->FieldHolder()));
         }
         return $this->ok($question_map);
     } 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();
     }
 }