diff --git a/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php b/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php index 56cc5c8da..b8f53d1b2 100644 --- a/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php +++ b/src/Bundle/ChillDocGeneratorBundle/Controller/DocGeneratorTemplateController.php @@ -3,6 +3,8 @@ namespace Chill\DocGeneratorBundle\Controller; use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository; +use Chill\DocStoreBundle\Entity\StoredObject; +use GuzzleHttp\Exception\TransferException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; @@ -54,7 +56,7 @@ class DocGeneratorTemplateController extends AbstractController * ) */ public function generateDocFromTemplateAction( - TempUrlOpenstackGenerator $tempUrlGenerator, + \ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlGeneratorInterface $tempUrlGenerator, DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response { $getUrlGen = $tempUrlGenerator->generate( @@ -87,7 +89,7 @@ class DocGeneratorTemplateController extends AbstractController $fileContent = fopen($tmpfname2, 'r'); // the generated file content - $genDocName = 'doc_'.sprintf( '%010d', rand()).'.docx'; + $genDocName = 'doc_' . sprintf('%010d', rand()) . '.docx'; $getUrlGen = $tempUrlGenerator->generate( 'PUT', @@ -97,25 +99,28 @@ class DocGeneratorTemplateController extends AbstractController $client = new Client(); - $putResponse = $client->request('PUT', $getUrlGen->{'url'}, [ - 'body' => $fileContent - ]); + try { + $putResponse = $client->request('PUT', $getUrlGen->{'url'}, [ + 'body' => $fileContent + ]); - if ($putResponse->getStatusCode() == 201) { - return new JsonResponse( - array( - "msg" => "Document créé", - "id" => $genDocName, - "response" => array( - "reasonPhrase" => $putResponse->getReasonPhrase(), - "statusCode" => $putResponse->getStatusCode()))); + if ($putResponse->getStatusCode() == 201) { + $storedObject = new StoredObject(); + $storedObject + // currently, only docx is supported + ->setType('application/vnd.openxmlformats-officedocument.wordprocessingml.document') + ->setFilename($genDocName); + + $em = $this->getDoctrine()->getManager(); + $em->persist($storedObject); + $em->flush(); + + return $this->redirectToRoute('chill_wopi_file_edit', [ + 'fileId' => $genDocName + ]); + } + } catch (TransferException $e) { + throw $e; } - - return new JsonResponse( - array( - "msg" => "PBM", - "response" => array( - "reasonPhrase" => $putResponse->getReasonPhrase(), - "statusCode" => $putResponse->getStatusCode()))); } } diff --git a/src/Bundle/ChillDocStoreBundle/Entity/StoredObject.php b/src/Bundle/ChillDocStoreBundle/Entity/StoredObject.php index 538cab28b..019d9a124 100644 --- a/src/Bundle/ChillDocStoreBundle/Entity/StoredObject.php +++ b/src/Bundle/ChillDocStoreBundle/Entity/StoredObject.php @@ -37,14 +37,14 @@ class StoredObject implements AsyncFileInterface /** * @ORM\Column(type="json_array", name="key") */ - private array $keyInfos; + private array $keyInfos = []; /** * * @var int[] * @ORM\Column(type="json_array", name="iv") */ - private array $iv; + private array $iv = []; /** * @ORM\Column(type="datetime", name="creation_date") @@ -59,7 +59,7 @@ class StoredObject implements AsyncFileInterface /** * @ORM\Column(type="json_array", name="datas") */ - private array $datas; + private array $datas = []; public function __construct() { diff --git a/src/Bundle/ChillMainBundle/Resources/public/chill/js/date.js b/src/Bundle/ChillMainBundle/Resources/public/chill/js/date.js index 44fab8dc2..dfe667536 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/chill/js/date.js +++ b/src/Bundle/ChillMainBundle/Resources/public/chill/js/date.js @@ -94,7 +94,7 @@ const datetimeToISO = (date) => { const intervalDaysToISO = (days) => { if (null === days) { - return 'PD0'; + return 'P0D'; } return `P${days}D`; diff --git a/src/Bundle/ChillWopiBundle/src/Resources/config/routes/routes.php b/src/Bundle/ChillWopiBundle/src/Resources/config/routes/routes.php index e0f3447aa..60bd96bde 100644 --- a/src/Bundle/ChillWopiBundle/src/Resources/config/routes/routes.php +++ b/src/Bundle/ChillWopiBundle/src/Resources/config/routes/routes.php @@ -12,6 +12,6 @@ use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; return static function (RoutingConfigurator $routes) { $routes - ->add('testtest', '/edit/{fileId}') + ->add('chill_wopi_file_edit', '/edit/{fileId}') ->controller(Test::class); };