src/Service/Visit/File/FileService.php line 72

Open in your IDE?
  1. <?php
  2. namespace App\Service\Visit\File;
  3. use App\Service\Helper\StringHelper;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  6. use Symfony\Component\Finder\Finder;
  7. use Symfony\Component\HttpFoundation\File\UploadedFile;
  8. class FileService
  9. {
  10.     public function __construct(
  11.         private ParameterBagInterface $parameterBag,
  12.         private StringHelper $stringHelper,
  13.         private LoggerInterface $logger
  14.     ) {
  15.     }
  16.     public function upload(UploadedFile $uploadedFileint $companyIdint $visitIdstring $directoryParam 'visit_uploads_directory'): ?bool
  17.     {
  18.         $originalFilename $uploadedFile->getClientOriginalName();
  19.         $directoryParam $this->parameterBag->get($directoryParam) . $companyId;
  20.         if (!is_dir($directoryParam)) {
  21.             mkdir($directoryParam0775true);
  22.         }
  23.         $directoryParam $directoryParam '/' $visitId;
  24.         if (!is_dir($directoryParam)) {
  25.             mkdir($directoryParam0775true);
  26.         }
  27.         try {
  28.             $uploadedFile->move(
  29.                 $directoryParam,
  30.                 $originalFilename
  31.             );
  32.         } catch (FileException $e) {
  33.             return false;
  34.         }
  35.         return true;
  36.     }
  37.     public function isImage(UploadedFile $uploadedFile): bool
  38.     {
  39.         return in_array($uploadedFile->guessExtension(), [
  40.             'jpeg',
  41.             'jpg',
  42.             'png',
  43.            'bmp',
  44.             'webp',
  45.         ]);
  46.     }
  47.     public function isAudio(UploadedFile $uploadedFile): bool
  48.     {
  49.         return in_array($uploadedFile->getMimeType(), [
  50.             'audio/midi'' audio/mpeg''audio/webm''audio/ogg''audio/wav',
  51.         ]);
  52.     }
  53.     public function isVideo(UploadedFile $uploadedFile): bool
  54.     {
  55.         return in_array($uploadedFile->getMimeType(), [
  56.             'video/webm''video/ogg',
  57.         ]);
  58.     }
  59.     public function getFileFromPathInParams(string $directoryParam 'visit_uploads_directory'int $companyIdint $visitId): array
  60.     {
  61.         $finder = new Finder();
  62.         $finder->files()->in($this->parameterBag->get($directoryParam));
  63.         $result = [];
  64.         /*if ($sortModifiedTime) {
  65.             $finder->sortByModifiedTime();
  66.         }*/
  67.         foreach ($finder as $file) {
  68.             /* @var File */
  69.             $result[] = [
  70.                 'time' => date('Y-m-d H:i:s'$file->getMTime()),
  71.                 'relativePath' => $file->getRelativePathname(),
  72.             ];
  73.         }
  74.         return array_reverse($result);
  75.     }
  76. }