src/Controller/Survey/SurveyResultController.php line 61

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Survey;
  3. use App\Entity\Survey\SurveyResult;
  4. use App\Form\Survey\Filter\SurveyResultFilterFormType;
  5. use App\Form\Survey\List\SurveyResultListFormType;
  6. use App\Form\Survey\SurveyResultFormType;
  7. use App\Services\UniversalList\FilterService;
  8. use App\Services\PhpSpreadsheet\PhpSpreadsheetService;
  9. use App\Services\Survey\SurveyResultService;
  10. use App\Services\UniversalList\ListService;
  11. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. class SurveyResultController extends AbstractController
  18. {
  19.     private $entityClass SurveyResult::class;
  20.     public function __construct(
  21.         public SurveyResultService $surveyResultService,
  22.         public PhpSpreadsheetService $phpSpreadsheetService,
  23.         public FilterService $filterService,
  24.         public ListService $listService
  25.     ) {}
  26.     #[Route('/surveyResult/'name'SURVEY_RESULT_LIST'methods: ['GET'])]
  27.     #[IsGranted('ROLE_ADMIN')]
  28.     public function surveyResultList(Request $request): Response
  29.     {
  30.         return $this->render(
  31.             'universal/list.html.twig',
  32.             array_merge(
  33.                 $this->listService->generate(
  34.                     $request,
  35.                     $this->entityClass,
  36.                     SurveyResultListFormType::class,
  37.                     SurveyResultFilterFormType::class,
  38.                     [
  39.                         'uniqueCreatedAtCollection' => $this->surveyResultService->getUniqueCreatedAt(),
  40.                     ]
  41.                 ),
  42.                 [
  43.                     'pageTitle' => 'surveyResult.list.title',
  44.                     'deleteConfirmText' => 'surveyResult.list.button.delete.confirm',
  45.                     'routeNameCreate' => $this->entityClass::ROUTE_NAME_CREATE,
  46.                     'additionalFunctionality' => [
  47.                         'export' => true
  48.                     ]
  49.                 ]
  50.             )
  51.         );
  52.     }
  53.     #[Route('/surveyResult/{id}/'name'SURVEY_RESULT_DETAIL'methods: ['GET'])]
  54.     #[IsGranted('ROLE_ADMIN')]
  55.     public function surveyResultDetail(SurveyResult $surveyResult): Response
  56.     {
  57.         $surveyResultForm $this->createForm(
  58.             SurveyResultFormType::class,
  59.             $surveyResult,
  60.             [
  61.                 'formStatus' => 'view'
  62.             ]
  63.         );
  64.         return $this->render('surveyResult/detail.html.twig', [
  65.             'surveyResultForm' => $surveyResultForm->createView()
  66.         ]);
  67.     }
  68.     #[Route('/surveyResult/{id}/delete/'name'SURVEY_RESULT_DELETE'methods: ['DELETE'])]
  69.     #[IsGranted('ROLE_ADMIN')]
  70.     public function surveyResultDelete(int $id): JsonResponse
  71.     {
  72.         return $this->json($this->surveyResultService->delete($id));
  73.     }
  74.     #[Route('/surveyResult/export/{format}/'name'SURVEY_RESULTS_EXPORT'methods: ['GET'])]
  75.     #[IsGranted('ROLE_ADMIN')]
  76.     public function surveyResultsExport($formatRequest $request): Response
  77.     {
  78.         $surveyResultCollections $this->filterService->generateData(
  79.             $request,
  80.             SurveyResult::class
  81.         );
  82.         return $this->phpSpreadsheetService->getExportFile($format$surveyResultCollections['dataCollections']);
  83.     }
  84. }