Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use App\Entity\User;
- use Doctrine\ORM\EntityManagerInterface;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Contracts\HttpClient\HttpClientInterface;
- class UserController extends AbstractController
- {
- private $entityManager;
- private $mailer;
- public function __construct(
- EntityManagerInterface $entityManager,
- \Swift_Mailer $mailer,
- HttpClientInterface $httpClient
- )
- {
- $this->entityManager = $entityManager;
- $this->mailer = $mailer;
- $this->httpClient = $httpClient;
- }
- /**
- * @Route("/user/create", name="create_user", methods={"POST"})
- */
- public function createUser(Request $request): Response
- {
- $username = $request->request->get('username');
- $email = $request->request->get('email');
- $age = $request->request->get('age');
- $response = $this->httpClient->request(
- 'GET',
- 'https://crm-api.com/api/get_limits',
- );
- $userDailyLimit = $response->toArray()['user_daily_limit'];
- if($this->entityManager->getRepository(User::class)->count(['createdAt' => new \DateTime('today')]) >= $userDailyLimit) {
- return new Response('Daily limit reached', 500);
- }
- if($age < 18) {
- return new Response('User must be at least 18 years old', 404);
- }
- $user = new User();
- $user->setUsername($username);
- $user->setEmail($email);
- $this->entityManager->persist($user);
- $this->entityManager->flush();
- $message = (new \Swift_Message('Welcome'))
- ->setTo($user->getEmail())
- ->setBody("Welcome to the site, {$user->getUsername()}");
- $this->mailer->send($message);
- //create client for user in CRM
- $this->httpClient->request(
- 'POST',
- 'https://crm-api.com/api/clients',
- [
- 'json' => [
- 'name' => $username,
- 'email' => $email,
- ],
- ]
- );
- return new Response('User created');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement