src/Controller/JobController.php line 85

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Model\DataObject\Business;
  4. use Exception;
  5. use Pimcore\Controller\FrontendController;
  6. use Pimcore\Mail;
  7. use Pimcore\Model\DataObject\Job;
  8. use Pimcore\Model\DataObject\Language;
  9. use Pimcore\Model\DataObject\News;
  10. use Pimcore\Model\DataObject\Services;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Validator\Constraints as Assert;
  15. use Symfony\Component\Validator\Validator\ValidatorInterface;
  16. class JobController extends FrontendController
  17. {
  18.     /**
  19.      * @Template
  20.      * @param Request $request
  21.      * @return array
  22.      * @route("/{_locale}/jobs/{id}", name="jobDetail",methods={"GET"})
  23.      */
  24.     public function detailAction(Request $request)
  25.     {
  26.         $job Job::getById($request->get('id'));
  27.         if(!$job){
  28.             throw new Exception("Job not found",404);
  29.         }
  30.         $refKey "jobs";
  31.         $refId 2;
  32.         $nonOwnerRelations $job->getRelationData($refKeyfalse$refId)[0];
  33.         $bus Business::getById($nonOwnerRelations["id"]);
  34.         return ["job"=>$job"business" => $bus];
  35.     }
  36.     /**
  37.      * @Template
  38.      * @param Request $request
  39.      * @return array
  40.      * @route("/{_locale}/jobs/{id}", name="jobApply",methods={"POST"})
  41.      */
  42.     public function applyAction(Request $requestValidatorInterface $emailValidator)
  43.     {
  44.         if($request->get('email') && $request->get('message') && $request->get('phone') && $request->get('name')){
  45.             $emailConstraint = new Assert\Email();
  46.             $errors $emailValidator->validate($request->get('email'), $emailConstraint);
  47.             if (count($errors) > 0) {
  48.                 return ["error" => $errors[0]->getMessage()];
  49.             }
  50.             $job Job::getById($request->get('id'));
  51.             if(!$job){
  52.                 throw new Exception("Job not found",404);
  53.             }
  54.             $mailClient = new Mail();
  55.             $mailClient->setDocument("/".$request->getLocale()."/emails/job-apply-client");
  56.             $mailClient->to($request->get('email'));
  57.             $mailClient->setParams($request->request->all());
  58.             $mailClient->replyTo($job->getEmail());
  59.             $mailClient->send();
  60.             $mailBusiness = new Mail();
  61.             $mailBusiness->setDocument("/".$request->getLocale()."/emails/job-apply-business");
  62.             $mailBusiness->to($job->getEmail());
  63.             $mailBusiness->setParams($request->request->all());
  64.             $mailBusiness->replyTo($request->get('email'));
  65.             $mailBusiness->send();
  66.             return [];
  67.         }
  68.         return [];
  69.     }
  70.     /**
  71.      * @Template
  72.      * @param Request $request
  73.      * @return array
  74.      */
  75.     public function listAction(Request $request)
  76.     {
  77.         $refKey "jobs";
  78.         $refId 2;
  79.         $jobs = new Job\Listing();
  80.         $jobs $jobs->load();
  81.         $businesses = [];
  82.         $jobreturn = [];
  83.         foreach($jobs as $job){
  84.             $nonOwnerRelations $job->getRelationData($refKeyfalse$refId);
  85.             if($nonOwnerRelations){
  86.                 $nonOwnerRelations $nonOwnerRelations[0];
  87.                 $jobreturn[] = $job;
  88.             }else{
  89.                 continue;
  90.             }
  91.             $bus Business::getById($nonOwnerRelations["id"]);
  92.             $businesses[] = $bus;
  93.         }
  94.         return ["jobs"=>$jobreturn"businesses" => $businesses];
  95.         //TODO paginate
  96.     }
  97. }