src/DTO/Program/ProgramMapper.php line 41

Open in your IDE?
  1. <?php
  2. namespace App\DTO\Program;
  3. use App\Entity\Program;
  4. use AutoMapperPlus\AutoMapperPlusBundle\AutoMapperConfiguratorInterface;
  5. use AutoMapperPlus\Configuration\AutoMapperConfigInterface;
  6. use App\Service\BaseService;
  7. class ProgramMapper extends BaseService implements AutoMapperConfiguratorInterface
  8. {
  9.     public function configure(AutoMapperConfigInterface $config): void
  10.     {
  11.         $this->autoMapper->getConfiguration()->registerMapping('App\Entity\Program''App\DTO\Program\ProgramOutput')
  12.             ->forMember('brochure', function (\App\Entity\Program $program) {
  13.                 if (!$program->getBrochure()) return null;
  14.                 return $this->uploadsStorage->publicUrl($program->getBrochure()->getPath());
  15.             })
  16.             ->forMember('media', function (\App\Entity\Program $program) {
  17.                 if (!$program->getMedia()) return null;
  18.                 return $this->uploadsStorage->publicUrl($program->getMedia()->getPath());
  19.             })
  20.             ->forMember('campuses', function (\App\Entity\Program $program) {
  21.                 $campuses $program->getCampuses();
  22.                 if (!$campuses) return null;
  23.                 $result = [];
  24.                 foreach ($campuses as $campus) {
  25.                     $result[] = [
  26.                         'id'   => $campus->getId(),
  27.                         'name' => $campus->getName()
  28.                     ];
  29.                 }
  30.                 return $result;
  31.             })
  32.             ->forMember('cursus', function (\App\Entity\Program $program) {
  33.                 $cursus $program->getCursus();
  34.                 if (!$cursus) return null;
  35.                 return $this->qcmService->autoMapper->mapMultiple($cursus'App\DTO\Cursus\CursusOutput');
  36.             })
  37.             ->forMember('school', function (\App\Entity\Program $program) {
  38.                 $school $program->getSchool();
  39.                 if (!$school) return null;
  40.                 return [
  41.                     'id'   => $program->getSchool(),
  42.                     'name' => Program::SCHOOLS[$program->getSchool()]
  43.                 ];
  44.             })
  45.             ;
  46.     }
  47. }