src/Service/Content/CategoryGroupService.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Service\Content;
  3. use App\Entity\CategoryGroup;
  4. use App\Repository\CategoryGroupRepository;
  5. use App\Response\EntityRemoved;
  6. use App\Service\AbstractService;
  7. use App\Service\Media\FileUploader\CategoryGroupImageUploader;
  8. use Doctrine\ORM\Tools\Pagination\Paginator;
  9. use Symfony\Component\HttpFoundation\FileBag;
  10. use Symfony\Component\HttpFoundation\ParameterBag;
  11. class CategoryGroupService extends AbstractService
  12. {
  13.     protected CategoryGroupImageUploader $fileUploader;
  14.     /**
  15.      * CategoryGroupService constructor.
  16.      */
  17.     public function __construct(CategoryGroupRepository $repositoryCategoryGroupImageUploader $uploader)
  18.     {
  19.         parent::__construct($repository);
  20.         $this->setFileUploader($uploader);
  21.     }
  22.     /**
  23.      * @return $this
  24.      */
  25.     public function setFileUploader(CategoryGroupImageUploader $uploader): self
  26.     {
  27.         $this->fileUploader $uploader;
  28.         return $this;
  29.     }
  30.     public function getFileUploader(): CategoryGroupImageUploader
  31.     {
  32.         return $this->fileUploader;
  33.     }
  34.     public function findCategoryGroupBySlug(string $slug): ?CategoryGroup
  35.     {
  36.         return $this->repo->findOneBy([
  37.             'slug' => $slug,
  38.         ]);
  39.     }
  40.     public function applyValuesToEntity(ParameterBag $bagFileBag $filesCategoryGroup $entity): CategoryGroup
  41.     {
  42.         if ($bag->has('name')) {
  43.             $entity->setName($bag->get('name'));
  44.         }
  45.         if ($bag->has('slug')) {
  46.             $entity->setSlug($bag->get('slug'));
  47.         }
  48.         if ($bag->has('sorting')) {
  49.             $entity->setSorting($bag->getInt('sorting'));
  50.         }
  51.         if ($files->has('image')) {
  52.             $uploader $this->getFileUploader();
  53.             $filename $uploader->upload($files->get('image'));
  54.             $entity->setFilename($filename);
  55.         }
  56.         return $entity;
  57.     }
  58.     /**
  59.      * @throws \Doctrine\ORM\ORMException
  60.      * @throws \Doctrine\ORM\OptimisticLockException
  61.      */
  62.     public function storeCategoryGroup(CategoryGroup $entity): CategoryGroup
  63.     {
  64.         return $this->storeEntity($entity);
  65.     }
  66.     public function getTree(): Paginator
  67.     {
  68.         $qb $this->getRepository()->getTreeQueryBuilder();
  69.         return new Paginator($qb->getQuery());
  70.     }
  71.     public function deleteCategoryGroup(CategoryGroup $entity): EntityRemoved
  72.     {
  73.         if ($filename $entity->getFilename()) {
  74.             // delete image also
  75.             $path $this->getFileUploader()->getTargetDirectory();
  76.             if (file_exists($path.'/'.$filename)) {
  77.                 unlink($path.'/'.$filename);
  78.             }
  79.         }
  80.         return $this->deleteEntity($entity->getId());
  81.     }
  82. }