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|string: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|string: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:255', 'description' => 'required|string|max:1100', 'social_description' => 'required|string|max:110', 'level' => 'required|in:Beginner,Intermediate,Advanced,N/A', 'attendees_expected_learnt' => 'required|string|max:1100', '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(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 = Input::json(); $rules = [ 'title' => 'required|string|max:255', 'description' => 'required|string|max:1100', 'social_description' => 'required|string|max:110', 'level' => 'required|in:Beginner,Intermediate,Advanced,N/A', 'attendees_expected_learnt' => 'required|string|max:1100', '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(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, $current_member ); 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, $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(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $rules = [ 'file' => 'required_without:link', 'link' => 'required_without:file|url', 'name' => 'required|string:512', 'description' => 'nullable|string', 'display_on_site' => 'nullable|boolean', 'featured' => 'nullable|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(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $data = MultipartFormDataCleaner::cleanInt('order', $data); $rules = [ 'link' => 'nullable|url', 'name' => 'nullable|string:512', 'description' => 'nullable|string', 'display_on_site' => 'nullable|boolean', 'featured' => 'nullable|boolean', 'order' => 'nullable|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(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $rules = [ 'link' => 'required|url', 'name' => 'required|string:512', 'description' => 'nullable|string', 'display_on_site' => 'nullable|boolean', 'featured' => 'nullable|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(); $data = MultipartFormDataCleaner::cleanBool('display_on_site', $data); $data = MultipartFormDataCleaner::cleanBool('featured', $data); $data = MultipartFormDataCleaner::cleanInt('order', $data); $rules = [ 'link' => 'sometimes|required|url', 'name' => 'sometimes|required|string:512', 'description' => 'nullable|string', 'display_on_site' => 'nullable|boolean', 'featured' => 'nullable|boolean', 'order' => 'nullable|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); } } // 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; if(!$current_member->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', ]; // 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; if(!$current_member->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(); } $mediaUpload = $this->presentation_service->updateMediaUploadFrom ( $request, $summit, intval($presentation_id), intval($media_upload_id) ); $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(); $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); } } }