src/Controller/JobsController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Carbon\Carbon;
  4. use Pimcore\Controller\FrontendController;
  5. use Pimcore\Model\Asset;
  6. use Pimcore\Model\DataObject\Job;
  7. use Pimcore\Model\Document\Page;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  11. class JobsController extends FrontendController
  12. {
  13.     /**
  14.      * @Template
  15.      *
  16.      * @param Request $request
  17.      *
  18.      * @return array
  19.      */
  20.     public function overviewAction(Request $request)
  21.     {
  22.         $now Carbon::now()->timestamp;
  23.         $jobs Job::getList()
  24.             ->setCondition('date <= ? AND (closeDate >= ? OR closeDate IS NULL)', [$now$now])
  25.             ->setOrderKey(['date''o_id'])
  26.             ->setOrder('DESC')->getObjects();
  27.         $output = [];
  28.         foreach ($jobs as $j) {
  29.             $output[self::getSlug($j->getTitle())] = $j;
  30.         }
  31. //        dd($output);
  32.         return ['headerImages' => $this->loadHeader(), 'jobs' => $output];
  33.     }
  34.     /**
  35.      * @Template
  36.      *
  37.      * @param Request $request
  38.      *
  39.      * @return array
  40.      */
  41.     public function detailAction(Request $request): array
  42.     {
  43.         $job Job::getById($request->get('id'));
  44.         $page Page::getByPath($request->get('prefix'));
  45.         $this->document->setTitle($job->getTitle());
  46.         $this->document->setProperty('hoursPerWeek'"string"$job->getHoursPerWeek());
  47.         $this->document->setProperty('subTitle'"string"$job->getSubTitle());
  48.         $this->document->setProperty('headerImage'"asset"$job->getImage());
  49.         if ($job && $job->isPublished()) {
  50.             return ['headerImages' => $this->loadHeader(), 'document_id' => $page->getId(), 'job' => $job];
  51.         } else {
  52.             throw new NotFoundHttpException();
  53.         }
  54.     }
  55.     /**
  56.      * @param $title
  57.      * @return string
  58.      */
  59.     private static function getSlug($title)
  60.     {
  61.         return str_replace(' ''-'preg_replace("/[^a-z0-9 ]/"''strtolower($title)));
  62.     }
  63.     private function loadHeader(): Asset\Listing
  64.     {
  65.         $imageList Asset::getList();
  66.         $imageList->setCondition("parentId = ?"2);
  67.         $imageList->setOrderKey("RAND()"false);
  68.         return $imageList;
  69.     }
  70. }