src/Controller/ProjectController.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Project;
  4. use App\Form\ProjectType;
  5. use App\Repository\ProjectRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. /**
  11.  * @Route("/")
  12.  */
  13. class ProjectController extends AbstractController
  14. {
  15.     /**
  16.      * @Route("/", name="app_project_index", methods={"GET"})
  17.      */
  18.     public function index(ProjectRepository $projectRepository): Response
  19.     {
  20.         return $this->render('project/index.html.twig', [
  21.             'projects' => $projectRepository->findAll(),
  22.         ]);
  23.     }
  24.     /**
  25.      * @Route("/new", name="app_project_new", methods={"GET", "POST"})
  26.      */
  27.     public function new(Request $requestProjectRepository $projectRepository): Response
  28.     {
  29.         $project = new Project();
  30.         $form $this->createForm(ProjectType::class, $project);
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted() && $form->isValid()) {
  33.             $projectRepository->add($projecttrue);
  34.             return $this->redirectToRoute('app_project_index', [], Response::HTTP_SEE_OTHER);
  35.         }
  36.         return $this->renderForm('project/new.html.twig', [
  37.             'project' => $project,
  38.             'form' => $form,
  39.         ]);
  40.     }
  41.     /**
  42.      * @Route("/calculate/{id}", name="app_project_calculate", methods={"GET"})
  43.      */
  44.     public function calculate(Project $project): Response
  45.     {
  46.         $data = ['panels'=>$project->calculatePanels(),'materials'=>$project->getCalculatedMaterials()];
  47.         return new \Symfony\Component\HttpFoundation\JsonResponse($data);
  48.     }
  49.     /**
  50.      * @Route("/{id}", name="app_project_show", methods={"GET"})
  51.      */
  52.     public function show(Project $project): Response
  53.     {
  54.         return $this->render('project/show.html.twig', [
  55.             'project' => $project,
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/{id}/edit", name="app_project_edit", methods={"GET", "POST"})
  60.      */
  61.     public function edit(Request $requestProject $projectProjectRepository $projectRepository): Response
  62.     {
  63.         $form $this->createForm(ProjectType::class, $project);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             $projectRepository->add($projecttrue);
  67.             return $this->redirectToRoute('app_project_index', [], Response::HTTP_SEE_OTHER);
  68.         }
  69.         return $this->renderForm('project/edit.html.twig', [
  70.             'project' => $project,
  71.             'form' => $form,
  72.         ]);
  73.     }
  74.     /**
  75.      * @Route("/{id}", name="app_project_delete", methods={"POST"})
  76.      */
  77.     public function delete(Request $requestProject $projectProjectRepository $projectRepository): Response
  78.     {
  79.         if ($this->isCsrfTokenValid('delete'.$project->getId(), $request->request->get('_token'))) {
  80.             $projectRepository->remove($projecttrue);
  81.         }
  82.         return $this->redirectToRoute('app_project_index', [], Response::HTTP_SEE_OTHER);
  83.     }
  84. }