public function getLocationsByDay(SS_HTTPRequest $request)
 {
     try {
         $query_string = $request->getVars();
         $summit_id = intval($request->param('SUMMIT_ID'));
         $day = strtolower(Convert::raw2sql($query_string['day']));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         if (!$summit->isDayBelongs($day)) {
             throw new EntityValidationException(sprintf('day %s does not belongs to summit id %s', $day, $summit_id));
         }
         $response = array('day' => $day, 'summit_id' => intval($summit_id), 'locations' => array());
         foreach ($summit->getTopVenues() as $venue) {
             $class_name = $venue->ClassName;
             if ($class_name != 'SummitVenue' && $class_name != 'SummitExternalLocation' && $class_name != 'SummitHotel') {
                 continue;
             }
             $count = $summit->getPublishedEventsCountByDateLocation($day, $venue);
             array_push($response['locations'], array('id' => intval($venue->ID), 'events_count' => intval($count)));
             if ($class_name == 'SummitVenue') {
                 foreach ($venue->Rooms() as $room) {
                     $count = $summit->getPublishedEventsCountByDateLocation($day, $room);
                     array_push($response['locations'], array('id' => intval($room->ID), 'events_count' => intval($count)));
                 }
             }
         }
         return $this->ok($response);
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $this->serverError();
     }
 }
 public function getMember(SS_HTTPRequest $request)
 {
     try {
         $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));
         }
         $member_id = intval($request->param('MEMBER_ID'));
         $member = Member::get_by_id('Member', $member_id);
         if (is_null($member)) {
             throw new NotFoundEntityException('Member', sprintf(' id %s', $member_id));
         }
         $speaker = $member->Speaker()->ID ? $member->Speaker()->toMap() : '';
         $affiliation = '';
         if ($affiliation_obj = $member->getCurrentAffiliation()) {
             $affiliation = $affiliation_obj->toMap();
             $affiliation['Company'] = array('id' => $affiliation_obj->Organization()->ID, 'name' => $affiliation_obj->Organization()->Name);
         }
         echo json_encode(array('speaker' => $speaker, 'affiliation' => $affiliation));
     } 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();
     }
 }
 /**
  * @param ICompany $company
  * @return bool
  * @throws PolicyException
  */
 public function canAdd(ICompany $company)
 {
     $current = $this->repository->countByCompany($company->getIdentifier());
     $allowed = $company->getAllowedMarketplaceTypeInstances($this->marketplace_type_repository->getByType(IAppliance::MarketPlaceType));
     if ($current >= $allowed) {
         throw new PolicyException('ApplianceAddPolicy', sprintf('You reach the max. amount of %s (%s) per Company', "Appliances", $allowed));
     }
     return true;
 }
