headers->get('x-auth-token'); $security->isGranted('MAESTRO_PROJECT_TEMPLATE_CREATE', $token); $keyRequest = "request"; $methodRequest = "get"; $keyTemplate = "template"; $keyTwig = "twig"; $methodIsNameAlreadyExist = "isNameAlreadyExist"; $methodRead = "read"; $templateName = $request->get('name'); if ($templateName) { $existingTemplate = $query->isNameAlreadyExist($templateName); if (!$existingTemplate) { $twig = null; $twigId = $request->get('twigId'); $newTwig = false; if (!$twigId) { $twigName = $request->get('twigName'); if ($twigName) { $existingTwig = $twigReadQuery->isNameAlreadyExist($twigName); if (!$existingTwig) { $exportType = (int) $request->get('exportType'); if ($exportType) { $twigContent = $request->get('twigContent'); if (true === strpos($twigContent, '= strpos($twigContent, '') || 0 === strpos($twigContent, '{')) { $twigView = new TwigView( null, $twigName, $exportType, $twigContent, [] ); $twigCreated = $twigCreateQuery->create($twigView); $twigId = $twigCreated; $newTwig = true; } else { throw new UnprocessableEntityMaestroException("content of twigContent", $keyRequest, $methodRequest); } } else { throw new UnprocessableEntityMaestroException("exportType", $keyRequest, $methodRequest); } } else { throw new InternalServerErrorMaestroException("twig\'s name", $keyTwig, $methodIsNameAlreadyExist); } } else { throw new UnprocessableEntityMaestroException("twigName", $keyTwig, $methodRequest); } } // TODO : See for return entity directly in created return statement to pass in variable creation $twigIdView = new CommonIdView( $twigId ); $twig = $twigReadQuery->read($twigIdView); if ($twig) { // TODO : Remove control when query will throw exception // if ($newTwig) { // $variableCreateQuery->create($twig); // } // Here we could get .jsx & .indt file but also other files that we want to store in database $keyFile = "file"; $methodFile = "getClientOriginalExtension"; $jsxFile = $request->files->get('fileJsx'); if ($jsxFile) { $jsx = "Jsx file"; $extension = $jsxFile->getClientOriginalExtension(); if (!$extension) { throw new NotFoundMaestroException("$jsx\'s extension", $keyFile, $methodFile); } // TODO : See FileMimeTypeValidator if ('jsx' !== $extension) { throw new NotFoundMaestroException("$jsx", $keyFile, $methodFile); } } $indtFile = $request->files->get('fileIndt'); if ($indtFile) { $indt = "Indt file"; $extension = $indtFile->getClientOriginalExtension(); if (!$extension) { throw new NotFoundMaestroException("$indt\'s extension", $keyFile, $methodFile); } // TODO : See FileMimeTypeValidator if ('indt' !== $extension) { throw new NotFoundMaestroException("$indt", $keyFile, $methodFile); } } $htmlfiles = []; if (!empty($request->files->all()) && isset($request->files->all()['htmlFile'])) { $htmlfiles = $request->files->all()['htmlFile']; } $previewfiles = []; if (!empty($request->files->all()) && isset($request->files->all()['filesPreview'])) { $previewfiles = $request->files->all()['filesPreview']; } $templateCreateView = new TemplateCreateView( $templateName, $request->get('regeneratedAt') ?? date('Y-m-d'), null !== $request->get('numberPage') && (int) $request->get('numberPage') ? (int) $request->get('numberPage') : 0, null !== $request->get('numberElement') && (int) $request->get('numberElement') ? (int) $request->get('numberElement') : 0, $request->get('suffix'), $request->get('fontPath'), null !== $request->get('options') ? json_decode($request->get('options'), true) : [], null !== $request->get('medias') ? json_decode($request->get('medias'), true) : [], null !== $request->get('pictos') ? json_decode($request->get('pictos'), true) : [], $jsxFile ?: null, $indtFile ?: null, $htmlfiles, $previewfiles, ); $templateCreated = $query->create($twig, $templateCreateView); $templateView = $query->getTemplateData($templateCreated); if ($templateCreated->getId() > 0) { $body = new CommonResponseView($templateView, 'create', $keyTemplate, 'success'); return $respond->statusCreated()->createBodyObject($body)->respond(); } else { throw new NotFoundMaestroException("Template for id ".$templateCreated->getId(), $keyTemplate, $methodRead); } } else { throw new NotFoundMaestroException("Twig for id $twigId", $keyTwig, $methodRead); } } else { throw new InternalServerErrorMaestroException("template\'s name", $keyTemplate, $methodIsNameAlreadyExist); } } else { throw new UnprocessableEntityMaestroException("name", $keyRequest, $methodRequest); } } }