Advertisement
grifix

Code review test

May 23rd, 2025
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.35 KB | None | 0 0
  1. <?php
  2.  
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use App\Entity\User;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Contracts\HttpClient\HttpClientInterface;
  10.  
  11. class UserController extends AbstractController
  12. {
  13.     private $entityManager;
  14.     private $mailer;
  15.  
  16.     public function __construct(
  17.         EntityManagerInterface $entityManager,
  18.         \Swift_Mailer $mailer,
  19.         HttpClientInterface $httpClient
  20.     )
  21.     {
  22.         $this->entityManager = $entityManager;
  23.         $this->mailer = $mailer;
  24.         $this->httpClient = $httpClient;
  25.     }
  26.  
  27.     /**
  28.      * @Route("/user/create", name="create_user", methods={"POST"})
  29.      */
  30.     public function createUser(Request $request): Response
  31.     {
  32.         $username = $request->request->get('username');
  33.         $email = $request->request->get('email');
  34.         $age = $request->request->get('age');
  35.  
  36.         $response = $this->httpClient->request(
  37.             'GET',
  38.             'https://crm-api.com/api/get_limits',
  39.         );
  40.         $userDailyLimit = $response->toArray()['user_daily_limit'];
  41.  
  42.         if($this->entityManager->getRepository(User::class)->count(['createdAt' => new \DateTime('today')]) >= $userDailyLimit) {
  43.             return new Response('Daily limit reached', 500);
  44.         }
  45.  
  46.         if($age < 18) {
  47.             return new Response('User must be at least 18 years old', 404);
  48.         }
  49.  
  50.         $user = new User();
  51.         $user->setUsername($username);
  52.         $user->setEmail($email);
  53.  
  54.         $this->entityManager->persist($user);
  55.         $this->entityManager->flush();
  56.  
  57.         $message = (new \Swift_Message('Welcome'))
  58.             ->setFrom('[email protected]')
  59.             ->setTo($user->getEmail())
  60.             ->setBody("Welcome to the site, {$user->getUsername()}");
  61.  
  62.         $this->mailer->send($message);
  63.  
  64.         //create client for user in CRM
  65.         $this->httpClient->request(
  66.             'POST',
  67.             'https://crm-api.com/api/clients',
  68.             [
  69.                 'json' => [
  70.                     'name' => $username,
  71.                     'email' => $email,
  72.                 ],
  73.             ]
  74.         );
  75.  
  76.         return new Response('User created');
  77.     }
  78. }
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement