소스 검색

add the File::folder property

Olivier Massot 5 달 전
부모
커밋
fae56a55e1
4개의 변경된 파일52개의 추가작업 그리고 3개의 파일을 삭제
  1. 19 0
      src/Entity/Core/File.php
  2. 20 0
      src/Enum/Core/FileFolderEnum.php
  3. 6 2
      src/Service/File/FileManager.php
  4. 7 1
      src/Service/File/Storage/LocalStorage.php

+ 19 - 0
src/Entity/Core/File.php

@@ -24,6 +24,7 @@ use App\Entity\Organization\Organization;
 use App\Entity\Organization\Parameters;
 use App\Entity\Person\Person;
 use App\Enum\Core\FileHostEnum;
+use App\Enum\Core\FileFolderEnum;
 use App\Enum\Core\FileStatusEnum;
 use App\Enum\Core\FileTypeEnum;
 use App\Enum\Core\FileVisibilityEnum;
@@ -168,6 +169,12 @@ class File
     #[ORM\Column(length: 5, enumType: FileHostEnum::class, options: ['default' => FileHostEnum::AP2I])]
     private FileHostEnum $host = FileHostEnum::AP2I;
 
+    /**
+     * Dossier dans lequel le fichier est stocké, conçu en prévision de la gestion documentaire.
+     */
+    #[ORM\Column(length: 20, enumType: FileFolderEnum::class, options: ['default' => FileFolderEnum::UNRATED], nullable: true)]
+    private ?FileFolderEnum $folder = FileFolderEnum::UNRATED;
+
     //    #[ORM\Column]
     //    private ?int $eventReport_id;
 
@@ -515,6 +522,18 @@ class File
         return $this;
     }
 
+    public function getFolder(): ?FileFolderEnum
+    {
+        return $this->folder;
+    }
+
+    public function setFolder(?FileFolderEnum $folder): self
+    {
+        $this->folder = $folder;
+
+        return $this;
+    }
+
     public function getOrganizationLogos(): Collection
     {
         return $this->organizationLogos;

+ 20 - 0
src/Enum/Core/FileFolderEnum.php

@@ -0,0 +1,20 @@
+<?php
+
+declare(strict_types=1);
+
+namespace App\Enum\Core;
+
+use App\Enum\EnumMethodsTrait;
+
+/**
+ * Type of folder for document management.
+ */
+enum FileFolderEnum: string
+{
+    use EnumMethodsTrait;
+
+    case DOCUMENTS = 'DOCUMENTS';
+    case IMAGES = 'IMAGES';
+    case PREVIEW = 'PREVIEW';
+    case UNRATED = 'UNRATED';
+}

+ 6 - 2
src/Service/File/FileManager.php

@@ -11,6 +11,7 @@ use App\Entity\Access\Access;
 use App\Entity\Core\File;
 use App\Entity\Organization\Organization;
 use App\Entity\Person\Person;
+use App\Enum\Core\FileFolderEnum;
 use App\Enum\Core\FileTypeEnum;
 use App\Enum\Core\FileVisibilityEnum;
 use App\Repository\Core\FileRepository;
@@ -82,6 +83,7 @@ class FileManager
      * @param bool                       $isTemporary Is it a temporary file that can be deleted after some time
      * @param string|null                $mimeType    Mimetype of the file, if not provided, the method will try to guess it from its file name's extension
      * @param bool                       $flushFile   Should the newly created file be flushed after having been persisted?
+     * @param FileFolderEnum|null        $folder      The folder where the file is stored, designed for document management
      */
     public function prepareFile(
         Organization|Access|Person $owner,
@@ -92,10 +94,11 @@ class FileManager
         FileVisibilityEnum $visibility = FileVisibilityEnum::NOBODY,
         ?string $mimeType = null,
         bool $flushFile = true,
+        ?FileFolderEnum $folder = FileFolderEnum::UNRATED,
     ): File {
         return $this
             ->localStorage
-            ->prepareFile($owner, $filename, $type, $createdBy, $isTemporary, $visibility, $mimeType, $flushFile);
+            ->prepareFile($owner, $filename, $type, $createdBy, $isTemporary, $visibility, $mimeType, $flushFile, $folder);
     }
 
     /**
@@ -123,10 +126,11 @@ class FileManager
         FileVisibilityEnum $visibility = FileVisibilityEnum::NOBODY,
         ?string $mimeType = null,
         ?string $config = null,
+        ?FileFolderEnum $folder = FileFolderEnum::UNRATED,
     ): File {
         return $this
             ->localStorage
-            ->makeFile($owner, $filename, $type, $content, $author, $isTemporary, $visibility, $mimeType);
+            ->makeFile($owner, $filename, $type, $content, $author, $isTemporary, $visibility, $mimeType, $config, $folder);
     }
 
     /**

+ 7 - 1
src/Service/File/Storage/LocalStorage.php

@@ -9,6 +9,7 @@ use App\Entity\Core\File;
 use App\Entity\Organization\Organization;
 use App\Entity\Person\Person;
 use App\Enum\Core\FileHostEnum;
+use App\Enum\Core\FileFolderEnum;
 use App\Enum\Core\FileSizeEnum;
 use App\Enum\Core\FileStatusEnum;
 use App\Enum\Core\FileTypeEnum;
@@ -148,6 +149,7 @@ class LocalStorage implements FileStorageInterface
      * @param bool                       $isTemporary Is it a temporary file that can be deleted after some time
      * @param string|null                $mimeType    Mimetype of the file, if not provided, the method will try to guess it from its file name's extension
      * @param bool                       $flushFile   Should the newly created file be flushed after having been persisted?
+     * @param FileFolderEnum|null        $folder      The folder where the file is stored, designed for document management
      */
     public function prepareFile(
         Organization|Access|Person $owner,
@@ -158,6 +160,7 @@ class LocalStorage implements FileStorageInterface
         FileVisibilityEnum $visibility = FileVisibilityEnum::NOBODY,
         ?string $mimeType = null,
         bool $flushFile = true,
+        ?FileFolderEnum $folder = FileFolderEnum::UNRATED,
     ): File {
         [$organization, $person] = $this->getOrganizationAndPersonFromOwner($owner);
 
@@ -172,6 +175,7 @@ class LocalStorage implements FileStorageInterface
             ->setMimeType($mimeType ?? $this->fileUtils->guessMimeTypeFromFilename($filename))
             ->setCreateDate(new \DateTime())
             ->setCreatedBy($createdBy->getId())
+            ->setFolder($folder)
             ->setStatus(FileStatusEnum::PENDING);
 
         $this->entityManager->persist($file);
@@ -260,6 +264,7 @@ class LocalStorage implements FileStorageInterface
         FileVisibilityEnum $visibility = FileVisibilityEnum::NOBODY,
         ?string $mimeType = null,
         ?string $config = null,
+        ?FileFolderEnum $folder = FileFolderEnum::UNRATED,
     ): File {
         $file = $this->prepareFile(
             $owner,
@@ -269,7 +274,8 @@ class LocalStorage implements FileStorageInterface
             $isTemporary,
             $visibility,
             $mimeType,
-            false
+            false,
+            $folder,
         );
 
         if (!empty($config)) {