From d349f4d6845d315daf5ea6b963054fbc46fa4841 Mon Sep 17 00:00:00 2001 From: Sebastian Marcet Date: Wed, 20 Dec 2017 02:16:05 -0300 Subject: [PATCH] Fix on Admin Speaker Serializer Added all presentation collection Change-Id: I38448e850526063885c6f041c1840ed4adc33fc7 --- .../OAuth2SummitSpeakersApiController.php | 2 +- app/Http/Utils/FileUploader.php | 7 +++++-- .../AdminPresentationSpeakerSerializer.php | 21 +++++++++++++++++++ .../Foundation/Main/AssetsSyncRequest.php | 2 +- app/Models/Foundation/Main/File.php | 15 +++++++++++++ app/Services/Model/ISpeakerService.php | 2 +- app/Services/Model/SpeakerService.php | 4 ++-- app/Services/Model/SummitService.php | 2 +- 8 files changed, 47 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php index 51700439..59d612cd 100644 --- a/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php +++ b/app/Http/Controllers/Apis/Protected/Summit/OAuth2SummitSpeakersApiController.php @@ -458,7 +458,7 @@ final class OAuth2SummitSpeakersApiController extends OAuth2ProtectedController return $this->error412(array('file param not set!')); } - $res = $this->service->addSpeakerAttachment($speaker_id, $file); + $res = $this->service->addSpeakerPhoto($speaker_id, $file); return !is_null($res) ? $this->created($res->getId()) : $this->error400(); } diff --git a/app/Http/Utils/FileUploader.php b/app/Http/Utils/FileUploader.php index 865b73ed..28189369 100644 --- a/app/Http/Utils/FileUploader.php +++ b/app/Http/Utils/FileUploader.php @@ -35,10 +35,11 @@ final class FileUploader /** * @param UploadedFile $file - * @param $folder_name + * @param string $folder_name + * @param bool $is_image * @return File */ - public function build(UploadedFile $file, $folder_name){ + public function build(UploadedFile $file, $folder_name, $is_image = false){ $attachment = new File(); $local_path = Storage::putFileAs(sprintf('/public/%s', $folder_name), $file, $file->getClientOriginalName()); $folder = $this->folder_repository->getFolderByName($folder_name); @@ -47,6 +48,8 @@ final class FileUploader $attachment->setFilename(sprintf("assets/%s/%s",$folder_name, $file->getClientOriginalName())); $attachment->setTitle(str_replace(array('-','_'),' ', preg_replace('/\.[^.]+$/', '', $file->getClientOriginalName()))); $attachment->setShowInSearch(true); + if($is_image) + $attachment->setImage(); Event::fire(new FileCreated($local_path, $file->getClientOriginalName(), $folder_name)); return $attachment; } diff --git a/app/ModelSerializers/AdminPresentationSpeakerSerializer.php b/app/ModelSerializers/AdminPresentationSpeakerSerializer.php index eb8ee35c..f5953cfd 100644 --- a/app/ModelSerializers/AdminPresentationSpeakerSerializer.php +++ b/app/ModelSerializers/AdminPresentationSpeakerSerializer.php @@ -48,6 +48,27 @@ final class AdminPresentationSpeakerSerializer extends PresentationSpeakerSerial $values['registration_code'] = SerializerRegistry::getInstance()->getSerializer($registration_code)->serialize(); } } + + if (!empty($expand)) { + foreach (explode(',', $expand) as $relation) { + switch (trim($relation)) { + case 'presentations': { + $presentations = []; + foreach ($speaker->getPresentations($summit->getId(), false) as $p) { + $presentations[] = SerializerRegistry::getInstance()->getSerializer($p)->serialize(); + } + $values['all_presentations'] = $presentations; + + $moderated_presentations = []; + foreach ($speaker->getModeratedPresentations($summit->getId(), false) as $p) { + $moderated_presentations[] = SerializerRegistry::getInstance()->getSerializer($p)->serialize(); + } + $values['all_moderated_presentations'] = $presentations; + } + break; + } + } + } return $values; } } \ No newline at end of file diff --git a/app/Models/Foundation/Main/AssetsSyncRequest.php b/app/Models/Foundation/Main/AssetsSyncRequest.php index 57dc4ead..08a04c12 100644 --- a/app/Models/Foundation/Main/AssetsSyncRequest.php +++ b/app/Models/Foundation/Main/AssetsSyncRequest.php @@ -24,7 +24,7 @@ use DateTime; class AssetsSyncRequest extends SilverstripeBaseModel { /** - * @ORM\Column(name="`Source`", type="string") + * @ORM\Column(name="`Origin`", type="string") */ private $from; diff --git a/app/Models/Foundation/Main/File.php b/app/Models/Foundation/Main/File.php index 194f7d32..bc74a528 100644 --- a/app/Models/Foundation/Main/File.php +++ b/app/Models/Foundation/Main/File.php @@ -31,6 +31,11 @@ class File extends SilverstripeBaseModel */ private $title; + /** + * @ORM\Column(name="ClassName", type="string") + */ + private $class_name; + /** * @ORM\Column(name="Content", type="string") */ @@ -172,4 +177,14 @@ class File extends SilverstripeBaseModel { $this->owner = $owner; } + + public function __construct() + { + parent::__construct(); + $this->class_name = 'File'; + } + + public function setImage(){ + $this->class_name = 'Image'; + } } \ No newline at end of file diff --git a/app/Services/Model/ISpeakerService.php b/app/Services/Model/ISpeakerService.php index f7a5555a..3374e5ae 100644 --- a/app/Services/Model/ISpeakerService.php +++ b/app/Services/Model/ISpeakerService.php @@ -58,5 +58,5 @@ interface ISpeakerService * @throws EntityNotFoundException * @return File */ - public function addSpeakerAttachment($speaker_id, UploadedFile $file, $max_file_size = 10485760); + public function addSpeakerPhoto($speaker_id, UploadedFile $file, $max_file_size = 10485760); } \ No newline at end of file diff --git a/app/Services/Model/SpeakerService.php b/app/Services/Model/SpeakerService.php index 3ea3152f..0d485f2a 100644 --- a/app/Services/Model/SpeakerService.php +++ b/app/Services/Model/SpeakerService.php @@ -349,7 +349,7 @@ final class SpeakerService implements ISpeakerService * @throws EntityNotFoundException * @return File */ - public function addSpeakerAttachment($speaker_id, UploadedFile $file, $max_file_size = 10485760) + public function addSpeakerPhoto($speaker_id, UploadedFile $file, $max_file_size = 10485760) { return $this->tx_service->transaction(function () use ($speaker_id, $file, $max_file_size) { @@ -371,7 +371,7 @@ final class SpeakerService implements ISpeakerService } $uploader = new FileUploader($this->folder_repository); - $photo = $uploader->build($file, 'profile-images'); + $photo = $uploader->build($file, 'profile-images', true); $speaker->setPhoto($photo); return $photo; diff --git a/app/Services/Model/SummitService.php b/app/Services/Model/SummitService.php index cb0a31d6..93fe562a 100644 --- a/app/Services/Model/SummitService.php +++ b/app/Services/Model/SummitService.php @@ -1207,7 +1207,7 @@ final class SummitService implements ISummitService } $uploader = new FileUploader($this->folder_repository); - $attachment = $uploader->build($file, 'summit-event-attachments'); + $attachment = $uploader->build($file, 'summit-event-attachments', true); $event->setAttachment($attachment); return $attachment;