src/Controller/Backend/JuryController.php line 58

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use FOS\RestBundle\Controller\Annotations as Rest;
  6. use FOS\RestBundle\View\View;
  7. use App\Annotation\Log;
  8. use App\Annotation\PermissionAdmin;
  9. use App\Annotation\PermissionPublic;
  10. use App\Utilities\ExportUtil;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. /**
  13.  * @Rest\Route("/api/jury")
  14.  */
  15. class JuryController extends BaseController
  16. {
  17.     public function extraFilter($input)
  18.     {
  19.         $commercialId $input->get('filter_commercial') ?? $this->userService->getCommercialIdByUser();
  20.         $extraFilter = function ($qb) use ($commercialId) {
  21.             if ($commercialId) {
  22.                 $qb->join('Jury.profiles''profiles');
  23.                 $qb->andWhere('profiles.commercial IS NOT NULL AND profiles.commercial = :commercialId')
  24.                     ->setParameter('commercialId'$commercialId);
  25.             }
  26.         };
  27.         return $extraFilter;
  28.     }
  29.     /**
  30.      * @Rest\Get("/manager")
  31.      * @PermissionPublic
  32.      * @return View
  33.      */
  34.     public function juryManager(Request $request): View
  35.     {
  36.         $input $request->query;
  37.         $extraFilter $this->extraFilter($input);
  38.         return View::create(
  39.             $this->currentRepo->getList($request'App\DTO\Jury\JuryManagerOutput'$extraFilter),
  40.             Response::HTTP_OK
  41.         );
  42.     }
  43.     /**
  44.      * @Rest\Get("/manager/{id}")
  45.      * @PermissionPublic
  46.      * @return View
  47.      */
  48.     public function juryManagerProfile($id): View
  49.     {
  50.         return View::create(
  51.             $this->currentService->getProfileById($id),
  52.             Response::HTTP_OK
  53.         );
  54.     }
  55.     /**
  56.      * @Rest\Get("/list")
  57.      * @PermissionPublic
  58.      * @return View
  59.      */
  60.     public function getList(Request $request): View
  61.     {
  62.         return View::create(
  63.             $this->currentRepo->getList($requestnull),
  64.             Response::HTTP_OK
  65.         );
  66.     }
  67.     /**
  68.      * @Rest\Get("/export-excel")
  69.      * @PermissionPublic
  70.      */
  71.     public function exportExcel(Request $requestTranslatorInterface $translatorExportUtil $exportUtil)
  72.     {
  73.         ini_set('memory_limit''-1');
  74.         ini_set('max_execution_time'9600);
  75.         set_time_limit(0);
  76.         $input $request->query;
  77.         $extraFilter $this->extraFilter($input);
  78.         if ($request->get('all') == 'true') {            
  79.             $q $this->currentRepo->getAll($request'App\DTO\Jury\JuryExcelOutput'$extraFiltertrue);
  80.             $fileName 'Export_' $translator->trans('Étude_du_dossier') . '_' date('d_m_Y') . '.xlsx';
  81.             $excelData $exportUtil->generateByArrayJury($q);
  82.             header('Content-Description: File Transfer');
  83.             header('Access-Control-Allow-Origin: *');
  84.             header('Content-Type: application/vnd.ms-excel');
  85.             header('Content-Disposition: inline; filename=' $fileName);
  86.             header('Expires: 0');
  87.             header('Cache-Control: must-revalidate');
  88.             header('Pragma: public');
  89.             echo $excelData;
  90.             exit;
  91.         }
  92.         $data $this->currentRepo->getAll($request'App\DTO\Jury\JuryExcelOutput');
  93.         $content $this->renderView('excel/jury_list.html.twig', [
  94.             'data' => $data,
  95.         ]);
  96.         $fileName 'Export_' $translator->trans('Étude_du_dossier') . '_' date('d_m_Y') . '.xlsx';
  97.         $excelData ExportUtil::generateExcel($content);
  98.         $result = [
  99.             'file_name' => $fileName,
  100.             'file' => "data:application/vnd.ms-excel;base64," base64_encode($excelData),
  101.         ];
  102.         return $this->json($result);
  103.     }
  104.     /**
  105.      * @Rest\Post("")
  106.      * @PermissionAdmin
  107.      * @Log
  108.      * @return View
  109.      */
  110.     public function add(Request $request): View
  111.     {
  112.         return View::create($this->currentService->add($request), Response::HTTP_OK);
  113.     }
  114.     /**
  115.      * @Rest\Post("/update")
  116.      * @PermissionAdmin
  117.      * @Log
  118.      * @return View
  119.      */
  120.     public function update(Request $request): View
  121.     {
  122.         return View::create($this->currentService->update(null$request), Response::HTTP_OK);
  123.     }
  124.     /**
  125.      * @Rest\Delete("/{id}")
  126.      * @PermissionAdmin
  127.      * @Log
  128.      * @return View
  129.      */
  130.     public function delete(int $id): View
  131.     {
  132.         return View::create(['result' => $this->currentService->delete($id)], Response::HTTP_OK);
  133.     }
  134.     /**
  135.      * @Rest\Get("/{id}")
  136.      * @PermissionPublic
  137.      * @return View
  138.      */
  139.     public function getOne($id): View
  140.     {
  141.         return View::create($this->currentService->getById($id), Response::HTTP_OK);
  142.     }
  143. }