src/Controller/SmsController.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Sms;
  4. use App\Entity\WayBill;
  5. use App\Messages\SMSMessage;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Doctrine\Persistence\ObjectManager;
  8. use Psr\Log\LoggerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Messenger\MessageBusInterface;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class SmsController extends AbstractController {
  15. private ObjectManager $em;
  16. private LoggerInterface $logger;
  17. public function __construct(ManagerRegistry $managerRegistry, LoggerInterface $logger, MessageBusInterface $messageBus){
  18. $this->logger = $logger;
  19. $this->em = $managerRegistry->getManager();
  20. $this->messageBus = $messageBus;
  21. }
  22. #[Route('/sms/callback', name: 'app_sms_smscallback')]
  23. function smsCallback(Request $request): Response {
  24. $messageId = $request->get('id');
  25. $status = $request->get('status');
  26. if($messageId){
  27. $sms = $this->em->getRepository(Sms::class)->findOneBy([
  28. 'messageId' => $messageId
  29. ]);
  30. $sms->setStatus($status);
  31. $this->em->flush();
  32. }
  33. return new Response('OK', Response::HTTP_OK);
  34. }
  35. #[Route('/sms/send_unsent', name: 'app_sms_smscallback_')]
  36. function smsUnsent(Request $request): Response
  37. {
  38. $failedDeliveryNotifications = $this->em->getRepository(WayBill::class)->findFailedSmsByInserficient();
  39. $smses =[];
  40. foreach ($failedDeliveryNotifications as $index => $failedDeliveryNotification) {
  41. $this->messageBus->dispatch(new SMSMessage($failedDeliveryNotification['id']));
  42. }
  43. $smsMessages = json_encode($smses);
  44. return new Response($smsMessages, Response::HTTP_OK);
  45. }
  46. }