bundles/Bgt/ApiBundle/Controller/DegreeOpenController.php line 62

Open in your IDE?
  1. <?php
  2. namespace Bgt\ApiBundle\Controller;
  3. use App\Entity\Admission;
  4. use App\Entity\Degree;
  5. use App\Entity\DegreeGroup;
  6. use App\Entity\User;
  7. use App\Entity\UserSession;
  8. use Bgt\ApiBundle\Services\TokenService;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Core\User\UserInterface;
  15. #[Route('/_open/degree')]
  16. class DegreeOpenController extends ApiController
  17. {
  18.     #[Route('/'name'api_degree_index'methods: ['GET''POST'])]
  19.     public function login(
  20.         Request $request,
  21.         EntityManagerInterface $em
  22.     ): Response
  23.     {
  24.         $degreeGroupId 0;
  25.         if($request->isMethod(Request::METHOD_POST)) {
  26.             $request $this->transformJsonBody($request);
  27.             $degreeGroupId $request->request->getInt('degreeGroupId',0);
  28.         }
  29.         /** @var DegreeGroup $degreeGroup */
  30.         $degreeGroup $em->getRepository(DegreeGroup::class)->find($degreeGroupId);
  31.         $qb $em->getRepository(Degree::class)
  32.             ->createQueryBuilder('degree')
  33.             ->leftJoin('degree.degreeGroup''degreeGroup');
  34.         $qb->addSelect('degreeGroup');
  35.         if ($degreeGroup) {
  36.             $qb
  37.                 ->Where($qb->expr()->eq('degreeGroup.id'':degreeGroupId'))
  38.                 ->setParameter('degreeGroupId'$degreeGroup->getId())
  39.                 ->andWhere($qb->expr()->neq('degree.isDeleted'':boolTrue'))
  40.                 ->andWhere($qb->expr()->neq('degree.isTraining'':boolTrue'))
  41.                 ->setParameter('boolTrue'true);
  42.         }
  43.         $degrees $qb
  44.             ->orderBy('degree.id'"DESC")
  45.             ->getQuery()
  46.             ->getArrayResult();
  47.         return $this->respond([
  48.             'degrees' => $degrees,
  49.         ]);
  50.     }
  51.     #[Route('/training'name'api_degree_training'methods: ['GET'])]
  52.     public function training(
  53.         Request $request,
  54.         EntityManagerInterface $em
  55.     ): Response
  56.     {
  57.         $user $this->getUser();
  58.         $qb $em->getRepository(Degree::class)
  59.             ->createQueryBuilder('degree')
  60.         ;
  61.         $qb
  62.             ->select('degree.id')
  63.             ->andWhere($qb->expr()->eq('degree.isTraining'':checkTrue'))
  64.             ->andWhere($qb->expr()->eq('degree.isDeleted'':checkFalse'))
  65.             ->setParameter('checkTrue'true)
  66.             ->setParameter('checkFalse'false)
  67.         ;
  68.         $degrees $qb
  69.             ->getQuery()
  70.             ->getSingleColumnResult();
  71.         $admission $em->getRepository(Admission::class)
  72.             ->createQueryBuilder('admission')
  73.             ->leftJoin('admission.degree''degree');
  74.         $admission->addSelect('degree');
  75.         if ($degrees[0]) {
  76.             $admission
  77.                 ->andWhere($admission->expr()->in('degree.id'':degreeIds'))
  78.                 ->andWhere($qb->expr()->neq('admission.isDeleted'':boolTrue'))
  79.                 ->setParameter('degreeIds'$degrees)
  80.                 ->setParameter('boolTrue'true)
  81.             ;
  82.         }
  83.         $admissions $admission
  84.             ->addOrderBy('admission.id''DESC')
  85.             ->getQuery()
  86.             ->getArrayResult();
  87.         return $this->respond([
  88.             'admissions' => $admissions,
  89.             'degree' => $degrees[0]
  90.         ]);
  91.     }
  92. }