src/Controller/Super/ProjectController.php line 27

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Super;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Vich\UploaderBundle\Handler\DownloadHandler;
  7. use App\Entity\Batch;
  8. use App\Entity\Project;
  9. use App\Repository\ProjectRepository;
  10. use App\Form\ProjectSuperType;
  11. use App\Form\ProjectSearchType;
  12. use App\Util\Exporter\Project\ProjectSuperExporter;
  13. /**
  14.  *
  15.  * @Route("/super/project/", name="super_project_")
  16.  * @author "wendell.zheng <wxzheng@ustc.edu.cn>"
  17.  */
  18. class ProjectController extends BaseController
  19. {
  20.     /**
  21.      *
  22.      * @Route("list/{id}", name="list", requirements={"id"="\d+"})
  23.      */
  24.     public function list(Batch $batchRequest $requestProjectRepository $repository): Response
  25.     {
  26.         $form $this->createForm(ProjectSearchType::class, null, [
  27.             'batch' => $batch
  28.         ]);
  29.         $parameters = [
  30.             'batch' => $batch
  31.         ];
  32.         $form->handleRequest($request);
  33.         if ($form->isSubmitted() && $form->isValid()) {
  34.             $parameters += $form->getData();
  35.             if ($form->getClickedButton() === $form->get('export')) {
  36.                 $projects $repository->search($parameters);
  37.                 $exporter ProjectSuperExporter::getExporterByBatch($batch$projects);
  38.                 return $exporter->download($batch->getName() . '_汇总表');
  39.             }
  40.         }
  41.         $twig 'super/project/' Batch::TYPE_TWIGS[$batch->getType()] . '_list.html.twig';
  42.         return $this->render($twig, [
  43.             'title' => $batch->getName(),
  44.             'name' => $this->getLowerName(),
  45.             'batch' => $batch,
  46.             'entities' => $repository->search($parameters),
  47.             'form' => $form->createView()
  48.         ]);
  49.     }
  50.     /**
  51.      *
  52.      * @Route("edit/{id}", name="edit", requirements={"id"="\d+"})
  53.      */
  54.     public function edit(Project $projectRequest $request): Response
  55.     {
  56.         $batch $project->getBatch();
  57.         return $this->projectEdit($project$batch$request);
  58.     }
  59.     /**
  60.      *
  61.      * @Route("download/{id}", name="download", requirements={"id"="\d+"})
  62.      */
  63.     public function download(Project $projectDownloadHandler $downloadHandler): Response
  64.     {
  65.         return $downloadHandler->downloadObject($project'doc'null$project->getDocDownloadName());
  66.     }
  67.     /**
  68.      *
  69.      * @Route("college/download/{id}", name="college_download", requirements={"id"="\d+"})
  70.      */
  71.     public function collegeDownload(Project $projectDownloadHandler $downloadHandler): Response
  72.     {
  73.         return $downloadHandler->downloadObject($project'collegeDoc'null$project->getCollegeDocDownloadName());
  74.     }
  75.     protected function projectEdit(Project $projectBatch $batchRequest $request): Response
  76.     {
  77.         $title $project->getId() ? '编辑' '新建';
  78.         $form $this->createForm(ProjectSuperType::class, $project);
  79.         $form->handleRequest($request);
  80.         if ($form->isSubmitted() && $form->isValid()) {
  81.             $this->em->persist($project);
  82.             $this->em->flush();
  83.             $this->addFlash('project''操作成功');
  84.             return $this->redirectToRoute('super_project_list', [
  85.                 'id' => $batch->getId()
  86.             ]);
  87.         }
  88.         return $this->render('super/project/edit.html.twig', [
  89.             'title' => $batch->getName() . ' - ' $title '项目',
  90.             'project' => $project,
  91.             'form' => $form->createView()
  92.         ]);
  93.     }
  94. }