src/Controller/ProgramsController.php line 28

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Candidate;
  4. use App\Entity\Company;
  5. use App\Entity\Groupe;
  6. use App\Entity\Program;
  7. use App\Entity\ProgramCandidate;
  8. use App\Form\ProgramCandidatType;
  9. use App\Form\ProgramCompanyType;
  10. use App\Form\ProgramGroupeType;
  11. use App\Form\ProgramType;
  12. use App\Repository\ClientRepository;
  13. use App\Repository\ProgramCandidateRepository;
  14. use App\Repository\ProgramRepository;
  15. use App\Service\UserService;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use Symfony\Component\Routing\RouterInterface;
  22. class ProgramsController extends AbstractController
  23. {
  24.     #[Route('/programs'name'app_programs')]
  25.     public function index(ProgramRepository $programRepoUserService $userService): Response
  26.     {
  27.         $user $this->getUser();
  28.         if (!$userService->isAdmin($this->getUser())){
  29.             $user $user->getAdministrator();
  30.         }
  31.         return $this->render('programs/index.html.twig', [
  32.             'listprograms' => $programRepo->findBy(['adminUser' => $user]),
  33.         ]);
  34.     }
  35.     #[Route('/programs/new'name'app_programs_create')]
  36.     public function create(Request $request,ProgramRepository $programRepo,ClientRepository $clientRepo): Response
  37.     {
  38.         $program = new Program();
  39.         $form $this->createForm(ProgramType::class, $program);
  40.         $form->handleRequest($request);
  41.         if ($form->isSubmitted() && $form->isValid()) {
  42.             $user $this->getUser();
  43.             $program->setAdminUser($user);
  44.             $programRepo->save($programtrue);
  45.             return $this->redirectToRoute('app_programs');
  46.         }
  47.         return $this->render('programs/new.html.twig',[
  48.             'form' => $form->createView(),
  49.             'listClients' => $clientRepo->getClientsByAdminId($this->getUser()->getId())
  50.         ]);
  51.     }
  52.     #[Route('/programs/edit/{id}'name'app_programs_edit')]
  53.     public function edit(Program $programRequest $requestProgramRepository $programRepo,ClientRepository $clientRepo): Response
  54.     {
  55.         $form $this->createForm(ProgramType::class, $program);
  56.         $form->handleRequest($request);
  57.         if ($form->isSubmitted() && $form->isValid()) {
  58.             $programRepo->save($programtrue);
  59.             return $this->redirectToRoute('app_programs');
  60.         }
  61.         return $this->render('programs/new.html.twig', [
  62.             'form' => $form->createView(),
  63.             'listClients' => $clientRepo->getClientsByAdminId($this->getUser()->getId())
  64.         ]);
  65.     }
  66.     #[Route('/programs/delete/{id}'name'app_programs_delete')]
  67.     public function delete(Program $programProgramRepository $programRepo): Response
  68.     {
  69.         $programRepo->remove($programtrue);
  70.         return $this->redirectToRoute('app_programs');
  71.     }
  72.     #[Route('/programs/details/{id}'name'app_programs_details')]
  73.     public function details(Program $program): Response
  74.     {
  75.         return $this->render('programs/details.html.twig',[
  76.             'program' => $program
  77.         ]);
  78.     }
  79.     #[Route('/programs/addCandidate/{id}'name'app_programs_addCandidate')]
  80.     public function addCandidate(Program $programRequest $requestProgramCandidateRepository $programCandidateRepo): Response
  81.     {
  82.         $programCandidate = new ProgramCandidate();
  83.         $form $this->createForm(ProgramCandidatType::class);
  84.         $form->handleRequest($request);
  85.         if ($form->isSubmitted() && $form->isValid()  ) {
  86.             $candidate $form->get('candidate')->getData();
  87.             $programCandidate->setProgram($program);
  88.             $programCandidate->setCandidate($candidate);
  89.             $programCandidate->setStatus('nouveau');
  90.             $programCandidateRepo->save($programCandidatetrue);
  91.             return $this->redirectToRoute('app_programs_details', ['id' => $program->getId()]);
  92.         }
  93.         return $this->render('programs/add-candidate.html.twig',[
  94.             'candidateForm' => $form->createView()
  95.         ]);
  96.     }
  97.     #[Route('/programs/addGroupe/{id}'name'app_programs_addGroupe')]
  98.     public function addGroupe(Program $programRequest $requestProgramCandidateRepository $programCandidateRepo): Response
  99.     {
  100.         $programCandidate = new ProgramCandidate();
  101.         $form $this->createForm(ProgramGroupeType::class);
  102.         $form->handleRequest($request);
  103.         if ($form->isSubmitted() && $form->isValid()  ) {
  104.             $groupe $form->get('groupe')->getData();
  105.             $programCandidate->setProgram($program);
  106.             $programCandidate->setGroupe($groupe);
  107.             $programCandidate->setStatus('nouveau');
  108.             $programCandidateRepo->save($programCandidatetrue);
  109.             return $this->redirectToRoute('app_programs_details', ['id' => $program->getId()]);
  110.         }
  111.         return $this->render('programs/add-groupe.html.twig',[
  112.             'candidateForm' => $form->createView()
  113.         ]);
  114.     }
  115.     #[Route('/programs/addCompany/{id}'name'app_programs_addCompany')]
  116.     public function addCompany(Program $programRequest $requestProgramCandidateRepository $programCandidateRepo): Response
  117.     {
  118.         $programCandidate = new ProgramCandidate();
  119.         $form $this->createForm(ProgramCompanyType::class);
  120.         $form->handleRequest($request);
  121.         if ($form->isSubmitted() && $form->isValid()  ) {
  122.             $company $form->get('company')->getData();
  123.             $programCandidate->setProgram($program);
  124.             $programCandidate->setCompany($company);
  125.             $programCandidate->setStatus('nouveau');
  126.             $programCandidateRepo->save($programCandidatetrue);
  127.             return $this->redirectToRoute('app_programs_details', ['id' => $program->getId()]);
  128.         }
  129.         return $this->render('programs/add-company.html.twig',[
  130.             'candidateForm' => $form->createView()
  131.         ]);
  132.     }
  133.     #[Route('/programs/candidate/delete/{id}/{program}'name'app_programs_candidate_delete')]
  134.     public function deleteCandidate(Program $program,Candidate $candidateProgramCandidateRepository $programCandidateRepo): Response
  135.     {
  136.         $candidate $programCandidateRepo->findOneBy([
  137.             'program' => $program,
  138.             'candidate' => $candidate
  139.             ]);
  140.         $programCandidateRepo->remove($candidatetrue);
  141.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  142.     }
  143.     #[Route('/programs/company/delete/{id}/{program}'name'app_programs_company_delete')]
  144.     public function deleteCompany(Program $program,Company $companyProgramCandidateRepository $programCandidateRepo): Response
  145.     {
  146.         $candidate $programCandidateRepo->findOneBy([
  147.             'program' => $program,
  148.             'company' => $company
  149.         ]);
  150.         $programCandidateRepo->remove($candidatetrue);
  151.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  152.     }
  153.     #[Route('/programs/groupe/delete/{id}/{program}'name'app_programs_groupe_delete')]
  154.     public function deleteGroupe(Program $program,Groupe $groupeProgramCandidateRepository $programCandidateRepo): Response
  155.     {
  156.         $candidate $programCandidateRepo->findOneBy([
  157.             'program' => $program,
  158.             'groupe' => $groupe
  159.         ]);
  160.         $programCandidateRepo->remove($candidatetrue);
  161.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  162.     }
  163.     #[Route('/programs/candidate/status/{candidate}/{program}'name'app_programs_candidate_status')]
  164.     public function statusCandidate(Request $request,Program $program,Candidate $candidateProgramCandidateRepository $programCandidateRepo): Response
  165.     {
  166.         $candidate $programCandidateRepo->findOneBy([
  167.             'program' => $program,
  168.             'candidate' => $candidate
  169.         ]);
  170.         $selectedStatus $request->request->get('status');
  171.         $candidate->setStatus($selectedStatus);
  172.         $programCandidateRepo->save($candidatetrue);
  173.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  174.     }
  175.     #[Route('/programs/groupe/status/{groupe}/{program}'name'app_programs_groupe_status')]
  176.     public function statusGroupe(Request $request,Program $program,Groupe $groupeProgramCandidateRepository $programCandidateRepo): Response
  177.     {
  178.         $candidate $programCandidateRepo->findOneBy([
  179.             'program' => $program,
  180.             'groupe' => $groupe
  181.         ]);
  182.         $selectedStatus $request->request->get('status');
  183.         $candidate->setStatus($selectedStatus);
  184.         $programCandidateRepo->save($candidatetrue);
  185.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  186.     }
  187.     #[Route('/programs/company/status/{company}/{program}'name'app_programs_company_status')]
  188.     public function statusCompany(Request $request,Program $program,Company $companyProgramCandidateRepository $programCandidateRepo): Response
  189.     {
  190.         $candidate $programCandidateRepo->findOneBy([
  191.             'program' => $program,
  192.             'company' => $company
  193.         ]);
  194.         $selectedStatus $request->request->get('status');
  195.         $candidate->setStatus($selectedStatus);
  196.         $programCandidateRepo->save($candidatetrue);
  197.         return $this->redirectToRoute('app_programs_details', ['id' =>$program->getId()]);
  198.     }
  199. }