src/Resolver/Internal/JobMarketResolver.php line 785

Open in your IDE?
  1. <?php
  2. namespace App\Resolver\Internal;
  3. use DateTime;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Overblog\GraphQLBundle\Definition\Resolver\MutationInterface;
  6. use Overblog\GraphQLBundle\Definition\Resolver\QueryInterface;
  7. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  8. use App\BackendBundle\Helper\ContactHelper;
  9. use App\BackendBundle\Helper\CompanyHelper;
  10. use App\BackendBundle\Helper\JobHelper;
  11. use App\BackendBundle\Helper\JobMarketHelper;
  12. use App\BackendBundle\Helper\GraphQlCompanyHelper;
  13. use App\BackendBundle\Helper\GraphQlJobMarketHelper;
  14. use App\BackendBundle\Helper\UserHelper;
  15. use App\BackendBundle\Model\GraphQL\JobMarket as JobMarketGQL;
  16. use App\BackendBundle\Model\GraphQL\Status as StatusGQL;
  17. use App\Entity\Address;
  18. use App\Entity\CompanyLocation;
  19. use App\Entity\Contact;
  20. use App\Entity\ContactGalleryEntry;
  21. use App\Entity\Job;
  22. use App\Entity\JobMarket;
  23. use App\Entity\JobMarketState;
  24. use App\Entity\User;
  25. class JobMarketResolver extends CommonResolver implements MutationInterfaceQueryInterface {
  26.     private CompanyHelper $companyHelper;
  27.     private ContactHelper $contactHelper;
  28.     private GraphQlCompanyHelper $graphqlCompanyHelper;
  29.     private GraphQlJobMarketHelper $graphqlJobMarketHelper;
  30.     private JobHelper $jobHelper;
  31.     private JobMarketHelper $jobMarketHelper;
  32.     private UserHelper $userHelper;
  33.     public function __construct(EntityManagerInterface $emContactHelper $contactHelperCompanyHelper $companyHelper,
  34.             GraphQlCompanyHelper $graphqlCompanyHelperGraphQlJobMarketHelper $graphqlJobMarketHelper,
  35.             JobHelper $jobHelperJobMarketHelper $jobMarketHelperTokenStorageInterface $tokenStorageUserHelper $userHelper) {
  36.         parent::__construct($em$tokenStorage);
  37.         $this->companyHelper $companyHelper;
  38.         $this->contactHelper $contactHelper;
  39.         $this->graphqlCompanyHelper $graphqlCompanyHelper;
  40.         $this->graphqlJobMarketHelper $graphqlJobMarketHelper;
  41.         $this->jobHelper $jobHelper;
  42.         $this->jobMarketHelper $jobMarketHelper;
  43.         $this->userHelper $userHelper;
  44.     }
  45.     public function addJobMarket($jobMarketData) {
  46.         $jobMarketGQL = new JobMarketGQL();
  47.         /* @var $user User */
  48.         $user $this->getUser();
  49.         if (empty($user)) {
  50.             $jobMarketGQL->getStatus()->setErrorMessage("User not found");
  51.             return $jobMarketGQL;
  52.         }
  53.         $jobMarket $this->createJobMarketByData($jobMarketGQL$user$jobMarketData);
  54.         if (empty($jobMarket)) {
  55.             $jobMarketGQL->getStatus()->setErrorMessage("Unable to create job market");
  56.             return $jobMarketGQL;
  57.         }
  58.         $resultJobMarketGQL $this->graphqlJobMarketHelper->prepareJobMarket($jobMarket);
  59.         return $resultJobMarketGQL;
  60.     }
  61.     public function createJobMarket() {
  62.         $jobMarketGQL = new JobMarketGQL();
  63.         /* @var $user User */
  64.         $user $this->getUser();
  65.         if (empty($user)) {
  66.             $jobMarketGQL->getStatus()->setErrorMessage("User not found");
  67.             return $jobMarketGQL;
  68.         }
  69.         $jobMarket $this->createJobMarketDefault($user);
  70.         if (empty($jobMarket)) {
  71.             $jobMarketGQL->getStatus()->setErrorMessage("Error creating job market");
  72.             return $jobMarketGQL;
  73.         }
  74.         $resultJobMarketGQL $this->graphqlJobMarketHelper->prepareJobMarket($jobMarket);
  75.         return $resultJobMarketGQL;
  76.     }
  77.     public function updateName($jobMarketID$name) {
  78.         $statusGQL = new StatusGQL();
  79.         /* @var $user User */
  80.         $user $this->getUser();
  81.         if (empty($user)) {
  82.             $statusGQL->setErrorMessage("User not found");
  83.             return $statusGQL;
  84.         }
  85.         /* @var $jobMarket JobMarket */
  86.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  87.         if (empty($jobMarket)) {
  88.             $statusGQL->setErrorMessage("Job offer not found");
  89.             return $statusGQL;
  90.         }
  91.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  92.         if (!$isAllowed) {
  93.             return $statusGQL;
  94.         }
  95.         $jobMarket->setName($name);
  96.         $this->em->persist($jobMarket);
  97.         $this->em->flush();
  98.         return $statusGQL;
  99.     }
  100.     public function updateNumberOfPositions($jobMarketID$numberOfPositions) {
  101.         $statusGQL = new StatusGQL();
  102.         /* @var $user User */
  103.         $user $this->getUser();
  104.         if (empty($user)) {
  105.             $statusGQL->setErrorMessage("User not found");
  106.             return $statusGQL;
  107.         }
  108.         /* @var $jobMarket JobMarket */
  109.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  110.         if (empty($jobMarket)) {
  111.             $statusGQL->setErrorMessage("Job offer not found");
  112.             return $statusGQL;
  113.         }
  114.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  115.         if (!$isAllowed) {
  116.             return $statusGQL;
  117.         }
  118.         $jobMarket->setNumberOfPositions($numberOfPositions);
  119.         $this->em->persist($jobMarket);
  120.         $this->em->flush();
  121.         return $statusGQL;
  122.     }
  123.     public function updateOpenClose($jobMarketID$strOpenDate$strClosedDate) {
  124.         $statusGQL = new StatusGQL();
  125.         /* @var $user User */
  126.         $user $this->getUser();
  127.         if (empty($user)) {
  128.             $statusGQL->setErrorMessage("User not found");
  129.             return $statusGQL;
  130.         }
  131.         /* @var $jobMarket JobMarket */
  132.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  133.         if (empty($jobMarket)) {
  134.             $statusGQL->setErrorMessage("Job offer not found");
  135.             return $statusGQL;
  136.         }
  137.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  138.         if (!$isAllowed) {
  139.             return $statusGQL;
  140.         }
  141.         try {
  142.             $openDate = new DateTime($strOpenDate);
  143.             $closedDate = new DateTime($strClosedDate);
  144.             $jobMarket->setOpenDate($openDate);
  145.             $jobMarket->setClosedDate($closedDate);
  146.         } catch (Exception $ex) {
  147.             $statusGQL->setErrorMessage("Error reading date time for openDate or closedDate");
  148.             return $statusGQL;
  149.         }
  150.         $this->em->persist($jobMarket);
  151.         $this->em->flush();
  152.         return $statusGQL;
  153.     }
  154.     public function updatePositionType($jobMarketID$strPositionType) {
  155.         $statusGQL = new StatusGQL();
  156.         /* @var $user User */
  157.         $user $this->getUser();
  158.         if (empty($user)) {
  159.             $statusGQL->setErrorMessage("User not found");
  160.             return $statusGQL;
  161.         }
  162.         /* @var $jobMarket JobMarket */
  163.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  164.         if (empty($jobMarket)) {
  165.             $statusGQL->setErrorMessage("Job offer not found");
  166.             return $statusGQL;
  167.         }
  168.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  169.         if (!$isAllowed) {
  170.             return $statusGQL;
  171.         }
  172.         $positionType $this->jobMarketHelper->getJobMarketPositionTypeByString($strPositionType);
  173.         $jobMarket->setJobMarketPositionType($positionType);
  174.         $this->em->persist($jobMarket);
  175.         $this->em->flush();
  176.         return $statusGQL;
  177.     }
  178.     public function updateAdditionalInfo($jobMarketID$additionalInfo) {
  179.         $statusGQL = new StatusGQL();
  180.         /* @var $user User */
  181.         $user $this->getUser();
  182.         if (empty($user)) {
  183.             $statusGQL->setErrorMessage("User not found");
  184.             return $statusGQL;
  185.         }
  186.         /* @var $jobMarket JobMarket */
  187.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  188.         if (empty($jobMarket)) {
  189.             $statusGQL->setErrorMessage("Job offer not found");
  190.             return $statusGQL;
  191.         }
  192.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  193.         if (!$isAllowed) {
  194.             return $statusGQL;
  195.         }
  196.         $jobMarket->setAdditionalInfo($additionalInfo);
  197.         $this->em->persist($jobMarket);
  198.         $this->em->flush();
  199.         return $statusGQL;
  200.     }
  201.     public function updateAddresses($jobMarketID$arrCompanyLocationIDs) {
  202.         $statusGQL = new StatusGQL();
  203.         /* @var $user User */
  204.         $user $this->getUser();
  205.         if (empty($user)) {
  206.             $statusGQL->setErrorMessage("User not found");
  207.             return $statusGQL;
  208.         }
  209.         /* @var $jobMarket JobMarket */
  210.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  211.         if (empty($jobMarket)) {
  212.             $statusGQL->setErrorMessage("Job offer not found");
  213.             return $statusGQL;
  214.         }
  215.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  216.         if (!$isAllowed) {
  217.             return $statusGQL;
  218.         }
  219.         if (empty($arrCompanyLocationIDs)) {
  220.             return $statusGQL;
  221.         }
  222.         $jobMarket->getAddresses()->clear();
  223.         foreach ($arrCompanyLocationIDs as $companyLocationID) {
  224.             /* @var $companyLocation CompanyLocation */
  225.             $companyLocation $this->companyHelper->getCompanyLocationById($companyLocationID);
  226.             if (empty($companyLocation)) {
  227.                 continue;
  228.             }
  229.             $address $companyLocation->getAddress();
  230.             if (empty($address)) {
  231.                 continue;
  232.             }
  233.             $jobMarket->addAddress($address);
  234.         }
  235.         $this->em->persist($jobMarket);
  236.         $this->em->flush();
  237.         return $statusGQL;
  238.     }
  239.     public function updateApplyType($jobMarketID$strApplyType) {
  240.         $statusGQL = new StatusGQL();
  241.         /* @var $user User */
  242.         $user $this->getUser();
  243.         if (empty($user)) {
  244.             $statusGQL->setErrorMessage("User not found");
  245.             return $statusGQL;
  246.         }
  247.         /* @var $jobMarket JobMarket */
  248.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  249.         if (empty($jobMarket)) {
  250.             $statusGQL->setErrorMessage("Job offer not found");
  251.             return $statusGQL;
  252.         }
  253.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  254.         if (!$isAllowed) {
  255.             return $statusGQL;
  256.         }
  257.         $applyType $this->jobMarketHelper->getJobMarketApplyTypeByString($strApplyType);
  258.         $jobMarket->setJobMarketApplyType($applyType);
  259.         $this->em->persist($jobMarket);
  260.         $this->em->flush();
  261.         return $statusGQL;
  262.     }
  263.     public function updateDescription($jobMarketID$description) {
  264.         $statusGQL = new StatusGQL();
  265.         /* @var $user User */
  266.         $user $this->getUser();
  267.         if (empty($user)) {
  268.             $statusGQL->setErrorMessage("User not found");
  269.             return $statusGQL;
  270.         }
  271.         /* @var $jobMarket JobMarket */
  272.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  273.         if (empty($jobMarket)) {
  274.             $statusGQL->setErrorMessage("Job offer not found");
  275.             return $statusGQL;
  276.         }
  277.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  278.         if (!$isAllowed) {
  279.             return $statusGQL;
  280.         }
  281.         $jobMarket->setDescription($description);
  282.         $this->em->persist($jobMarket);
  283.         $this->em->flush();
  284.         return $statusGQL;
  285.     }
  286.     public function updateDetails($jobMarketID$details) {
  287.         $statusGQL = new StatusGQL();
  288.         /* @var $user User */
  289.         $user $this->getUser();
  290.         if (empty($user)) {
  291.             $statusGQL->setErrorMessage("User not found");
  292.             return $statusGQL;
  293.         }
  294.         /* @var $jobMarket JobMarket */
  295.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  296.         if (empty($jobMarket)) {
  297.             $statusGQL->setErrorMessage("Job offer not found");
  298.             return $statusGQL;
  299.         }
  300.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  301.         if (!$isAllowed) {
  302.             return $statusGQL;
  303.         }
  304.         $jobMarket->setDetails($details);
  305.         $this->em->persist($jobMarket);
  306.         $this->em->flush();
  307.         return $statusGQL;
  308.     }
  309.     public function updateImage($jobMarketIDUploadedFile $image) {
  310.         $statusGQL = new StatusGQL();
  311.         /* @var $user User */
  312.         $user $this->getUser();
  313.         if (empty($user)) {
  314.             $statusGQL->setErrorMessage("User not found");
  315.             return $statusGQL;
  316.         }
  317.         /* @var $jobMarket JobMarket */
  318.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  319.         if (empty($jobMarket)) {
  320.             $statusGQL->setErrorMessage("Job offer not found");
  321.             return $statusGQL;
  322.         }
  323.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  324.         if (!$isAllowed) {
  325.             return $statusGQL;
  326.         }
  327.         $mediaImage $this->mediaHelper->saveImageByFile($image);
  328.         $jobMarket->setImage($mediaImage);
  329.         $this->em->persist($jobMarket);
  330.         $this->em->flush();
  331.         return $statusGQL;
  332.     }
  333.     public function updateJobs($jobMarketID$arrJobIDs) {
  334.         $statusGQL = new StatusGQL();
  335.         /* @var $user User */
  336.         $user $this->getUser();
  337.         if (empty($user)) {
  338.             $statusGQL->setErrorMessage("User not found");
  339.             return $statusGQL;
  340.         }
  341.         /* @var $jobMarket JobMarket */
  342.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  343.         if (empty($jobMarket)) {
  344.             $statusGQL->setErrorMessage("Job offer not found");
  345.             return $statusGQL;
  346.         }
  347.         if (empty($arrJobIDs)) {
  348.             return $statusGQL;
  349.         }
  350.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  351.         if (!$isAllowed) {
  352.             return $statusGQL;
  353.         }
  354.         $jobMarket->getJobs()->clear();
  355.         foreach ($arrJobIDs as $jobID) {
  356.             $job $this->jobHelper->getJobById($jobID);
  357.             if (empty($job)) {
  358.                 continue;
  359.             }
  360.             $jobMarket->addJob($job);
  361.         }
  362.         $this->em->persist($jobMarket);
  363.         $this->em->flush();
  364.         return $statusGQL;
  365.     }
  366.     public function updateRequirements($jobMarketID$requirements) {
  367.         $statusGQL = new StatusGQL();
  368.         /* @var $user User */
  369.         $user $this->getUser();
  370.         if (empty($user)) {
  371.             $statusGQL->setErrorMessage("User not found");
  372.             return $statusGQL;
  373.         }
  374.         /* @var $jobMarket JobMarket */
  375.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  376.         if (empty($jobMarket)) {
  377.             $statusGQL->setErrorMessage("Job offer not found");
  378.             return $statusGQL;
  379.         }
  380.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  381.         if (!$isAllowed) {
  382.             return $statusGQL;
  383.         }
  384.         $jobMarket->setRequirements($requirements);
  385.         $this->em->persist($jobMarket);
  386.         $this->em->flush();
  387.         return $statusGQL;
  388.     }
  389.     public function updateSalary($jobMarketID$salary) {
  390.         $statusGQL = new StatusGQL();
  391.         /* @var $user User */
  392.         $user $this->getUser();
  393.         if (empty($user)) {
  394.             $statusGQL->setErrorMessage("User not found");
  395.             return $statusGQL;
  396.         }
  397.         /* @var $jobMarket JobMarket */
  398.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  399.         if (empty($jobMarket)) {
  400.             $statusGQL->setErrorMessage("Job offer not found");
  401.             return $statusGQL;
  402.         }
  403.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  404.         if (!$isAllowed) {
  405.             return $statusGQL;
  406.         }
  407.         $jobMarket->setSalary($salary);
  408.         $this->em->persist($jobMarket);
  409.         $this->em->flush();
  410.         return $statusGQL;
  411.     }
  412.     public function updateStartDate($jobMarketID$strStartDate) {
  413.         $statusGQL = new StatusGQL();
  414.         /* @var $user User */
  415.         $user $this->getUser();
  416.         if (empty($user)) {
  417.             $statusGQL->setErrorMessage("User not found");
  418.             return $statusGQL;
  419.         }
  420.         /* @var $jobMarket JobMarket */
  421.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  422.         if (empty($jobMarket)) {
  423.             $statusGQL->setErrorMessage("Job offer not found");
  424.             return $statusGQL;
  425.         }
  426.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  427.         if (!$isAllowed) {
  428.             return $statusGQL;
  429.         }
  430.         try {
  431.             $startDate = new DateTime($strStartDate);
  432.             $jobMarket->setStartDate($startDate);
  433.         } catch (Exception $exc) {
  434.             $statusGQL->setErrorMessage("The start date cannot be read.");
  435.             return $statusGQL;
  436.         }
  437.         $this->em->persist($jobMarket);
  438.         $this->em->flush();
  439.         return $statusGQL;
  440.     }
  441.     public function updateStartType($jobMarketID$strStartType) {
  442.         $statusGQL = new StatusGQL();
  443.         /* @var $user User */
  444.         $user $this->getUser();
  445.         if (empty($user)) {
  446.             $statusGQL->setErrorMessage("User not found");
  447.             return $statusGQL;
  448.         }
  449.         /* @var $jobMarket JobMarket */
  450.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  451.         if (empty($jobMarket)) {
  452.             $statusGQL->setErrorMessage("Job offer not found");
  453.             return $statusGQL;
  454.         }
  455.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  456.         if (!$isAllowed) {
  457.             return $statusGQL;
  458.         }
  459.         $jobMarketStartType $this->graphqlJobMarketHelper->getStartTypeByString($strStartType);
  460.         if (empty($strStartType)) {
  461.             $statusGQL->setErrorMessage("Start Type not found");
  462.             return $statusGQL;
  463.         }
  464.         $jobMarket->setJobMarketStartType($jobMarketStartType);
  465.         $this->em->persist($jobMarket);
  466.         $this->em->flush();
  467.         return $statusGQL;
  468.     }
  469.     public function updateApplyUntil($jobMarketID$strApplyUntilDate) {
  470.         $statusGQL = new StatusGQL();
  471.         /* @var $user User */
  472.         $user $this->getUser();
  473.         if (empty($user)) {
  474.             $statusGQL->setErrorMessage("User not found");
  475.             return $statusGQL;
  476.         }
  477.         /* @var $jobMarket JobMarket */
  478.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  479.         if (empty($jobMarket)) {
  480.             $statusGQL->setErrorMessage("Job offer not found");
  481.             return $statusGQL;
  482.         }
  483.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  484.         if (!$isAllowed) {
  485.             return $statusGQL;
  486.         }
  487.         if (empty($strApplyUntilDate)) {
  488.             $jobMarket->setApplyUntil(null);
  489.             $this->em->persist($jobMarket);
  490.             $this->em->flush();
  491.             return $statusGQL;
  492.         }
  493.         try {
  494.             $applyUntil = new DateTime($strApplyUntilDate);
  495.             $jobMarket->setApplyUntil($applyUntil);
  496.         } catch (Exception $exc) {
  497.             $statusGQL->setErrorMessage("The start date cannot be read.");
  498.             return $statusGQL;
  499.         }
  500.         $this->em->persist($jobMarket);
  501.         $this->em->flush();
  502.         return $statusGQL;
  503.     }
  504.     public function updateState($jobMarketID$state) {
  505.         $statusGQL = new StatusGQL();
  506.         /* @var $user User */
  507.         $user $this->getUser();
  508.         if (empty($user)) {
  509.             $statusGQL->setErrorMessage("User not found");
  510.             return $statusGQL;
  511.         }
  512.         /* @var $jobMarket JobMarket */
  513.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  514.         if (empty($jobMarket)) {
  515.             $statusGQL->setErrorMessage("Job offer not found");
  516.             return $statusGQL;
  517.         }
  518.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  519.         if (!$isAllowed) {
  520.             return $statusGQL;
  521.         }
  522.         $jobMarketState $this->getJobMarketState($state);
  523.         if (empty($jobMarketState)) {
  524.             $statusGQL->setErrorMessage("State not found");
  525.             return $statusGQL;
  526.         }
  527.         $jobMarket->setJobMarketState($jobMarketState);
  528.         $this->em->persist($jobMarket);
  529.         $this->em->flush();
  530.         return $statusGQL;
  531.     }
  532.     public function updateUrl($jobMarketID$url) {
  533.         $statusGQL = new StatusGQL();
  534.         /* @var $user User */
  535.         $user $this->getUser();
  536.         if (empty($user)) {
  537.             $statusGQL->setErrorMessage("User not found");
  538.             return $statusGQL;
  539.         }
  540.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  541.         if (!$isAllowed) {
  542.             return $statusGQL;
  543.         }
  544.         /* @var $jobMarket JobMarket */
  545.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  546.         if (empty($jobMarket)) {
  547.             $statusGQL->setErrorMessage("Job offer not found");
  548.             return $statusGQL;
  549.         }
  550.         $jobMarket->setUrl($url);
  551.         $this->em->persist($jobMarket);
  552.         $this->em->flush();
  553.         return $statusGQL;
  554.     }
  555.     private function getJobMarketState($strState) {
  556.         switch ($strState) {
  557.             case "ACTIVE":
  558.                 return $this->em->getRepository(JobMarketState::class)->find(1);
  559.             case "INACTIVE":
  560.                 return $this->em->getRepository(JobMarketState::class)->find(2);
  561.             case "DELETED":
  562.                 return $this->em->getRepository(JobMarketState::class)->find(3);
  563.             case "DRAFT":
  564.                 return $this->em->getRepository(JobMarketState::class)->find(4);
  565.             default:
  566.                 return null;
  567.         }
  568.         return null;
  569.     }
  570.     public function updateContact($jobMarketID$galleryEntryID) {
  571.         $statusGQL = new StatusGQL();
  572.         /* @var $user User */
  573.         $user $this->getUser();
  574.         if (empty($user)) {
  575.             $statusGQL->setErrorMessage("User not found");
  576.             return $statusGQL;
  577.         }
  578.         /* @var $jobMarket JobMarket */
  579.         $jobMarket $this->jobMarketHelper->getJobOfferById($jobMarketID);
  580.         if (empty($jobMarket)) {
  581.             $statusGQL->setErrorMessage("Job offer not found");
  582.             return $statusGQL;
  583.         }
  584.         $isAllowed $this->isUserAllowed($statusGQL$user$jobMarket);
  585.         if (!$isAllowed) {
  586.             return $statusGQL;
  587.         }
  588.         /* @var $galleryEntry ContactGalleryEntry */
  589.         $galleryEntry $this->contactHelper->getContactGalleryEntryByID($galleryEntryID);
  590.         if (empty($galleryEntry)) {
  591.             $statusGQL->setErrorMessage("Gallery entry with id $galleryEntryID not found");
  592.             return $statusGQL;
  593.         }
  594.         $contact $galleryEntry->getContact();
  595.         if (empty($contact)) {
  596.             $statusGQL->setErrorMessage("Gallery entry has no contact");
  597.             return $statusGQL;
  598.         }
  599.         $jobMarket->setContact($contact);
  600.         $this->em->persist($jobMarket);
  601.         $this->em->flush();
  602.         return $statusGQL;
  603.     }
  604.     public function getJobMarkets() {
  605.         $jobMarketsGQL = array();
  606.         /* @var $user User */
  607.         $user $this->getUser();
  608.         if (empty($user)) {
  609.             return $jobMarketsGQL;
  610.         }
  611.         $companyProfile $this->companyHelper->getSelectedCompanyProfileByUser($user);
  612.         if (empty($companyProfile)) {
  613.             return $jobMarketsGQL;
  614.         }
  615.         $jobMarkets $this->jobMarketHelper->getJobOffersByCompanyProfile($companyProfilenullfalse);
  616.         if (empty($jobMarkets)) {
  617.             return $jobMarketsGQL;
  618.         }
  619.         foreach ($jobMarkets as $jobMarket) {
  620.             $jobMarketGQL $this->graphqlJobMarketHelper->prepareJobMarket($jobMarket);
  621.             if (empty($jobMarketGQL)) {
  622.                 continue;
  623.             }
  624.             $jobMarketsGQL[] = $jobMarketGQL;
  625.         }
  626.         return $jobMarketsGQL;
  627.     }
  628.     private function isUserAllowed(StatusGQL $statusGQLUser $userJobMarket $jobMarket) {
  629.         $companyProfile $this->companyHelper->getSelectedCompanyProfileByUser($user);
  630.         if (empty($companyProfile)) {
  631.             $statusGQL->setErrorMessage('User has no selected company profile');
  632.             return false;
  633.         }
  634.         $companyProfileID $companyProfile->getId();
  635.         $jobMarketCompanyProfileID $jobMarket->getCompanyProfile()->getId();
  636.         if ($companyProfileID != $jobMarketCompanyProfileID) {
  637.             $statusGQL->setErrorMessage('User company profile and job market company profile mismatch');
  638.             return false;
  639.         }
  640.         return true;
  641.     }
  642.     private function createJobMarketDefault(User $user) {
  643.         $jobMarket = new JobMarket();
  644.         $jobMarket->setUser($user);
  645.         $jobMarket->setName("# Name des Stellenangebotes #");
  646.         $jobMarket->setNumberOfPositions(1);
  647.         $jobMarket->setSalary(0);
  648.         $jobMarket->setViewCount(0);
  649.         $jobMarket->setApplicationCount(0);
  650.         $now = new DateTime();
  651.         $jobMarket->setOpenDate($now);
  652.         $jobMarket->setClosedDate($now);
  653.         $companyProfile $this->companyHelper->getSelectedCompanyProfileByUser($user);
  654.         $jobMarket->setCompanyProfile($companyProfile);
  655.         $stateDraft $this->jobMarketHelper->getJobMarketStateById(4);
  656.         $jobMarket->setJobMarketState($stateDraft);
  657.         $this->em->persist($jobMarket);
  658.         $this->em->flush();
  659.         return $jobMarket;
  660.     }
  661.     private function createJobMarketByData(JobMarketGQL $jobMarketGQLUser $user$jobMarketData) {
  662.         $jobMarket = new JobMarket();
  663.         $name $this->getStringValue($jobMarketData'name');
  664.         if (empty($name)) {
  665.             $jobMarketGQL->getStatus()->setErrorMessage('Empty name');
  666.             return null;
  667.         }
  668.         $jobMarket->setName($name);
  669.         $openDate $this->getDateValue($jobMarketData'openDate');
  670.         if (empty($openDate)) {
  671.             $jobMarketGQL->getStatus()->setErrorMessage('Empty open date');
  672.             return null;
  673.         }
  674.         $jobMarket->setOpenDate($openDate);
  675.         $closedDate $this->getDateValue($jobMarketData'closeDate');
  676.         if (empty($closedDate)) {
  677.             $jobMarketGQL->getStatus()->setErrorMessage('Empty close date');
  678.             return null;
  679.         }
  680.         $jobMarket->setClosedDate($closedDate);
  681.         $contactID intval($jobMarketData['contactID']);
  682.         $contact $this->em->getRepository(Contact::class)->find($contactID);
  683.         if (empty($contact)) {
  684.             $jobMarketGQL->getStatus()->setErrorMessage("Contact with id $contactID was not found");
  685.             return null;
  686.         }
  687.         $jobMarket->setContact($contact);
  688.         $addressID intval($jobMarketData['addressID']);
  689.         $address $this->em->getRepository(Address::class)->find($addressID);
  690.         if (empty($address)) {
  691.             $jobMarketGQL->getStatus()->setErrorMessage("Address was not found");
  692.             return null;
  693.         }
  694.         $jobMarket->addAddress($address);
  695.         $description $this->getStringValue($jobMarketData'description');
  696.         $jobMarket->setDescription($description);
  697.         $requirements $this->getStringValue($jobMarketData'requirements');
  698.         $jobMarket->setRequirements($requirements);
  699.         $strPositionType $this->getStringValue($jobMarketData'positionType');
  700.         $positionType $this->jobMarketHelper->getJobMarketPositionTypeByString($strPositionType);
  701.         $jobMarket->setJobMarketPositionType($positionType);
  702.         $applyUntil $this->getDateValue($jobMarketData'applyUntil');
  703.         $jobMarket->setApplyUntil($applyUntil);
  704.         $strApplyType $this->getStringValue($jobMarketData'applyType');
  705.         $applyType $this->jobMarketHelper->getJobMarketApplyTypeByString($strApplyType);
  706.         $jobMarket->setJobMarketApplyType($applyType);
  707.         $salary $this->getStringValue($jobMarketData'salary'"");
  708.         $jobMarket->setSalary($salary);
  709.         $numberOfPositions intval($jobMarketData['numberOfPositions']);
  710.         $jobMarket->setNumberOfPositions($numberOfPositions);
  711.         $state $this->jobMarketHelper->getJobMarketStartTypeById(1);
  712.         $jobMarket->setJobMarketState($state);
  713.         $this->addJobMarketJobs($jobMarket$jobMarketData);
  714.         $jobMarket->setUser($user);
  715.         $this->em->persist($jobMarket);
  716.         $this->em->flush();
  717.         return $jobMarket;
  718.     }
  719.     private function addJobMarketJobs(JobMarket $jobMarket$jobMarketData) {
  720.         if (!array_key_exists('jobIDs'$jobMarketData)) {
  721.             return;
  722.         }
  723.         $arrJobIDs $jobMarketData['jobIDs'];
  724.         foreach ($arrJobIDs as $jobID) {
  725.             $job $this->em->getRepository(Job::class)->find($jobID);
  726.             if (empty($job)) {
  727.                 continue;
  728.             }
  729.             $jobMarket->addJob($job);
  730.         }
  731.     }
  732.     private function getDateValue($jobMarketData$key) {
  733.         if (!array_key_exists($key$jobMarketData)) {
  734.             return null;
  735.         }
  736.         $strDate $jobMarketData[$key];
  737.         return new DateTime($strDate);
  738.     }
  739.     private function getStringValue($jobMarketData$key$default null) {
  740.         if (!array_key_exists($key$jobMarketData)) {
  741.             return $default;
  742.         }
  743.         return $jobMarketData[$key];
  744.     }
  745. }