add redirection to wopi after doc generation

This commit is contained in:
Julien Fastré 2021-08-19 23:30:45 +02:00 committed by Marc Ducobu
parent 663d484bee
commit 0f838fbb2d
4 changed files with 30 additions and 25 deletions

View File

@ -3,6 +3,8 @@
namespace Chill\DocGeneratorBundle\Controller; namespace Chill\DocGeneratorBundle\Controller;
use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository; use Chill\DocGeneratorBundle\Repository\DocGeneratorTemplateRepository;
use Chill\DocStoreBundle\Entity\StoredObject;
use GuzzleHttp\Exception\TransferException;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\JsonResponse;
@ -54,7 +56,7 @@ class DocGeneratorTemplateController extends AbstractController
* ) * )
*/ */
public function generateDocFromTemplateAction( public function generateDocFromTemplateAction(
TempUrlOpenstackGenerator $tempUrlGenerator, \ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlGeneratorInterface $tempUrlGenerator,
DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response
{ {
$getUrlGen = $tempUrlGenerator->generate( $getUrlGen = $tempUrlGenerator->generate(
@ -87,7 +89,7 @@ class DocGeneratorTemplateController extends AbstractController
$fileContent = fopen($tmpfname2, 'r'); // the generated file content $fileContent = fopen($tmpfname2, 'r'); // the generated file content
$genDocName = 'doc_'.sprintf( '%010d', rand()).'.docx'; $genDocName = 'doc_' . sprintf('%010d', rand()) . '.docx';
$getUrlGen = $tempUrlGenerator->generate( $getUrlGen = $tempUrlGenerator->generate(
'PUT', 'PUT',
@ -97,25 +99,28 @@ class DocGeneratorTemplateController extends AbstractController
$client = new Client(); $client = new Client();
$putResponse = $client->request('PUT', $getUrlGen->{'url'}, [ try {
'body' => $fileContent $putResponse = $client->request('PUT', $getUrlGen->{'url'}, [
]); 'body' => $fileContent
]);
if ($putResponse->getStatusCode() == 201) { if ($putResponse->getStatusCode() == 201) {
return new JsonResponse( $storedObject = new StoredObject();
array( $storedObject
"msg" => "Document créé", // currently, only docx is supported
"id" => $genDocName, ->setType('application/vnd.openxmlformats-officedocument.wordprocessingml.document')
"response" => array( ->setFilename($genDocName);
"reasonPhrase" => $putResponse->getReasonPhrase(),
"statusCode" => $putResponse->getStatusCode()))); $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())));
} }
} }

View File

@ -37,14 +37,14 @@ class StoredObject implements AsyncFileInterface
/** /**
* @ORM\Column(type="json_array", name="key") * @ORM\Column(type="json_array", name="key")
*/ */
private array $keyInfos; private array $keyInfos = [];
/** /**
* *
* @var int[] * @var int[]
* @ORM\Column(type="json_array", name="iv") * @ORM\Column(type="json_array", name="iv")
*/ */
private array $iv; private array $iv = [];
/** /**
* @ORM\Column(type="datetime", name="creation_date") * @ORM\Column(type="datetime", name="creation_date")
@ -59,7 +59,7 @@ class StoredObject implements AsyncFileInterface
/** /**
* @ORM\Column(type="json_array", name="datas") * @ORM\Column(type="json_array", name="datas")
*/ */
private array $datas; private array $datas = [];
public function __construct() public function __construct()
{ {

View File

@ -94,7 +94,7 @@ const datetimeToISO = (date) => {
const intervalDaysToISO = (days) => { const intervalDaysToISO = (days) => {
if (null === days) { if (null === days) {
return 'PD0'; return 'P0D';
} }
return `P${days}D`; return `P${days}D`;

View File

@ -12,6 +12,6 @@ use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
return static function (RoutingConfigurator $routes) { return static function (RoutingConfigurator $routes) {
$routes $routes
->add('testtest', '/edit/{fileId}') ->add('chill_wopi_file_edit', '/edit/{fileId}')
->controller(Test::class); ->controller(Test::class);
}; };