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 = Input::json(); $rules = [ 'youtube_id' => 'required|alpha_dash', 'name' => 'sometimes|required|text:512', 'description' => 'sometimes|required|string', 'featured' => 'sometimes|required|boolean', 'display_on_site' => 'sometimes|required|boolean', ]; $data = $data->all(); // 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; } $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 = Input::json(); $rules = [ 'youtube_id' => 'required|alpha_dash', 'name' => 'sometimes|required|text:512', 'description' => 'sometimes|required|string', 'display_on_site' => 'sometimes|required|boolean', 'featured' => 'sometimes|required|boolean', 'order' => 'sometimes|integer|min:1', ]; $data = $data->all(); // 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; } $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 = Input::json(); $rules = [ 'title' => 'required|string|max:100', 'description' => 'required|string|max:1000', 'social_description' => 'required|string|max:100', 'level' => 'required|in:Beginner,Intermediate,Advanced,N/A', 'attendees_expected_learnt' => 'required|string|max:1000', 'type_id' => 'required|integer', 'track_id' => 'required|integer', 'attending_media' => 'required|boolean', 'links' => 'sometimes|url_array', 'extra_questions' => 'sometimes|entity_value_array', 'tags' => 'sometimes|string_array', ]; $data = $data->all(); // 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; } $fields = [ 'title', 'description', 'social_summary', 'attendees_expected_learnt', ]; $presentation = $this->presentation_service->submitPresentation($summit, $current_member, HTMLCleaner::cleanData($data, $fields)); return $this->created(SerializerRegistry::getInstance()->getSerializer($presentation)->serialize()); } 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 = Input::json(); $rules = [ 'title' => 'required|string|max:100', 'description' => 'required|string|max:1000', 'social_description' => 'required|string|max:100', 'level' => 'required|in:Beginner,Intermediate,Advanced,N/A', 'attendees_expected_learnt' => 'required|string|max:1000', 'type_id' => 'required|integer', 'track_id' => 'required|integer', 'attending_media' => 'required|boolean', 'links' => 'sometimes|url_array', 'extra_questions' => 'sometimes|entity_value_array', 'tags' => 'sometimes|string_array', ]; $data = $data->all(); // 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; } $fields = [ 'title', 'description', 'social_summary', 'attendees_expected_learnt', ]; $presentation = $this->presentation_service->updatePresentationSubmission( $summit, $presentation_id, $current_member, HTMLCleaner::cleanData($data, $fields) ); return $this->updated(SerializerRegistry::getInstance()->getSerializer($presentation)->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 * @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, $current_member ); return $this->updated(SerializerRegistry::getInstance()->getSerializer($presentation)->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 * @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, $current_member, $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(); if(!$current_member->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(); $rules = [ 'file' => 'required_without:link', 'link' => 'required_without:file|url', 'name' => 'required|text:512', 'description' => 'sometimes|required|string', 'display_on_site' => 'sometimes|required|boolean', 'featured' => 'sometimes|required|boolean', ]; // 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; } $fields = [ 'name', 'description', ]; $slide = $this->presentation_service->addSlideTo ( $request, $presentation_id, HTMLCleaner::cleanData($data, $fields), array_merge(FileTypes::ImagesExntesions, FileTypes::SlidesExtensions) ); 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(); if(!$current_member->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(); $rules = [ 'link' => 'nullable|url', 'name' => 'sometimes|required|text:512', 'description' => 'sometimes|required|string', 'display_on_site' => 'sometimes|required|boolean', 'featured' => 'sometimes|required|boolean', 'order' => 'sometimes|integer|min:1', ]; // 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; } $fields = [ 'name', 'description', ]; $slide = $this->presentation_service->updateSlide ( $request, $presentation_id, $slide_id, HTMLCleaner::cleanData($data, $fields), array_merge(FileTypes::ImagesExntesions, FileTypes::SlidesExtensions) ); 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(); $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(); $data = $request->all(); $rules = [ 'link' => 'required|url', 'name' => 'required|text:512', 'description' => 'sometimes|required|string', 'display_on_site' => 'sometimes|required|boolean', 'featured' => 'sometimes|required|boolean', ]; // 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; } $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(); $data = $request->all(); $rules = [ 'link' => 'sometimes|required|url', 'name' => 'sometimes|required|text:512', 'description' => 'sometimes|required|string', 'display_on_site' => 'sometimes|required|boolean', 'featured' => 'sometimes|required|boolean', 'order' => 'sometimes|integer|min:1', ]; // 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; } $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(); $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); } } }