<?php
namespace Czech\Controller;
use App\Entity\Central\Client\Client;
use App\Entity\Central\User\User;
use App\Entity\Client\User\UserData;
use App\Service\AppManager;
use Czech\Form\Type\RegisterType;
use Czech\Model\RegisterModel;
use Czech\Service\MailerManager;
use Czech\Service\RegisterManager;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
class RegisterController extends AbstractController
{
public function index(Request $request, RegisterManager $registerManager, MailerManager $mailerManager, AppManager $appManager)
{
if ($this->getUser()) {
return $this->redirectToRoute('czech_homepage');
}
$registerModel = new RegisterModel();
$form = $this->createForm(RegisterType::class, $registerModel);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
try {
$registerManager->registerClient($registerModel);
$user = $appManager->getRepository(User::class)->findOneBy(['username' => $registerModel->email]);
if ($user->getClient() instanceof Client) {
$appManager->setClient($user->getClient());
}
$userData = $appManager->getRepository(UserData::class)->findOneBy(['user' => $user->getId()]);
$userEmail = $user->getUserName();
$user = $userData->getFirstName();
$mailerManager->sendWelcome($userEmail, $user);
return $this->redirectToRoute('czech_login');
} catch (\Exception $exception) {
throw $exception;
}
}
return $this->render('czech/register/index.html.twig', ['form' => $form->createView()]);
}
}