src/Controller/IndexController.php line 21

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\User;
  4. use App\Kernel;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\Form\Extension\Core\Type\FileType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\HttpFoundation\RedirectResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpKernel\KernelInterface;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use Symfony\Component\Security\Http\Attribute\IsGranted;
  14. use Symfony\Component\Validator\Constraints\File;
  15. class IndexController extends AbstractController
  16. {
  17.     #[Route('/'name'app_index')]
  18.     public function index(): RedirectResponse
  19.     {
  20.         return $this->redirectToRoute('dashboard.my_incentives');
  21.     }
  22.     #[Route('/user-payrolls/{fileName}'name'payroll')]
  23.     #[IsGranted(User::ROLE_ADMIN)]
  24.     public function payroll(string $fileNameKernelInterface $kernel)
  25.     {
  26.         $filePath $kernel->getProjectDir() . '/user-payrolls/' $fileName;
  27.         return $this->file($filePath);
  28.     }
  29.     #[Route('/credit_uploads_download'name'credit_uploads_download')]
  30.     #[IsGranted(User::ROLE_ADMIN)]
  31.     public function creditUploadsDownload(KernelInterface $kernel)
  32.     {
  33.         $filePath $kernel->getProjectDir() . '/manual_correction/man_cred.xlsx';
  34.         return $this->file($filePath);
  35.     }
  36.     #[Route('/credit/upload'name'credit_upload')]
  37.     #[IsGranted(User::ROLE_ADMIN)]
  38.     public function creditUpload(Request $requestKernelInterface $kernel)
  39.     {
  40.         $form $this->createFormBuilder()
  41.             ->add('file'FileType::class, [
  42.                 'constraints' => [
  43.                     new File([
  44.                         'mimeTypes' => [
  45.                             'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
  46.                         ]
  47.                     ])
  48.                 ]
  49.             ])
  50.             ->add('submit'SubmitType::class)
  51.             ->getForm();
  52.         $form->handleRequest($request);
  53.         if ($form->isSubmitted() && $form->isValid()) {
  54.             $newFile $form->get('file')->getData();
  55.             if ($newFile) {
  56.                 $fileDir $kernel->getProjectDir() . '/manual_correction';
  57.                 $newFile->move(
  58.                     $fileDir,
  59.                     'man_cred.xlsx'
  60.                 );
  61.                 $this->addFlash('success''Uploaded');
  62.                 return $this->redirectToRoute('admin');
  63.             }
  64.         }
  65.         return $this->render(
  66.             'base/form.html.twig', [
  67.                 'form' => $form->createView(),
  68.                 'link' => $this->generateUrl('credit_uploads_download')
  69.             ]
  70.         );
  71.     }
  72. }