src/Controller/RegistrationProfessionalController.php line 66

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\RegistrationProfessionalFormType;
  4. use App\Repository\UserRepository;
  5. use App\Security\LoginFormAuthenticator;
  6. use App\Service\BankInfoManage;
  7. use App\Service\CalculNotation;
  8. use App\Service\LockManage;
  9. use App\Service\MangoPayService;
  10. use App\Service\ProfilePictureManage;
  11. use App\Service\StatisticManagement;
  12. use DateTime;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  18. use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
  19. use App\Entity\User;
  20. use App\Service\SireneApiRequest;
  21. class RegistrationProfessionalController extends AbstractController
  22. {
  23.     private UserPasswordHasherInterface $passwdEncoder;
  24.     private UserAuthenticatorInterface $guardHandler;
  25.     private LoginFormAuthenticator $loginFormAuth;
  26.     private MangoPayService $mangopay;
  27.     private CalculNotation $notation;
  28.     private BankInfoManage $bankInfo;
  29.     private ProfilePictureManage $profilePicture;
  30.     private LockManage $lockManage;
  31.     private StatisticManagement $statistic;
  32.     private SireneApiRequest $sireneApi;
  33.     private UserRepository $userRep;
  34.     public function __construct(
  35.         UserPasswordHasherInterface $passwdEncoder,
  36.         UserAuthenticatorInterface $guardHandler,
  37.         LoginFormAuthenticator $loginFormAuth,
  38.         MangoPayService $mangopay,
  39.         CalculNotation $notation,
  40.         BankInfoManage $bankInfo,
  41.         ProfilePictureManage $profilePicture,
  42.         LockManage $lockManage,
  43.         StatisticManagement $statistic,
  44.         SireneApiRequest $sireneApi,
  45.         UserRepository $userRep
  46.     ) {
  47.         $this->passwdEncoder $passwdEncoder;
  48.         $this->guardHandler $guardHandler;
  49.         $this->loginFormAuth $loginFormAuth;
  50.         $this->mangopay $mangopay;
  51.         $this->notation $notation;
  52.         $this->bankInfo $bankInfo;
  53.         $this->profilePicture $profilePicture;
  54.         $this->lockManage $lockManage;
  55.         $this->statistic $statistic;
  56.         $this->sireneApi $sireneApi;
  57.         $this->userRep $userRep;
  58.     }
  59.     #[Route('/register/prestataire'name'app_register_prestataire')]
  60.     public function register(Request $request): Response
  61.     {
  62.         $user = new User();
  63.         $form $this->createForm(RegistrationProfessionalFormType::class, $user);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             $checkMail $this->userRep->findBy(['email' => $form['email']->getData()]);
  67.             if (!$checkMail || empty($checkMail)) {
  68.                 if ($this->sireneApi->checkSirenNewUser(
  69.                     $form->get('compagny')->get('identificationNumberCompagny')->getData()
  70.                 )) {
  71.                     // encode the plain password
  72.                     $checkFirstUser $this->userRep->findAll();
  73.                     if (!$checkFirstUser) {
  74.                         $roles = ['ROLE_SUPER_ADMIN'];
  75.                     } else {
  76.                         $roles = ['ROLE_FOURNISSEUR'];
  77.                     }
  78.                     $user->setRoles($roles);
  79.                     $user->setUsername($form['email']->getData());
  80.                     $user->setPassword(
  81.                         $this->passwdEncoder->hashPassword(
  82.                             $user,
  83.                             $form->get('plainPassword')->getData()
  84.                         )
  85.                     );
  86.                     $registrationDate = new DateTime(date('d-m-Y H:i:s'));
  87.                     $user->setRegistrationDate($registrationDate);
  88.                     $user->setCompagny($form->get('compagny')->getData());
  89.                     $user->getCompagny()->setDomainActivity($form->get('compagny')->get('domainActivity')->getData());
  90.                     $user->getCompagny()->setJob($form->get('compagny')->get('job')->getData());
  91.                     $user->getCompagny()->setUser($user);
  92.                     $user->getCompagny()->setLegalType($form->get('compagny')->get('typeBusiness')->getData());
  93.                     $user->getCompagny()->setPourcentageFees(10);
  94.                     $this->userRep->add($usertrue);
  95.                     $this->bankInfo->createUserBank($user);
  96.                     $this->statistic->createStatisticUser($user);
  97.                     $this->mangopay->setMangoProfessionnalUser($user);
  98.                     $this->profilePicture->createUserProfilePicture($user);
  99.                     $this->profilePicture->createUserProfessionnalProfilePicture($user);
  100.                     $this->notation->createNotation($user);
  101.                     $this->lockManage->initiateStatut($user);
  102.                     return $this->guardHandler->authenticateUser(
  103.                         $user,
  104.                         $this->loginFormAuth,
  105.                         $request
  106.                     );
  107.                 } else {
  108.                     $type 'warning';
  109.                     $message "Siren inconnu auprès de l'insee";
  110.                     $this->addFlash($type$message);
  111.                     return $this->redirectToRoute('app_register_prestataire');
  112.                 }
  113.             } else {
  114.                 $type 'warning';
  115.                 $message "Adresse mail déjà utilisée par un autre utilisateur";
  116.                 $this->addFlash($type$message);
  117.                 return $this->redirectToRoute('app_register_prestataire');
  118.             }
  119.         }
  120.         return $this->render('registration/registerProfessional.html.twig', [
  121.             'registrationForm' => $form->createView(),
  122.         ]);
  123.     }
  124. }