src/Controller/DefaultController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Pimcore\Db;
  4. use DOMDocument;
  5. use EmailReceiver\Listing;
  6. use GuzzleHttp\TransferStats;
  7. use Pimcore\Log\ApplicationLogger;
  8. use GuzzleHttp\Client as HttpClient;
  9. use Pimcore\Model\DataObject\Service;
  10. use GuzzleHttp\Exception\GuzzleException;
  11. use App\Service\CustomNotificationService;
  12. use Pimcore\Controller\FrontendController;
  13. use Pimcore\Model\DataObject\EmailReceiver;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Contracts\Translation\TranslatorInterface;
  18. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  19. class DefaultController extends FrontendController
  20. {
  21.     /**
  22.      * @param Request $request
  23.      * @return Response
  24.      */
  25.     public function __construct(
  26.         protected TranslatorInterface $translator,
  27.         private ApplicationLogger $logger,
  28.         private CustomNotificationService $customNotificationService,
  29.     ) {
  30.         header('Content-Type: application/json; charset=UTF-8');
  31.         header("Access-Control-Allow-Origin: *");
  32.     }
  33.     public function defaultAction(Request $request): Response
  34.     {
  35.         return $this->render('default/default.html.twig');
  36.     }
  37.     /**
  38.      * @param Request $request
  39.      * @return Response
  40.      */
  41.     public function workshopEmailAction(Request $request): Response
  42.     {
  43.         $token $request->get("token");
  44.         return $this->render('email/workshop_email_template.html.twig', ["token" => $token]);
  45.     }
  46.     public function reportEmailAction(Request $request): Response
  47.     {
  48.         // $token = $request->get("token");
  49.         $paramsBag = [
  50.             'document' => $this->document
  51.         ];
  52.         foreach ($request->attributes as $key => $value) {
  53.             $paramsBag[$key] = $value;
  54.         }
  55.         $paramsBag array_merge($request->request->all(), $request->query->all(), $paramsBag);
  56.         return $this->render('email/report_email_template.html.twig'$paramsBag);
  57.     }
  58.     /**
  59.      * @Route("/get-image/{token}", name="get_image")
  60.      */
  61.     public function getImage(Request $request)
  62.     {
  63.         $token $request->get("token");
  64.         $decoded_token=base64_decode($token);
  65.         $emailReceiver=EmailReceiver::getByEmail($decoded_token,true);
  66.         if(!$emailReceiver instanceof EmailReceiver){
  67.             $emailReceiver=new EmailReceiver();
  68.             $emailReceiver->setParent(Service::createFolderByPath('/Other/EmailReceiver/')); 
  69.             $emailReceiver->setKey(\Pimcore\Model\Element\Service::getValidKey($decoded_token time(),'object'));
  70.             $emailReceiver->setEmail($decoded_token);
  71.             $emailReceiver->setEmailOpen('yes');
  72.             $emailReceiver->setNoOfClicks(1);
  73.             $emailReceiver->setPublished(true);
  74.            
  75.         }
  76.         else{
  77.             $emailReceiver->setEmailOpen('yes');
  78.             $no_of_clicks=$emailReceiver->getNoOfClicks()?? 0;
  79.             $emailReceiver->setNoOfClicks($no_of_clicks 1);
  80.         }
  81.     $emailReceiver->save();
  82.     $image '/var/www/html/project_ncm_alertportal/public/assets/images/welcome.png';
  83.         $imageData = @file_get_contents($image);
  84.         if ($imageData !== false) {
  85.             // Create a response with the image data.
  86.             $response = new Response($imageData);
  87.             // Set the Content-Type header based on the image format (e.g., image/jpeg).
  88.             $imageInfo getimagesizefromstring($imageData);
  89.             if ($imageInfo !== false) {
  90.                 $response->headers->set('Content-Type'$imageInfo['mime']);
  91.             }
  92.             // Optionally, set response headers such as Cache-Control.
  93.             $response->headers->set('Cache-Control''public, max-age=3600');
  94.             //return $response;
  95.         }
  96.     return $response;        
  97.       
  98.     }
  99.     /**
  100.      * @Route("/generate-xml", name="generate_xml")
  101.      */
  102.     public function generateXml(Request $request): Response
  103.     {
  104.         // Replace this with your database logic to fetch data
  105.         $doc = new DOMDocument('1.0''UTF-8');
  106.         $doc->formatOutput true;
  107.         $root $doc->createElement('alert');
  108.         $doc->appendChild($root);
  109.         foreach ($data as $row) {
  110.             $info $doc->createElement('info');
  111.             // Populate the <info> element with data from the entity
  112.             $event $doc->createElement('event'$row->getEvent());
  113.             $urgency $doc->createElement('urgency'$row->getUrgency());
  114.             $severity $doc->createElement('severity'$row->getSeverity());
  115.             $certainty $doc->createElement('certainty'$row->getCertainty());
  116.             $info->appendChild($event);
  117.             $info->appendChild($urgency);
  118.             $info->appendChild($severity);
  119.             $info->appendChild($certainty);
  120.             $root->appendChild($info);
  121.         }
  122.         $response = new Response();
  123.         $response->headers->set('Content-Type''text/xml');
  124.         $response->headers->set('Content-Disposition'$response->headers->makeDisposition(
  125.             ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  126.             'alert.xml'
  127.         ));
  128.         $response->setContent($doc->saveXML());
  129.         return $response;
  130.     }
  131.     /**
  132.      * @Route("/list-meteomatics-permissions", name = "list_meteomatics_permissions")
  133.      */
  134.     public function meteomaticsPremissionAction(Request $request)
  135.     {
  136.         $db Db::get();
  137.         $permissions $db->fetchAll("SELECT * FROM `policy`");
  138.         return $this->render('Permission/meteomaticsPermissionView.html.twig', [
  139.             "permissions" => $permissions
  140.         ]);
  141.     }
  142.       /**
  143.      * @Route("/unsubscribe/advanced-custom-notification", name="unsubscribe_advanced_custom_notification")
  144.      */
  145.     public function unsubscribeAdvCustomNotification(Request $request)
  146.     {
  147.         try {
  148.             if ($request->query->has('token')) {
  149.                 if ($request->get('token')) {
  150.                     $token $request->get('token');
  151.                     $customer \Pimcore\Model\DataObject\Customer::getByUnSubscribeCustomNotificationToken($tokentrue);
  152.                     if ($customer instanceof \Pimcore\Model\DataObject\Customer) {
  153.                         $result $this->customNotificationService->unSubscribeNotification($customer$this->translator);
  154.                         return $this->json($result);
  155.                     }
  156.                 }
  157.             }
  158.             return $this->json(["success" => false"message" => "You have already unsubscribed the custom notification"]);
  159.         } catch (\Exception $ex) {
  160.             $this->logger->error($ex->getMessage());
  161.             return $this->json(['success' => false'message' => $this->translator->trans(USER_ERROR_MESSAGE)]);
  162.         }
  163.     }
  164.     public function genericMailAction(Request $request)
  165.     {
  166.         $paramsBag = [
  167.             'document' => $this->document
  168.         ];
  169.         foreach ($request->attributes as $key => $value) {
  170.             $paramsBag[$key] = $value;
  171.         }
  172.         $paramsBag array_merge($request->request->all(), $request->query->all(), $paramsBag);
  173.         return $this->render('default/generic_mail.html.twig'$paramsBag);
  174.     }
  175. }