<?php
namespace App\Http\Controller\Api\V2\User;
use App\Database\Domain\Entity\User\NotRegisteredEmail;
use App\Database\Domain\Repository\NotRegisteredEmailRepository;
use App\Database\Domain\Repository\UserRepository;
use App\Infrastructure\Util\Identifier;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/api/v2/does-user-exist", methods={"GET"})
*/
class DoesUserExistAction extends AbstractController
{
public function __invoke(
UserRepository $userRepository,
Request $request,
EntityManagerInterface $em,
NotRegisteredEmailRepository $notRegisteredEmailRepository
) {
// TODO fix unneeded queries --> move to single method
$user = $userRepository->findByEmail($request->query->get('email', '123'));
if (null === $user) {
$notRegistered = $notRegisteredEmailRepository->findOneBy(['email' => $request->query->get('email')]);
if (null === $notRegistered) {
$notRegistered = new NotRegisteredEmail(Identifier::generate(), $request->query->get('email'));
$em->persist($notRegistered);
$em->flush();
}
}
return $user ? $this->json(['exist' => true]) : $this->json(['exist' => false]);
}
}