Updated validation for slides
Change-Id: Ia81b03706480cccc8c2a9f5c6d93aa7490f6778c
This commit is contained in:
parent
2cd6096a0f
commit
da95ec094c
|
@ -678,7 +678,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController
|
|||
$data = $request->all();
|
||||
|
||||
$rules = [
|
||||
'link' => 'sometimes|required|url',
|
||||
'link' => 'nullable|url',
|
||||
'name' => 'sometimes|required|text:512',
|
||||
'description' => 'sometimes|required|string',
|
||||
'display_on_site' => 'sometimes|required|boolean',
|
||||
|
@ -691,7 +691,7 @@ final class OAuth2PresentationApiController extends OAuth2ProtectedController
|
|||
|
||||
if ($validation->fails()) {
|
||||
$ex = new ValidationException;
|
||||
$ex->setMessages($validation->messaupdateSlideges()->toArray());
|
||||
$ex->setMessages($validation->messages()->toArray());
|
||||
throw $ex;
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,10 @@ class PresentationSlide extends PresentationMaterial
|
|||
return $this->slide;
|
||||
}
|
||||
|
||||
public function clearSlide(){
|
||||
$this->slide = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param File $slide
|
||||
*/
|
||||
|
@ -74,6 +78,11 @@ class PresentationSlide extends PresentationMaterial
|
|||
$this->link = $link;
|
||||
}
|
||||
|
||||
public function clearLink():void
|
||||
{
|
||||
$this->link = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
|
|
@ -23,6 +23,7 @@ use App\Models\Foundation\Summit\Events\Presentations\TrackQuestions\TrackAnswer
|
|||
use Illuminate\Support\Facades\Event;
|
||||
use models\exceptions\EntityNotFoundException;
|
||||
use models\exceptions\ValidationException;
|
||||
use models\main\IFolderRepository;
|
||||
use models\main\ITagRepository;
|
||||
use models\main\Member;
|
||||
use models\summit\ISpeakerRepository;
|
||||
|
@ -70,6 +71,11 @@ final class PresentationService
|
|||
*/
|
||||
private $file_uploader;
|
||||
|
||||
/**
|
||||
* @var IFolderRepository
|
||||
*/
|
||||
private $folder_repository;
|
||||
|
||||
/**
|
||||
* PresentationService constructor.
|
||||
* @param ISummitEventRepository $presentation_repository
|
||||
|
@ -77,6 +83,7 @@ final class PresentationService
|
|||
* @param ITagRepository $tag_repository
|
||||
* @param IFolderService $folder_service
|
||||
* @param IFileUploader $file_uploader
|
||||
* @param IFolderRepository $folder_repository
|
||||
* @param ITransactionService $tx_service
|
||||
*/
|
||||
public function __construct
|
||||
|
@ -86,6 +93,7 @@ final class PresentationService
|
|||
ITagRepository $tag_repository,
|
||||
IFolderService $folder_service,
|
||||
IFileUploader $file_uploader,
|
||||
IFolderRepository $folder_repository,
|
||||
ITransactionService $tx_service
|
||||
)
|
||||
{
|
||||
|
@ -95,6 +103,7 @@ final class PresentationService
|
|||
$this->tag_repository = $tag_repository;
|
||||
$this->folder_service = $folder_service;
|
||||
$this->file_uploader = $file_uploader;
|
||||
$this->folder_repository = $folder_repository;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -707,10 +716,24 @@ final class PresentationService
|
|||
if (!$slide instanceof PresentationSlide)
|
||||
throw new EntityNotFoundException('slide not found!');
|
||||
|
||||
$hasLink = isset($slide_data['link']);
|
||||
$hasFile = $request->hasFile('file');
|
||||
|
||||
if($hasFile && $hasLink){
|
||||
throw new ValidationException("you must set a file or a link, not both!");
|
||||
}
|
||||
|
||||
PresentationSlideFactory::populate($slide, $slide_data);
|
||||
|
||||
if($hasLink && $slide->hasSlide()){
|
||||
// drop file
|
||||
$file = $slide->getSlide();
|
||||
$this->folder_repository->delete($file);
|
||||
$slide->clearSlide();
|
||||
}
|
||||
|
||||
// check if there is any file sent
|
||||
if($request->hasFile('file')){
|
||||
if($hasFile){
|
||||
$file = $request->file('file');
|
||||
if (!in_array($file->extension(), $allowed_extensions)) {
|
||||
throw new ValidationException(
|
||||
|
@ -723,6 +746,7 @@ final class PresentationService
|
|||
|
||||
$slideFile = $this->file_uploader->build($file, sprintf('summits/%s/presentations/%s/slides/', $presentation->getSummitId(), $presentation_id), false);
|
||||
$slide->setSlide($slideFile);
|
||||
$slide->clearLink();
|
||||
}
|
||||
|
||||
if (isset($data['order']) && intval($slide_data['order']) != $slide->getOrder()) {
|
||||
|
|
Loading…
Reference in New Issue