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