src/Log/Service/RequestFactory.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Log\Service;
  3. use App\Log\Entity\Request;
  4. use App\Security\Entity\User;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  7. class RequestFactory {
  8.     /**
  9.      * @var EntityManagerInterface
  10.      */
  11.     protected EntityManagerInterface $entityManager;
  12.     /**
  13.      * @var TokenStorageInterface
  14.      */
  15.     protected TokenStorageInterface $tokenStorage;
  16.     public function __construct(EntityManagerInterface $logEntityManagerTokenStorageInterface $tokenStorage)
  17.     {
  18.         $this->entityManager $logEntityManager;
  19.         $this->tokenStorage $tokenStorage;
  20.     }
  21.     /**]
  22.      * @param string $url
  23.      * @param array $requestData
  24.      * @param string|null $ip
  25.      * @return Request
  26.      */
  27.     public function create(string $url, array $requestDatastring $ip null): Request
  28.     {
  29.         $request = new Request();
  30.         $request
  31.             ->setUrl($url)
  32.             ->setRequestData($requestData)
  33.             ->setIp($ip)
  34.         ;
  35.         $user $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
  36.         if ($user instanceof User && $this->tokenStorage->getToken()){
  37.             $request->setUser($this->entityManager->getRepository(User::class)->find($user->getId()));
  38.         }
  39.         $this->entityManager->persist($request);
  40.         $this->entityManager->flush($request);
  41.         return $request;
  42.     }
  43.     /**
  44.      * @param Request $request
  45.      * @param $responseData
  46.      * @param $statusCode
  47.      * @param bool $complete
  48.      */
  49.     public function update(Request $request$responseData$statusCodebool $complete true): void
  50.     {
  51.         if(!$this->entityManager->isOpen()) {
  52.             // if entity manager is closed, do not try to update and send another exception
  53.             return;
  54.         }
  55.         $request
  56.             ->setResponseData($responseData ?: [])
  57.             ->setStatusCode($statusCode)
  58.             ->setFinishAt()
  59.             ->setComplete($complete);
  60.         $this->entityManager->persist($request);
  61.         $this->entityManager->flush($request);
  62.     }
  63.     /**
  64.      * @param Request $request
  65.      * @param $requestData
  66.      */
  67.     public function updateRequestData(Request $request$requestData): void
  68.     {
  69.         if(!$this->entityManager->isOpen()) {
  70.             // if entity manager is closed, do not try to update and send another exception
  71.             return;
  72.         }
  73.         $request
  74.             ->setRequestData($requestData);
  75.         $this->entityManager->persist($request);
  76.         $this->entityManager->flush($request);
  77.     }
  78. }