src/Controller/IndexController.php line 24

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