src/Controller/DonsController.php line 39

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Dons;
  4. use App\Entity\User;
  5. use App\Form\DonsType;
  6. use App\Net15\PaiementBundle\Entity\ModePaiement;
  7. use App\Repository\DonsRepository;
  8. use App\Repository\EditionRepository;
  9. use App\Repository\UserRepository;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. #[Route('/dons')]
  15. class DonsController extends AbstractController
  16. {
  17.     #[Route('/liste'name'app_dons_index'methods: ['GET'])]
  18.     public function index(DonsRepository $donsRepository): Response
  19.     {
  20.         if ($this->isGranted('ROLE_ADMIN')) {
  21.             return $this->render('dons/index.html.twig', [
  22.                 'dons' => $donsRepository->findBy(['deletedAt' => null,'status' => Dons::STATUT_PAYE])
  23.             ]);
  24.         }elseif($this->isGranted('ROLE_USER')){
  25.             return $this->render('dons/index.html.twig', [
  26.                 'dons' => $donsRepository->findBy(['deletedAt' => null'user' => $this->getUser(),'status' => Dons::STATUT_PAYE])
  27.             ]);
  28.         }
  29.         else{
  30.             return $this->redirectToRoute('app_don_new');
  31.         }
  32.     }
  33.     #[Route('/'name'app_don_new'methods: ['GET''POST'])]
  34.     public function new(Request $requestDonsRepository $donRepositoryUserRepository $userRepository): Response
  35.     {
  36.         $don = new Dons(nullnull0.00);
  37.         $form $this->createForm(DonsType::class, $don);
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40.             $user $userRepository->findOneBy(['deletedAt' => null'email' => $request->get('dons')['email']]);
  41.             if(null === $user && $request->get('dons')['lastname'] && $request->get('dons')['firstname'] && $request->get('dons')['email']) {
  42.                 $user = new User();
  43.                 $user->setLastname($request->get('dons')['lastname']);
  44.                 $user->setFirstname($request->get('dons')['firstname']);
  45.                 $user->setEmail($request->get('dons')['email']);
  46.                 $user->setPhone($request->get('dons')['phone']);
  47.                 $user->setAddress($request->get('dons')['address']);
  48.                 $user->setAddressComplement($request->get('dons')['address_complement']);
  49.                 $user->setZipCode($request->get('dons')['zip_code']);
  50.                 $user->setCity($request->get('dons')['city']);
  51.                 $user->setRoles(['ROLE_DONATEUR']);
  52.                 $userRepository->save($user);
  53.                 $don->setUser($user);
  54.                 $donRepository->save($don);
  55.                 $recapitulatif = [
  56.                     'type'                  => 'don',
  57.                     'id'                    => $don->getId(),
  58.                     'name'                  => 'Don',
  59.                     'quantity'              => 1,
  60.                     'price'                 => $don->getDonationAmount(),
  61.                     'lastname'              => $request->get('dons')['lastname'],
  62.                     'firstname'             => $request->get('dons')['firstname'],
  63.                     'email'                 => $request->get('dons')['email'],
  64.                     'phone'                 => $request->get('dons')['phone'],
  65.                     'address'               => $request->get('dons')['address'],
  66.                     'address_complement'    => $request->get('dons')['address_complement'],
  67.                     'zip_code'              => $request->get('dons')['zip_code'],
  68.                     'city'                  => $request->get('dons')['city']
  69.                 ];
  70.             } else {
  71.                 if( null === $user->getPhone() )             $user->setAddress($request->get('dons')['phone']);
  72.                 if( null === $user->getAddress() )           $user->setAddress($request->get('dons')['address']);
  73.                 if( null === $user->getAddressComplement() ) $user->setAddress($request->get('dons')['address_complement']);
  74.                 if( null === $user->getZipCode() )           $user->setAddress($request->get('dons')['zip_code']);
  75.                 if( null === $user->getCity() )              $user->setAddress($request->get('dons')['city']);
  76.                 $don->setUser($user);
  77.                 $donRepository->save($don);
  78.                 $recapitulatif = [
  79.                     'type'                  => 'don',
  80.                     'id'                    => $don->getId(),
  81.                     'name'                  => 'Don',
  82.                     'quantity'              => 1,
  83.                     'price'                 => $don->getDonationAmount(),
  84.                     'lastname'              => $user->getLastname(),
  85.                     'firstname'             => $user->getFirstname(),
  86.                     'email'                 => $user->getEmail(),
  87.                     'phone'                 => $user->getPhone(),
  88.                     'address'               => $user->getAddress(),
  89.                     'address_complement'    => $user->getAddressComplement(),
  90.                     'zip_code'              => $user->getZipCode(),
  91.                     'city'                  => $user->getCity(),
  92.                 ];
  93.             }
  94.             return $this->redirectToRoute('paiement_payer', [
  95.                 'parent_entity_class' => null,
  96.                 'parent_entity_id'    => null,
  97.                 'entity_class'        => Dons::class,
  98.                 'entity_id'           => $don->getId()->toRfc4122(),
  99.                 'libelle'             => 'Motards du viaduc - Don',
  100.                 'montant'             => $don->getDonationAmount(),
  101.                 'recapitulatif'       => $recapitulatif,
  102.                 'payement_method'     => ($this->getUser()?->hasRole('ROLE_ADMIN') === true ModePaiement::AUTRE ModePaiement::PAYBOX),
  103.                 'back_path'           => 'home',
  104.                 'prenom'              => $user->getFirstname(),
  105.                 'nom'                 => $user->getLastname(),
  106.                 'adresse1'            => $user->getAddress(),
  107.                 'adresse2'            => $user->getAddressComplement(),
  108.                 'zipcode'             => $user->getZipCode(),
  109.                 'city'                => $user->getCity(),
  110.                 'country'             => $user->getPays()->getId(),
  111.             ], Response::HTTP_SEE_OTHER);
  112.         }
  113.         return $this->render('dons/new.html.twig', [
  114.             'don'  => $don,
  115.             'form' => $form,
  116.         ]);
  117.     }
  118.     #[Route('/voir/{id}'name'app_dons_show'methods: ['GET'])]
  119.     public function show(Dons $don): Response
  120.     {
  121.         return $this->render('dons/show.html.twig', [
  122.             'don' => $don,
  123.         ]);
  124.     }
  125. }