src/Controller/Api/CreateOrUpdateLetterAction.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use Evo\Infrastructure\MappingORM\Letter;
  4. use Evo\Infrastructure\MappingORM\LetterSignature;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  7. use Symfony\Component\Serializer\SerializerInterface;
  8. final class CreateOrUpdateLetterAction
  9. {
  10.     public const POST_ROUTE_NAME 'api_letters_post_collection';
  11.     public function __invoke(Request $requestSerializerInterface $serializer): Letter
  12.     {
  13.         $envelopeFrontFile $request->files->get('envelopeFrontFile');
  14.         $envelopeBackFile $request->files->get('envelopeBackFile');
  15.         $contentFile $request->files->get('contentFile');
  16.         $letterSignatureFile $request->files->get('letterSignature')['signatureFile'] ?? null;
  17.         $route $request->attributes->get('_route');
  18.         /** @var Letter $letter */
  19.         $letter $request->attributes->get('data');
  20.         if (!$letter->getEnvelopeFrontPath() && !$letter->getEnvelopeFrontPathAWS() && !$envelopeFrontFile && self::POST_ROUTE_NAME === $route) {
  21.             throw new BadRequestHttpException('"envelopeFrontFile" is required');
  22.         }
  23.         $letter
  24.             ->setEnvelopeFrontFile($envelopeFrontFile)
  25.             ->setEnvelopeBackFile($envelopeBackFile)
  26.             ->setContentFile($contentFile);
  27.         if ($letterSignatureFile) {
  28.             $letterSignature $letter->getLetterSignature() ?? new LetterSignature();
  29.             $letterSignature->setSignatureFile($letterSignatureFile);
  30.             $letter->setLetterSignature($letterSignature);
  31.         }
  32.         return $letter;
  33.     }
  34. }