src/Service/JobCandidateService.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use App\Repository\JobCandidateRepository;
  4. use Symfony\Contracts\Translation\TranslatorInterface;
  5. use Symfony\Component\HttpFoundation\File\UploadedFile;
  6. class JobCandidateService extends BaseService
  7. {
  8.     /**
  9.      * @param JobCandidateRepository $repository
  10.      */
  11.     public function __construct(
  12.         JobCandidateRepository $repository,
  13.         BaseService $baseService,
  14.         TranslatorInterface $translator
  15.     ) {
  16.         $this->reflectFromParent($baseService);
  17.         $this->repository = $repository;
  18.         $this->translator = $translator;
  19.     }
  20.     public function listStatusCandidate()
  21.     {
  22.         return [
  23.             [
  24.                 'id' => 1,
  25.                 'name' => $this->translator->trans('canditate.status_1')
  26.             ],
  27.             [
  28.                 'id' => 2,
  29.                 'name' => $this->translator->trans('canditate.status_2')
  30.             ],
  31.             [
  32.                 'id' => 3,
  33.                 'name' => $this->translator->trans('canditate.status_3')
  34.             ]
  35.         ];
  36.     }
  37.     public function uploadFile(UploadedFile $fileUpload, $folder)
  38.     {
  39.         $newMedia = $this->mediaService->uploadFile($fileUpload, $folder);
  40.         return $newMedia['path'];
  41.     }
  42.     public function removeFileCv($entity)
  43.     {
  44.         if ($entity->getFileCv()) {
  45.             $this->mediaService->deleteFile($entity->getFileCv());
  46.         }
  47.         $entity->setFileCv(null);
  48.         $this->entityManager->flush();
  49.         return;
  50.     }
  51.     public function removeFileCover($entity)
  52.     {
  53.         if ($entity->getFileCover()) {
  54.             $this->mediaService->deleteFile($entity->getFileCover());
  55.         }
  56.         $entity->setFileCover(null);
  57.         $this->entityManager->flush();
  58.         return;
  59.     }
  60.     public function addEntity($request)
  61.     {
  62.         $input = [];
  63.         // Upload file cv
  64.         $fileCv = $request->files->get('file_cv');
  65.         if ($fileCv) {
  66.             $input['fileCv'] = $this->uploadFile($fileCv, $this->container->getParameter('dir.offer_cv'));
  67.             $request->files->remove('file_cv');
  68.         }
  69.         $fileCover = $request->files->get('file_cover');
  70.         if ($fileCover) {
  71.             $input['fileCover'] = $this->uploadFile($fileCover, $this->container->getParameter('dir.offer_cover'));
  72.             $request->files->remove('file_cover');
  73.         }
  74.         $entity = $this->add($request, $input, null, 'ENTITY', false, [], true);
  75.         if ($entity) {
  76.             $this->sendMailJobCandidate($this->autoMapper->map($entity, 'App\DTO\JobCandidate\JobCandidateOutput'));
  77.         }
  78.         return $this->autoMapper->map($entity, 'App\DTO\JobCandidate\JobCandidateOutput');
  79.     }
  80.     public function updateEntity($request)
  81.     {
  82.         $input = [];
  83.         $entity = $this->get($request->get('id'));
  84.         // Remove file cv
  85.         if ($request->get('removeFileCv')) {
  86.             $this->removeFileCv($entity);
  87.         }
  88.         // Upload file cv
  89.         $fileCv = $request->files->get('file_cv');
  90.         if ($fileCv) {
  91.             $input['fileCv'] = $this->uploadFile($fileCv, $this->container->getParameter('dir.offer_cv'));
  92.             $request->files->remove('file_cv');
  93.         }
  94.         // Remove file Cover
  95.         if ($request->get('removeFileCover')) {
  96.             $this->removeFileCover($entity);
  97.         }
  98.         // Upload file Cover
  99.         $fileCover = $request->files->get('file_cover');
  100.         if ($fileCover) {
  101.             $input['fileCover'] = $this->uploadFile($fileCover, $this->container->getParameter('dir.offer_cover'));
  102.             $request->files->remove('file_cover');
  103.         }
  104.         $entity = $this->update($entity, $request, $input, null, 'ENTITY', false, true);
  105.         return $this->autoMapper->map($entity, 'App\DTO\JobCandidate\JobCandidateOutput');
  106.     }
  107.     public function deleteEntity($id)
  108.     {
  109.         $entity = $this->get($id);
  110.         $this->delete($entity);
  111.         if ($entity->getFileCv()) {
  112.             $this->mediaService->deleteFile($entity->getFileCv());
  113.         }
  114.         if ($entity->getFileCover()) {
  115.             $this->mediaService->deleteFile($entity->getFileCover());
  116.         } 
  117.         return true;
  118.     }
  119.     public function sendMailJobCandidate($candidate)
  120.     {
  121.         $subjectMail = $this->translator->trans(
  122.             'job.mail.title',
  123.             [
  124.                 '%offerName%' => $candidate->offer['companyName']
  125.             ]
  126.         );
  127.         $bodyMail = $this->container->get('twig')->render('email/candidate/candidate.html.twig', [
  128.             'candidate' => $candidate
  129.         ]);
  130.         $recipientsString = $this->container->getParameter('mail.contact.recipients');
  131.         $this->sendMail(explode(",", $recipientsString), $subjectMail, $bodyMail);
  132.     }
  133. }