src/Service/Content/CategoryService.php line 99

Open in your IDE?
  1. <?php
  2. namespace App\Service\Content;
  3. use App\Entity\Category;
  4. use App\Entity\CategoryGroup;
  5. use App\Repository\CategoryRepository;
  6. use App\Response\EntityRemoved;
  7. use App\Service\AbstractService;
  8. use App\Service\Media\FileUploader\CategoryImageUploader;
  9. use Symfony\Component\HttpFoundation\FileBag;
  10. use Symfony\Component\HttpFoundation\ParameterBag;
  11. class CategoryService extends AbstractService
  12. {
  13.     /**
  14.      * @var CategoryRepository
  15.      */
  16.     protected $repo;
  17.     /**
  18.      * @var CategoryImageUploader
  19.      */
  20.     protected $fileUploader;
  21.     /**
  22.      * CategoryService constructor.
  23.      */
  24.     public function __construct(CategoryRepository $repositoryCategoryImageUploader $uploader)
  25.     {
  26.         parent::__construct($repository);
  27.         $this->setFileUploader($uploader);
  28.     }
  29.     public function getFileUploader(): CategoryImageUploader
  30.     {
  31.         return $this->fileUploader;
  32.     }
  33.     /**
  34.      * @return $this
  35.      */
  36.     public function setFileUploader(CategoryImageUploader $fileUploader): self
  37.     {
  38.         $this->fileUploader $fileUploader;
  39.         return $this;
  40.     }
  41.     public function createCategoryForGroup(CategoryGroup $group): Category
  42.     {
  43.         $entity = new Category();
  44.         $entity->setGroup($group);
  45.         return $entity;
  46.     }
  47.     public function applyValuesToEntity(ParameterBag $bagFileBag $filesCategory $entity): Category
  48.     {
  49.         if ($bag->has('group') && $bag->get('group') instanceof CategoryGroup) {
  50.             $entity->setGroup($bag->get('group'));
  51.         }
  52.         if ($bag->has('imageset_slug')) {
  53.             $entity->setImagesetSlug($bag->get('imageset_slug'));
  54.         }
  55.         if ($bag->has('video_slug')) {
  56.             $entity->setVideoSlug($bag->get('video_slug'));
  57.         }
  58.         if ($bag->has('name')) {
  59.             $entity->setName($bag->get('name'));
  60.         }
  61.         if ($bag->has('sorting')) {
  62.             $entity->setSorting($bag->getInt('sorting'));
  63.         }
  64.         if ($files->has('image')) {
  65.             $uploader $this->getFileUploader();
  66.             $filename $uploader->upload($files->get('image'));
  67.             $entity->setFilename($filename);
  68.         }
  69.         return $entity;
  70.     }
  71.     public function getCategory(int $id): ?Category
  72.     {
  73.         /**
  74.          * @var $entity Category
  75.          */
  76.         $entity $this->getRepository()->find($id);
  77.         return $entity;
  78.     }
  79.     public function findBySlug(string $slug): ?Category
  80.     {
  81.         $qb $this->repo->findBySlugQueryBuilder($slug);
  82.         $qb->setMaxResults(1);
  83.         $result $qb->getQuery()->getResult();
  84.         if (count($result)) {
  85.             return $result[0];
  86.         }
  87.         return null;
  88.     }
  89.     public function deleteCategory(Category $entity): EntityRemoved
  90.     {
  91.         if ($filename $entity->getFilename()) {
  92.             // delete image also
  93.             $path $this->getFileUploader()->getTargetDirectory();
  94.             if (file_exists($path.'/'.$filename)) {
  95.                 unlink($path.'/'.$filename);
  96.             }
  97.         }
  98.         return $this->deleteEntity($entity->getId());
  99.     }
  100. }