Save generated doc in openstack

This commit is contained in:
Marc Ducobu 2021-08-19 18:22:53 +02:00
parent e6f5ef91ec
commit 237476dc28

View File

@ -11,10 +11,10 @@ use Symfony\Component\Routing\Annotation\Route;
use Chill\DocGeneratorBundle\Entity\DocGeneratorTemplate;
use ChampsLibres\AsyncUploaderBundle\TempUrl\TempUrlOpenstackGenerator;
use PhpOffice\PhpWord\TemplateProcessor;
use GuzzleHttp\Client;
// TODO à mettre dans services
use Chill\DocGeneratorBundle\Context\HouseholdMemberSelectionContext;
use Chill\PersonBundle\Entity\AccompanyingPeriod\AccompanyingPeriodWorkEvaluation;
/**
* Class DocGeneratorTemplateController
@ -57,12 +57,12 @@ class DocGeneratorTemplateController extends AbstractController
TempUrlOpenstackGenerator $tempUrlGenerator,
DocGeneratorTemplate $template, string $entityClassName, int $entityId): Response
{
$p = $tempUrlGenerator->generate(
$getUrlGen = $tempUrlGenerator->generate(
'GET',
$template->getFile());
$tmpfname = tempnam(sys_get_temp_dir(), 'DOC_TEMPLATE');
file_put_contents($tmpfname, file_get_contents($p->{"url"}));
file_put_contents($tmpfname, file_get_contents($getUrlGen->{"url"}));
$entity = $this->getDoctrine()->getRepository($entityClassName)->find($entityId);
@ -83,16 +83,36 @@ class DocGeneratorTemplateController extends AbstractController
unlink($tmpfname);
$fileContent = fopen($tmpfname2, 'r'); // the generated file content
$response = new Response(fread($fileContent, filesize($tmpfname2)));
$disposition = HeaderUtils::makeDisposition(
HeaderUtils::DISPOSITION_ATTACHMENT,
'foo.docx'
);
$genDocName = 'doc_'.sprintf( '%010d', rand()).'.docx';
$getUrlGen = $tempUrlGenerator->generate(
'PUT',
$genDocName);
$response->headers->set('Content-Disposition', $disposition);
unlink($tmpfname2);
return $response;
$client = new Client();
$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())));
}
return new JsonResponse(
array(
"msg" => "PBM",
"response" => array(
"reasonPhrase" => $putResponse->getReasonPhrase(),
"statusCode" => $putResponse->getStatusCode())));
}
}