Example #4
0
 public function getDateSortedJobs()
 {
     $output = '';
     $request = Controller::curr()->getRequest();
     $foundation = $request->requestVar('foundation');
     $jobs = $this->repository->getDateSortedJobs($foundation);
     foreach ($jobs as $job) {
         $output .= $job->renderWith('JobHolder_job');
     }
     return $output;
 }
 /**
  * @return SS_HTTPResponse
  */
 public function addReview()
 {
     try {
         $data = $this->getJsonRequest();
         if (!$data) {
             return $this->serverError();
         }
         $review = $this->review_repository->getReview($this->review_factory->buildProduct($data)->getIdentifier(), Member::CurrentUserID());
         if ($review) {
             $this->review_manager->updateReview($data, $review);
             return $this->updated();
         } else {
             return $this->created($this->review_manager->addReview($data));
         }
     } catch (EntityAlreadyExistsException $ex1) {
         SS_Log::log($ex1, SS_Log::ERR);
         return $this->addingDuplicate($ex1->getMessage());
     } catch (PolicyException $ex2) {
         SS_Log::log($ex2, SS_Log::ERR);
         return $this->validationError($ex2->getMessage());
     } catch (EntityValidationException $ex3) {
         SS_Log::log($ex3, SS_Log::ERR);
         return $this->validationError($ex3->getMessages());
     }
 }
 public function updateBulkPresentations(SS_HTTPRequest $request)
 {
     try {
         if (!$this->isJson()) {
             return $this->validationError(array('invalid content type!'));
         }
         $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));
         }
         $data = $this->getJsonRequest();
         $this->summit_service->updateBulkPresentations($summit, $data);
         return $this->ok();
     } catch (EntityValidationException $ex1) {
         SS_Log::log($ex1->getMessage(), SS_Log::WARN);
         return $this->validationError($ex1->getMessages());
     } catch (NotFoundEntityException $ex3) {
         SS_Log::log($ex3->getMessage(), SS_Log::WARN);
         return $this->notFound($ex3->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex->getMessage(), SS_Log::ERR);
         return $this->serverError();
     }
 }
 public function getSponsorOptions(SS_HTTPRequest $request)
 {
     try {
         $query_string = $request->getVars();
         $query = Convert::raw2sql($query_string['query']);
         $summit_id = intval($request->param('SUMMIT_ID'));
         $event_id = intval($request->param('EVENT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $event = $this->summitevent_repository->getById($event_id);
         if (is_null($event)) {
             throw new NotFoundEntityException('SummitEvent', sprintf(' id %s', $event_id));
         }
         $sponsors = DB::query("SELECT C.ID AS id, C.Name AS name FROM Company AS C\n                                    WHERE C.Name LIKE '{$query}%'\n                                    ORDER BY C.Name");
         $json_array = array();
         foreach ($sponsors as $sponsor) {
             $json_array[] = $sponsor;
         }
         echo json_encode($json_array);
     } 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 exportPresentationsCompanyReport(SS_HTTPRequest $request)
 {
     try {
         $query_string = $request->getVars();
         $sort = isset($query_string['sort']) ? Convert::raw2sql($query_string['sort']) : 'name';
         $sort_dir = isset($query_string['sort_dir']) ? Convert::raw2sql($query_string['sort_dir']) : 'ASC';
         $search_term = isset($query_string['term']) ? Convert::raw2sql($query_string['term']) : '';
         $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));
         }
         $ext = 'csv';
         $report_data = $this->presentation_repository->searchByCompanyPaged($summit_id, null, null, $sort, $sort_dir, $search_term);
         $filename = "presentations_company_report-" . date('Ymd') . "." . $ext;
         $delimiter = $ext == 'xls' ? "\t" : ",";
         return CSVExporter::getInstance()->export($filename, $report_data['Data'], $delimiter);
     } 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 pdf()
 {
     $services = $this->consultant->getServicesOffered();
     $unique_services = array();
     $unique_regions = array();
     foreach ($services as $service) {
         if (!array_key_exists($service->getType(), $unique_services)) {
             $unique_services[$service->getType()] = $service;
         }
         if (!array_key_exists($service->getRegionID(), $unique_regions)) {
             $region = $this->region_repository->getById($service->getRegionID());
             $unique_regions[$service->getRegionID()] = $region;
         }
     }
     return Controller::curr()->Customise(array('Consultant' => $this->consultant, 'Services' => new ArrayList(array_values($unique_services)), 'Regions' => new ArrayList(array_values($unique_regions))))->renderWith(array('ConsultantsDirectoryPage_pdf'));
 }
 protected function registerHyperVisor(IOpenStackImplementation $implementation, $hypervisor_type_id)
 {
     $hypervisor = $this->hypervisor_type_repository->getById($hypervisor_type_id);
     if (!$hypervisor) {
         throw new NotFoundEntityException('', '');
     }
     $implementation->addHyperVisor($hypervisor);
 }
Example #11
0
 public function DateSortedJobs()
 {
     $query = new QueryObject(new JobPage());
     $request = Controller::curr()->getRequest();
     if ($request->requestVar('foundation')) {
         $query->addAndCondition(QueryCriteria::equal('FoundationJob', 1));
     }
     $now = new DateTime();
     $query->addAndCondition(QueryCriteria::equal('Active', 1));
     $post_date = $now->sub(new DateInterval('P6M'));
     $query->addAndCondition(QueryCriteria::greaterOrEqual('JobPostedDate', $post_date->format('Y-m-d')));
     $query->addAndCondition(QueryCriteria::greaterOrEqual('ExpirationDate', $now->format('Y-m-d')));
     $query->addOrder(QueryOrder::desc('JobPostedDate'));
     $query->addOrder(QueryOrder::desc('ID'));
     list($jobs, $size) = $this->repository->getAll($query, 0, 1000);
     return new ArrayList($jobs);
 }
 /**
  * @return ISurveyTemplate
  */
 public function getCurrentSurveyTemplate()
 {
     $query = new QueryObject();
     $now = new \DateTime('now', new DateTimeZone('UTC'));
     $query->addAndCondition(QueryCriteria::lowerOrEqual('StartDate', $now->format('Y-m-d H:i:s')));
     $query->addAndCondition(QueryCriteria::greaterOrEqual('EndDate', $now->format('Y-m-d H:i:s')));
     $query->addAndCondition(QueryCriteria::equal('Enabled', 1));
     return $this->template_repository->getBy($query);
 }
Example #13
0
 public function getCOAExam()
 {
     $cert_id = trim(Convert::raw2sql($this->request->param('CERT_ID')));
     $last_name = trim(Convert::raw2sql(html_entity_decode($this->request->param('LAST_NAME'))));
     try {
         $exam = $this->repository->getByCertAndLastName($cert_id, $last_name);
         if ($exam->count() > 0) {
             $exam_obj = $exam->first();
             $exam_map = $exam_obj->toMap();
             $exam_map['OwnerName'] = $exam_obj->Owner()->FirstName . ' ' . $exam_obj->Owner()->Surname;
             $exam_map['PassFailDate'] = date('M jS Y', strtotime($exam_obj->PassFailDate));
             return $this->ok($exam_map);
         }
         return $this->ok();
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         return $this->serverError();
     }
 }
 protected function addRegionalSupport(array $regional_support_data, IRegionalSupportedCompanyService $regional_supported_company_service)
 {
     $region = $this->marketplace_factory->buildRegionById(intval($regional_support_data['region_id']));
     $support_channels_data = $regional_support_data['support_channels'];
     $regional_support = $this->factory->buildRegionalSupport($region, $regional_supported_company_service);
     $region = $this->region_repository->getById($regional_support->getRegion()->getIdentifier());
     if (!$region) {
         throw new NotFoundEntityException('', '');
     }
     foreach ($regional_support->getSupportChannelTypes() as $support_channel_type) {
         if (!$this->support_channel_type_repository->getById($support_channel_type->getIdentifier())) {
             throw new NotFoundEntityException('', '');
         }
     }
     $regional_supported_company_service->addRegionalSupport($regional_support);
     foreach ($support_channels_data as $support_channel_data) {
         $support_channel_type = $this->marketplace_factory->buildSupportChannelTypeById(intval($support_channel_data['type_id']));
         $regional_support->addSupportChannelType($support_channel_type, $support_channel_data['data']);
     }
 }
 public function getLanguages()
 {
     $term = Convert::raw2sql($this->request->getVar('term'));
     $query = new QueryObject();
     $query->addAndCondition(QueryCriteria::like('Name', $term));
     list($list, $size) = $this->languages_repository->getAll($query, 0, 20);
     $res = array();
     foreach ($list as $lang) {
         array_push($res, array('label' => $lang->getName(), 'value' => $lang->getName()));
     }
     return $this->ok($res);
 }
 public function getPackagesPurchaseOrder()
 {
     $query = new QueryObject(new SummitPackagePurchaseOrder());
     $status = $this->getFilterParamStatus();
     switch ($status) {
         case 'pending':
             $query->addAndCondition(QueryCriteria::equal('Approved', 0));
             $query->addAndCondition(QueryCriteria::equal('Rejected', 0));
             break;
         case 'approved':
             $query->addAndCondition(QueryCriteria::equal('Approved', 1));
             $query->addAndCondition(QueryCriteria::equal('Rejected', 0));
             break;
         case 'rejected':
             $query->addAndCondition(QueryCriteria::equal('Approved', 0));
             $query->addAndCondition(QueryCriteria::equal('Rejected', 1));
             break;
     }
     $query->addOrder(QueryOrder::asc('Created'));
     list($list, $count) = $this->packages_repository->getAll($query, 0, 999999);
     return new ArrayList($list);
 }
 public function ExportEventToICS(SS_HTTPRequest $request)
 {
     try {
         $event_ids = $request->getVar('events_id');
         if (is_null($event_ids)) {
             return $this->validationError("missing events_id param");
         }
         $event_ids = explode(',', $event_ids);
         // https://www.ietf.org/rfc/rfc2445.txt
         $vCalendar = new Calendar('www.openstack.org');
         foreach ($event_ids as $event_id) {
             $event = $this->summitevent_repository->getById($event_id);
             if (is_null($event)) {
                 throw new NotFoundEntityException('SummitEvent', sprintf(' id %s', $event_id));
             }
             if (!$event->isPublished()) {
                 throw new EntityValidationException(sprintf("event id %s does not belongs to schedule!", $event->getIdentifier()));
             }
             $vEvent = new \Eluceo\iCal\Component\Event(md5(uniqid(mt_rand(), true)) . "event");
             $vEvent->setCreated(new \DateTime())->setDtStart(new \DateTime($event->getStartDateUTC()))->setDtEnd(new \DateTime($event->getEndDateUTC()))->setNoTime(false)->setSummary($event->Title)->setDescription(strip_tags($event->ShortDescription))->setDescriptionHTML($event->ShortDescription);
             if ($location = $event->getLocation()) {
                 $venue = $location;
                 $geo = null;
                 if ($location->getTypeName() == SummitVenueRoom::TypeName) {
                     $venue = $location->getVenue();
                 }
                 if (is_a($venue, 'SummitGeoLocatedLocation')) {
                     $geo = sprintf("%s;%s", $venue->getLat(), $venue->getLng());
                 }
                 $vEvent->setLocation($location->getFullName(), $location->getFullName(), $geo);
             }
             $vCalendar->addComponent($vEvent);
         }
         $response = new SS_HTTPResponse($vCalendar->render(), 200);
         $response->addHeader("Content-type", "text/calendar; charset=utf-8");
         $response->addHeader("Content-Disposition", "inline; filename=event-" . implode('-', $event_ids) . ".ics");
         return $response;
     } catch (EntityValidationException $ex1) {
         SS_Log::log($ex1, SS_Log::WARN);
         return $this->validationError($ex1->getMessages());
     } catch (NotFoundEntityException $ex2) {
         SS_Log::log($ex2, SS_Log::WARN);
         return $this->notFound($ex2->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         return $this->serverError();
     }
 }
 /**
  * @return SS_HTTPResponse
  */
 public function addFeedback()
 {
     try {
         $data = $this->getJsonRequest();
         $event_id = (int) $this->request->param('EventID');
         $summit_id = (int) $this->request->param('SUMMIT_ID');
         $member_id = Member::CurrentUserID();
         if (!$data) {
             return $this->serverError();
         }
         if (intval($summit_id) > 0) {
             $summit = $this->summit_repository->getById(intval($summit_id));
         }
         if (strtolower($summit_id) === 'current') {
             $summit = Summit::ActiveSummit();
         }
         if (is_null($summit)) {
             return $this->notFound('summit not found!');
         }
         if (intval($event_id) > 0) {
             $event = $this->summitevent_repository->getById(intval($event_id));
         }
         if (is_null($event)) {
             return $this->notFound('event not found!');
         } else {
             if ($event->getSummit()->getIdentifier() != intval($summit_id)) {
                 return $this->notFound('event not found in current summit');
             }
         }
         $data['event_id'] = $event_id;
         $data['member_id'] = $member_id;
         $feedback = $this->eventfeedback_repository->getFeedback($event_id, $member_id);
         if ($feedback) {
             $this->schedule_manager->updateFeedback($data, $feedback);
             return $this->updated();
         } else {
             return $this->created($this->schedule_manager->addFeedback($data));
         }
     } catch (PolicyException $ex2) {
         SS_Log::log($ex2, SS_Log::ERR);
         return $this->validationError($ex2->getMessage());
     } catch (EntityValidationException $ex3) {
         SS_Log::log($ex3, SS_Log::ERR);
         return $this->validationError($ex3->getMessages());
     }
 }
Example #19
0
 public function getAllSponsorshipPackagesBySummit()
 {
     try {
         $query = new QueryObject(new SummitPackage());
         $summit_id = (int) $this->request->param('SUMMIT_ID');
         $query->addAndCondition(QueryCriteria::equal('SummitSponsorPageID', $summit_id));
         $query->addOrder(QueryOrder::asc("Order"));
         list($list, $count) = $this->sponsorship_package_repository->getAll($query, 0, 999999);
         $res = array();
         foreach ($list as $package) {
             array_push($res, SummitPackageAssembler::toArray($package));
         }
         return $this->ok($res);
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::WARN);
         return $this->serverError();
     }
 }
 public function getComponentListByRelease()
 {
     try {
         $release_id = intval($this->request->param('RELEASE_ID'));
         $release = $this->release_repository->getById($release_id);
         if (!$release) {
             throw new NotFoundEntityException('OpenStackRelease', sprintf('id %s', $release_id));
         }
         $list = array();
         foreach ($release->getOpenStackComponents() as $component) {
             array_push($list, OpenStackComponentsCrudApi::convertComponentToArray($component));
         }
         return $this->ok($list);
     } catch (NotFoundEntityException $ex1) {
         return $this->notFound($ex1->getMessage());
     } catch (Exception $ex) {
         return $this->serverError();
     }
 }
 /**
  * @return SS_HTTPResponse
  */
 public function saveSummitType()
 {
     try {
         $data = $this->getJsonRequest();
         $summit_id = (int) $this->request->param('SummitID');
         if (!$data) {
             return $this->serverError();
         }
         $this->summit_manager->saveSummitType($summit_id, $data);
         $inserted_id = $this->summittype_repository->getLastIdInserted($summit_id);
         return $inserted_id;
     } catch (NotFoundEntityException $ex1) {
         SS_Log::log($ex1, SS_Log::WARN);
         return $this->notFound($ex1->getMessage());
     } catch (Exception $ex) {
         SS_Log::log($ex, SS_Log::ERR);
         return $this->serverError();
     }
 }
 public function getCurrentOfficesStaticMapForPDF()
 {
     $static_map_url = "http://maps.googleapis.com/maps/api/staticmap?zoom=2&size=300x200&maptype=roadmap";
     $params = $this->request->allParams();
     $company_url_segment = Convert::raw2sql($params["Company"]);
     $slug = Convert::raw2sql($params["Slug"]);
     $query = new QueryObject();
     $query->addAndCondition(QueryCriteria::equal('Slug', $slug));
     $consultant = $this->consultant_repository->getBy($query);
     if (!$consultant) {
         throw new NotFoundEntityException('Consultant', 'by slug');
     }
     if ($consultant->getCompany()->URLSegment != $company_url_segment) {
         throw new NotFoundEntityException('', '');
     }
     foreach ($consultant->getOffices() as $office) {
         $static_map_url .= "&markers=" . $office->getLat() . "," . $office->getLng();
     }
     return $static_map_url;
 }
 public function matchEventbriteAttendee(SS_HTTPRequest $request)
 {
     try {
         $eb_attendee_id = intval($request->param('EB_ATTENDEE_ID'));
         $member_id = intval($request->param('MEMBER_ID'));
         $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));
         }
         $attendee = $this->summit_service->matchEventbriteAttendee($summit, $eb_attendee_id, $member_id);
         return $this->ok($attendee->ID);
     } 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();
     }
 }
 protected function registerCompanyServiceVideo(array $data, ICompanyService $company_service)
 {
     $validator = $this->validator_factory->buildValidatorForMarketPlaceVideo($data);
     if ($validator->fails()) {
         return $this->validationError($validator->messages());
     }
     $video = $this->marketplace_factory->buildVideo($data['title'], isset($data['description']) ? $data['description'] : '', $data['youtube_id'], intval($data['length']), $this->marketplace_factory->buildVideoTypeById(intval($data['type_id'])), $company_service);
     $company_service_id = $video->getOwner()->getIdentifier();
     $company_service = $video->getOwner();
     if ($company_service_id > 0 && !$this->repository->getById($company_service_id)) {
         throw new NotFoundEntityException('CompanyService', sprintf("id %s", $company_service_id));
     }
     $video_type_id = $video->getType()->getIdentifier();
     $video_type = $this->video_type_repository->getById($video_type_id);
     if (!$video_type) {
         throw new NotFoundEntityException('MarketPlaceVideoType', sprintf("id %s", $video_type_id));
     }
     if (!is_null($this->add_video_policy)) {
         $this->add_video_policy->canAdd($company_service, $video_type);
     }
     $company_service->addVideo($video);
 }
 public function emailRegistrationCode(SS_HTTPRequest $request)
 {
     try {
         $summit_id = intval($request->param('SUMMIT_ID'));
         $code_id = intval($request->param('CODE_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         $promocode = $this->summit_service->sendEmailPromoCode($summit, $code_id);
         return $this->ok($promocode->getCode());
     } 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 getRoomMetrics(SS_HTTPRequest $request)
 {
     try {
         $summit_id = intval($request->param('SUMMIT_ID'));
         $summit = $this->summit_repository->getById($summit_id);
         $event_id = intval($request->param('EVENT_ID'));
         $event = $this->event_repository->getById($event_id);
         $time_offset = $request->getVar('offset');
         if (is_null($summit)) {
             throw new NotFoundEntityException('Summit', sprintf(' id %s', $summit_id));
         }
         if (is_null($event)) {
             throw new NotFoundEntityException('Event', sprintf(' id %s', $event_id));
         }
         $time_offset = $summit->convertDateFromTimeZone2UTC($event->getBeginDateYMD() . ' ' . $time_offset);
         $metrics = $this->room_metrics_repository->getByRoomAndDate($event->LocationID, $event->getStartDateUTC(), $event->getEndDateUTC(), $time_offset)->limit(10);
         $metrics_array = array();
         foreach ($metrics as $metric) {
             $type = $metric->Type()->Type;
             $unit = $metric->Type()->Unit;
             $time = $summit->convertDateFromUTC2TimeZone(date('H:i:s', $metric->TimeStamp), 'g:iA');
             $data = array($time, $metric->Value);
             if (!isset($metrics_array[$type])) {
                 $metrics_array[$type] = array('type' => $type, 'unit' => $unit, 'metrics' => array());
             }
             $metrics_array[$type]['metrics'][] = $data;
         }
         return $this->ok($metrics_array);
     } 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 ProductReviews()
 {
     list($reviews, $size) = $this->review_repository->getAllApprovedByProduct($this->company_service_ID);
     return new ArrayList($reviews);
 }
 /**
  * @param QueryObject $query
  * @param int         $offset
  * @param int         $limit
  * @return array
  */
 public function getAll(QueryObject $query, $offset = 1, $limit = 10)
 {
     return $this->repository->getAll($query, $offset, $limit);
 }
 /**
  *  interop
  */
 public function getInteropProgramVersions()
 {
     list($res, $size) = $this->interop_program_repository->getAllOrdered();
     return new ArrayList($res);
 }
 /**
  * @param ICompanyService $consultant
  * @param array $data
  * @return ICompanyService|void
  * @throws EntityValidationException
  * @throws NotFoundEntityException
  */
 protected function updateCollections(ICompanyService $consultant, array $data)
 {
     $consultant = parent::updateCollections($consultant, $data);
     //languages
     if (array_key_exists('languages_spoken', $data) && is_array($data['languages_spoken'])) {
         $languages_data = $data['languages_spoken'];
         $lang_order = 0;
         foreach ($languages_data as $language_name) {
             $language = $this->language_repository->getByName($language_name);
             if (!$language) {
                 $language = $this->factory->buildSpokenLanguage($language_name);
                 $this->language_repository->add($language);
             }
             $consultant->addSpokenLanguages($language, $lang_order++);
         }
     }
     //config management
     if (array_key_exists('configuration_management', $data) && is_array($data['configuration_management'])) {
         $configuration_management_expertise_data = $data['configuration_management'];
         foreach ($configuration_management_expertise_data as $config_id) {
             $config = $this->configuration_management_expertise_repository->getById($config_id);
             if (!$config) {
                 throw new NotFoundEntityException('ConfigurationManagementType', sprintf(' id %s', $config_id));
             }
             $consultant->addConfigurationManagementExpertise($config);
         }
     }
     //services offered
     if (array_key_exists('services_offered', $data) && is_array($data['services_offered'])) {
         $services_offered_data = $data['services_offered'];
         foreach ($services_offered_data as $service_data) {
             $service = $this->service_offered_repository->getById(intval($service_data['id']));
             if (!$service) {
                 throw new NotFoundEntityException('ConsultantServiceOfferedType', sprintf(' id %s', intval($service['id'])));
             }
             if (array_key_exists('regions', $service_data) && is_array($service_data['regions'])) {
                 $regions = $service_data['regions'];
                 foreach ($regions as $region_id) {
                     $region = $this->region_repository->getById(intval($region_id));
                     if (!$region) {
                         throw new NotFoundEntityException('Region', sprintf(' id %s', intval($region_id)));
                     }
                     $consultant->addServiceOffered($service, $region);
                 }
             }
         }
     }
     //Areas of OpenStack Expertise
     if (array_key_exists('expertise_areas', $data) && is_array($data['expertise_areas'])) {
         $expertise_areas_data = $data['expertise_areas'];
         foreach ($expertise_areas_data as $expertise_area_id) {
             $component = $this->component_repository->getById(intval($expertise_area_id));
             if (!$component) {
                 throw new NotFoundEntityException('OpenStackComponent', sprintf(' id %s', intval($expertise_area_id)));
             }
             $consultant->addExpertiseArea($component);
         }
     }
     //Reference Clients
     if (array_key_exists('reference_clients', $data) && is_array($data['reference_clients'])) {
         $reference_clients_data = $data['reference_clients'];
         foreach ($reference_clients_data as $client_name) {
             $client = $this->factory->buildClient(trim($client_name));
             $consultant->addPreviousClients($client);
         }
     }
     //Offices
     if (array_key_exists('offices', $data) && is_array($data['offices'])) {
         $reference_offices_data = $data['offices'];
         foreach ($reference_offices_data as $office_data) {
             $validator = $this->validator_factory->buildValidatorForOffice($office_data);
             if ($validator->fails()) {
                 return $this->validationError($validator->messages());
             }
             $address_info = new AddressInfo($office_data['address_1'], $office_data['address_2'], $office_data['zip_code'], $office_data['state'], $office_data['city'], $office_data['country']);
             //list($lat,$lng) = $this->geo_coding_service->getAddressCoordinates($address_info);
             $office = $this->factory->buildOffice($address_info);
             $office->setLat((double) $office_data['lat']);
             $office->setLng((double) $office_data['lng']);
             $consultant->addOffice($office);
         }
     }
     return $consultant;
 }