presentation_repository = $presentation_repository; $this->presentation_service = $presentation_service; $this->member_repository = $member_repository; $this->summit_repository = $summit_repository; } //presentations //videos public function getPresentationVideos($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $videos = $presentation->getVideos(); $items = []; foreach ($videos as $i) { if ($i instanceof IEntity) { $i = SerializerRegistry::getInstance()->getSerializer($i)->serialize(); } $items[] = $i; } return $this->ok($items); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $video_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationVideo($summit_id, $presentation_id, $video_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $video = $presentation->getVideoBy($video_id); if (is_null($video)) return $this->error404(); return $this->ok(SerializerRegistry::getInstance()->getSerializer($video)->serialize()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function addVideo(LaravelRequest $request, $summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if (!Request::isJson()) return $this->error400(); $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationVideoValidationRulesFactory::build($data)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $video = $this->presentation_service->addVideoTo($presentation_id, HTMLCleaner::cleanData($data, $fields)); return $this->created(SerializerRegistry::getInstance()->getSerializer($video)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @param $video_id * @return \Illuminate\Http\JsonResponse|mixed */ public function updateVideo(LaravelRequest $request, $summit_id, $presentation_id, $video_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if (!Request::isJson()) return $this->error400(); $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationVideoValidationRulesFactory::build($data, true)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $video = $this->presentation_service->updateVideo($presentation_id, $video_id, HTMLCleaner::cleanData($data, $fields)); return $this->updated(SerializerRegistry::getInstance()->getSerializer($video)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $video_id * @return \Illuminate\Http\JsonResponse|mixed */ public function deleteVideo($summit_id, $presentation_id, $video_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $this->presentation_service->deleteVideo($presentation_id, $video_id); return $this->deleted(); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @return mixed */ public function submitPresentation($summit_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if (!Request::isJson()) return $this->error400(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, SummitEventValidationRulesFactory::buildForSubmission($data)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'title', 'description', 'social_summary', 'attendees_expected_learnt', ]; $presentation = $this->presentation_service->submitPresentation($summit, HTMLCleaner::cleanData($data, $fields)); return $this->created(SerializerRegistry::getInstance()->getSerializer($presentation)->serialize(Request::input('expand', ''))); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(['message' => $ex1->getMessage()]); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @return mixed */ public function updatePresentationSubmission($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if (!Request::isJson()) return $this->error400(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data, SummitEventValidationRulesFactory::buildForSubmission($data, true)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'title', 'description', 'social_summary', 'attendees_expected_learnt', ]; $presentation = $this->presentation_service->updatePresentationSubmission ( $summit, $presentation_id, HTMLCleaner::cleanData($data, $fields) ); return $this->updated(SerializerRegistry::getInstance()->getSerializer($presentation)->serialize(Request::input('expand', ''))); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @return mixed */ public function completePresentationSubmission($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $presentation = $this->presentation_service->completePresentationSubmission ( $summit, $presentation_id ); return $this->updated(SerializerRegistry::getInstance()->getSerializer($presentation)->serialize(Request::input('expand', ''))); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @return mixed */ public function deletePresentation($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $this->presentation_service->deletePresentation($summit, $presentation_id); return $this->deleted(); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); } catch (EntityNotFoundException $ex2) { Log::warning($ex2); return $this->error404(array('message' => $ex2->getMessage())); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } // Slides /** * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationSlides($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $slides = $presentation->getSlides(); $items = []; foreach ($slides as $i) { if ($i instanceof IEntity) { $i = SerializerRegistry::getInstance()->getSerializer($i)->serialize(); } $items[] = $i; } return $this->ok($items); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); } catch (EntityNotFoundException $ex2) { Log::warning($ex2); return $this->error404(array('message' => $ex2->getMessage())); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $slide_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationSlide($summit_id, $presentation_id, $slide_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $slide = $presentation->getSlideBy($slide_id); if (is_null($slide)) return $this->error404(); return $this->ok(SerializerRegistry::getInstance()->getSerializer($slide)->serialize()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function addPresentationSlide(LaravelRequest $request, $summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationSlideValidationRulesFactory::build($data)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $slide = $this->presentation_service->addSlideTo ( $request, $presentation_id, HTMLCleaner::cleanData($data, $fields), array_merge(FileTypes::ImagesExntesions, FileTypes::SlidesExtensions), intval(Config::get("mediaupload.slides_max_file_size")) ); return $this->created(SerializerRegistry::getInstance()->getSerializer($slide)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @param $slide_id * @return \Illuminate\Http\JsonResponse|mixed */ public function updatePresentationSlide(LaravelRequest $request, $summit_id, $presentation_id, $slide_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $data = MultipartFormDataCleaner::cleanInt('order', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationSlideValidationRulesFactory::build($data, true)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $slide = $this->presentation_service->updateSlide ( $request, $presentation_id, $slide_id, HTMLCleaner::cleanData($data, $fields), array_merge(FileTypes::ImagesExntesions, FileTypes::SlidesExtensions), intval(Config::get("mediaupload.slides_max_file_size")) ); return $this->updated(SerializerRegistry::getInstance()->getSerializer($slide)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $slide_id * @return \Illuminate\Http\JsonResponse|mixed */ public function deletePresentationSlide($summit_id, $presentation_id, $slide_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $this->presentation_service->deleteSlide($presentation_id, $slide_id); return $this->deleted(); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } // Links /** * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationLinks($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $links = $presentation->getLinks(); $items = []; foreach ($links as $i) { if ($i instanceof IEntity) { $i = SerializerRegistry::getInstance()->getSerializer($i)->serialize(); } $items[] = $i; } return $this->ok($items); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); } catch (EntityNotFoundException $ex2) { Log::warning($ex2); return $this->error404(array('message' => $ex2->getMessage())); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $link_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationLink($summit_id, $presentation_id, $link_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation)) return $this->error404(); $link = $presentation->getLinkBy($link_id); if (is_null($link)) return $this->error404(); return $this->ok(SerializerRegistry::getInstance()->getSerializer($link)->serialize()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function addPresentationLink(LaravelRequest $request, $summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationLinkValidationRulesFactory::build($data)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $link = $this->presentation_service->addLinkTo($presentation_id, HTMLCleaner::cleanData($data, $fields)); return $this->created(SerializerRegistry::getInstance()->getSerializer($link)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @param $link_id * @return \Illuminate\Http\JsonResponse|mixed */ public function updatePresentationLink(LaravelRequest $request, $summit_id, $presentation_id, $link_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $data = MultipartFormDataCleaner::cleanInt('order', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, PresentationLinkValidationRulesFactory::build($data, true)); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $fields = [ 'name', 'description', ]; $link = $this->presentation_service->updateLink($presentation_id, $link_id, HTMLCleaner::cleanData($data, $fields)); return $this->updated(SerializerRegistry::getInstance()->getSerializer($link)->serialize()); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $link_id * @return \Illuminate\Http\JsonResponse|mixed */ public function deletePresentationLink($summit_id, $presentation_id, $link_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $this->presentation_service->deleteLink($presentation_id, $link_id); return $this->deleted(); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } // MediaUploads /** * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationMediaUploads($summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); $mediaUploads = $presentation->getMediaUploads(); $items = []; foreach ($mediaUploads as $i) { if ($i instanceof IEntity) { $i = SerializerRegistry::getInstance()->getSerializer($i)->serialize(); } $items[] = $i; } return $this->ok($items); } catch (ValidationException $ex1) { Log::warning($ex1); return $this->error412(array($ex1->getMessage())); } catch (EntityNotFoundException $ex2) { Log::warning($ex2); return $this->error404(array('message' => $ex2->getMessage())); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $media_upload_id * @return \Illuminate\Http\JsonResponse|mixed */ public function getPresentationMediaUpload($summit_id, $presentation_id, $media_upload_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $presentation = $this->presentation_repository->getById($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); $mediaUpload = $presentation->getMediaUploadBy($media_upload_id); if (is_null($mediaUpload)) return $this->error404(); return $this->ok(SerializerRegistry::getInstance()->getSerializer($mediaUpload)->serialize()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @return \Illuminate\Http\JsonResponse|mixed */ public function addPresentationMediaUpload(LaravelRequest $request, $summit_id, $presentation_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $serializeType = SerializerRegistry::SerializerType_Private; $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { $serializeType = SerializerRegistry::SerializerType_Public; // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $rules = [ 'media_upload_type_id' => 'required|integer', 'display_on_site' => 'sometimes|boolean', ]; $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, $rules); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $mediaUpload = $this->presentation_service->addMediaUploadTo ( $request, $summit, intval($presentation_id), $data ); $fields = Request::input('fields', ''); $relations = Request::input('relations', ''); $relations = !empty($relations) ? explode(',', $relations) : []; $fields = !empty($fields) ? explode(',', $fields) : []; return $this->created(SerializerRegistry::getInstance()->getSerializer ( $mediaUpload, $serializeType) ->serialize ( Request::input('expand', ''), $fields, $relations ) ); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param LaravelRequest $request * @param $summit_id * @param $presentation_id * @param $media_upload_id * @return \Illuminate\Http\JsonResponse|mixed */ public function updatePresentationMediaUpload(LaravelRequest $request, $summit_id, $presentation_id, $media_upload_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $serializeType = SerializerRegistry::SerializerType_Private; $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { $serializeType = SerializerRegistry::SerializerType_Public; // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $data = $request->all(); $rules = [ 'display_on_site' => 'sometimes|boolean', ]; $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); // Creates a Validator instance and validates the data. $validation = Validator::make($data, $rules); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } $mediaUpload = $this->presentation_service->updateMediaUploadFrom ( $request, $summit, intval($presentation_id), intval($media_upload_id), $data ); $fields = Request::input('fields', ''); $relations = Request::input('relations', ''); $relations = !empty($relations) ? explode(',', $relations) : []; $fields = !empty($fields) ? explode(',', $fields) : []; return $this->updated(SerializerRegistry::getInstance()->getSerializer ( $mediaUpload, $serializeType) ->serialize ( Request::input('expand', ''), $fields, $relations ) ); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @param $presentation_id * @param $media_upload_id * @return \Illuminate\Http\JsonResponse|mixed */ public function deletePresentationMediaUpload($summit_id, $presentation_id, $media_upload_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $isAdmin = $current_member->isAdmin() || $current_member->hasPermissionForOnGroup($summit, IGroup::SummitAdministrators); if (!$isAdmin) { // check if we could edit presentation $presentation = $summit->getEvent($presentation_id); if (is_null($presentation) || !$presentation instanceof Presentation) return $this->error404(); if (!$current_member->hasSpeaker() || !$presentation->canEdit($current_member->getSpeaker())) return $this->error403(); } $this->presentation_service->deleteMediaUpload($summit, intval($presentation_id), intval($media_upload_id)); return $this->deleted(); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } /** * @param $summit_id * @return \Illuminate\Http\JsonResponse|mixed */ public function importAssetsFromMUX($summit_id) { try { $summit = SummitFinderStrategyFactory::build($this->summit_repository, $this->resource_server_context)->find($summit_id); if (is_null($summit)) return $this->error404(); if (!Request::isJson()) return $this->error400(); $current_member = $this->resource_server_context->getCurrentUser(); if (is_null($current_member)) return $this->error403(); $data = Request::json(); $data = $data->all(); // Creates a Validator instance and validates the data. $validation = Validator::make($data,[ 'mux_token_id' => 'required|string', 'mux_token_secret' => 'required|string', 'email_to' => 'sometimes|email', ]); if ($validation->fails()) { $ex = new ValidationException; $ex->setMessages($validation->messages()->toArray()); throw $ex; } VideoStreamUrlMUXProcessingForSummitJob::dispatch( $summit_id, $data['mux_token_id'], $data['mux_token_secret'], $data['email_to'] ?? null )->delay(now()->addMinutes(1)); return $this->ok(); } catch (EntityNotFoundException $ex1) { Log::warning($ex1); return $this->error404(['message' => $ex1->getMessage()]); } catch (ValidationException $ex2) { Log::warning($ex2); return $this->error412($ex2->getMessages()); } catch (Exception $ex) { Log::error($ex); return $this->error500($ex); } } }