vendor/uvdesk/mailbox-component/Controller/MailboxChannelXHR.php line 131

Open in your IDE?
  1. <?php
  2. namespace Webkul\UVDesk\MailboxBundle\Controller;
  3. use Symfony\Component\HttpFoundation\Request;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpFoundation\JsonResponse;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Webkul\UVDesk\MailboxBundle\Utils\MailboxConfiguration;
  8. use Webkul\UVDesk\MailboxBundle\Services\MailboxService;
  9. use Symfony\Contracts\Translation\TranslatorInterface;
  10. use Symfony\Component\HttpKernel\KernelInterface;
  11. class MailboxChannelXHR extends AbstractController
  12. {
  13.     public function loadMailboxesXHR(Request $requestMailboxService $mailboxService)
  14.     {
  15.         $mailboxConfiguration $mailboxService->parseMailboxConfigurations();
  16.         $defaultMailbox $mailboxConfiguration->getDefaultMailbox();
  17.         $collection array_map(function ($mailbox) use ($defaultMailbox) {
  18.             return [
  19.                 'id' => $mailbox->getId(),
  20.                 'name' => $mailbox->getName(),
  21.                 'isEnabled' => $mailbox->getIsEnabled(),
  22.                 'isDefault' => !empty($defaultMailbox) && $defaultMailbox->getId() == $mailbox->getId(),
  23.                 'isEmailDeliveryDisabled' => $mailbox->getIsEmailDeliveryDisabled() ? $mailbox->getIsEmailDeliveryDisabled() : false,
  24.             ];
  25.         }, array_values($mailboxConfiguration->getMailboxes()));
  26.         return new JsonResponse($collection ?? []);
  27.     }
  28.     public function removeMailboxConfiguration($idRequest $requestMailboxService $mailboxServiceTranslatorInterface $translator)
  29.     {
  30.         $mailbox null;
  31.         $mailboxConfiguration $mailboxService->parseMailboxConfigurations();
  32.         foreach ($mailboxConfiguration->getMailboxes() as $configuredMailbox) {
  33.             if ($configuredMailbox->getId() == $id) {
  34.                 $mailbox $configuredMailbox;
  35.                 break;
  36.             }
  37.         }
  38.         if (empty($mailbox)) {
  39.             return new JsonResponse([
  40.                 'alertClass' => 'danger',
  41.                 'alertMessage' => "No mailbox configuration was found for id '$id'.",
  42.             ], 404);
  43.         }
  44.         $updatedMailboxConfiguration = new MailboxConfiguration();
  45.         foreach ($mailboxConfiguration->getMailboxes() as $configuredMailbox) {
  46.             if ($configuredMailbox->getId() == $id) {
  47.                 continue;
  48.             }
  49.             $updatedMailboxConfiguration->addMailbox($configuredMailbox);
  50.         }
  51.         file_put_contents($mailboxService->getPathToConfigurationFile(), (string) $updatedMailboxConfiguration);
  52.         return new JsonResponse([
  53.             'alertClass' => 'success',
  54.             'alertMessage' => $translator->trans('Mailbox configuration removed successfully.'),
  55.         ]);
  56.     }
  57.     public function processMailXHR(Request $requestMailboxService $mailboxService)
  58.     {
  59.         if ("POST" != $request->getMethod()) {
  60.             return new JsonResponse([
  61.                 'success' => false
  62.                 'message' => 'Request not supported.'
  63.             ], 500);
  64.         } else if (null == $request->get('email')) {
  65.             return new JsonResponse([
  66.                 'success' => false
  67.                 'message' => 'Missing required email data in request content.'
  68.             ], 500);
  69.         }
  70.         try {
  71.             $processedThread $mailboxService->processMail($request->get('email'));
  72.         } catch (\Exception $e) {
  73.             return new JsonResponse([
  74.                 'success' => false
  75.                 'message' => $e->getMessage()
  76.             ], 500);
  77.         }
  78.         $responseMessage $processedThread['message'];
  79.         if (!empty($processedThread['content']['from'])) {
  80.             $responseMessage "Received email from <info>" $processedThread['content']['from']. "</info>. " $responseMessage;
  81.         }
  82.         if (!empty($processedThread['content']['ticket']) && !empty($processedThread['content']['thread'])) {
  83.             $responseMessage .= " <comment>[tickets/" $processedThread['content']['ticket'] . "/#" $processedThread['content']['ticket'] . "]</comment>";
  84.         } else if (!empty($processedThread['content']['ticket'])) {
  85.             $responseMessage .= " <comment>[tickets/" $processedThread['content']['ticket'] . "]</comment>";
  86.         }
  87.         return new JsonResponse([
  88.             'success' => true
  89.             'message' => $responseMessage
  90.         ]);
  91.     }
  92.     public function processOutlookMailXHR(Request $requestMailboxService $mailboxService)
  93.     {
  94.         $email $request->get('email') ?? $request->toArray()['email'];
  95.         
  96.         if ("POST" != $request->getMethod()) {
  97.             return new JsonResponse([
  98.                 'success' => false
  99.                 'message' => 'Request not supported.'
  100.             ], 500);
  101.         } else if (null == $email) {
  102.             return new JsonResponse([
  103.                 'success' => false
  104.                 'message' => 'Missing required email data in request content.'
  105.             ], 500);
  106.         }
  107.         
  108.         try {
  109.             $processedThread $mailboxService->processOutlookMail($email);
  110.         } catch (\Exception $e) {
  111.             return new JsonResponse([
  112.                 'success' => false
  113.                 'message' => $e->getMessage(), 
  114.                 'params' => $email
  115.             ], 500);
  116.         }
  117.         $responseMessage $processedThread['message'];
  118.         if (!empty($processedThread['content']['from'])) {
  119.             $responseMessage "Received email from <info>" $processedThread['content']['from']. "</info>. " $responseMessage;
  120.         }
  121.         if (!empty($processedThread['content']['ticket']) && !empty($processedThread['content']['thread'])) {
  122.             $responseMessage .= " <comment>[tickets/" $processedThread['content']['ticket'] . "/#" $processedThread['content']['ticket'] . "]</comment>";
  123.         } else if (!empty($processedThread['content']['ticket'])) {
  124.             $responseMessage .= " <comment>[tickets/" $processedThread['content']['ticket'] . "]</comment>";
  125.         }
  126.         return new JsonResponse([
  127.             'success' => true
  128.             'message' => $responseMessage
  129.         ]);
  130.     }
  131. }