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. else{
  76. $emailReceiver->setEmailOpen('yes');
  77. $no_of_clicks=$emailReceiver->getNoOfClicks()?? 0;
  78. $emailReceiver->setNoOfClicks($no_of_clicks + 1);
  79. }
  80. $emailReceiver->save();
  81. $image = '/var/www/html/project_ncm_alertportal/public/assets/images/welcome.png';
  82. $imageData = @file_get_contents($image);
  83. if ($imageData !== false) {
  84. // Create a response with the image data.
  85. $response = new Response($imageData);
  86. // Set the Content-Type header based on the image format (e.g., image/jpeg).
  87. $imageInfo = getimagesizefromstring($imageData);
  88. if ($imageInfo !== false) {
  89. $response->headers->set('Content-Type', $imageInfo['mime']);
  90. }
  91. // Optionally, set response headers such as Cache-Control.
  92. $response->headers->set('Cache-Control', 'public, max-age=3600');
  93. //return $response;
  94. }
  95. return $response;
  96. }
  97. /**
  98. * @Route("/generate-xml", name="generate_xml")
  99. */
  100. public function generateXml(Request $request): Response
  101. {
  102. // Replace this with your database logic to fetch data
  103. $doc = new DOMDocument('1.0', 'UTF-8');
  104. $doc->formatOutput = true;
  105. $root = $doc->createElement('alert');
  106. $doc->appendChild($root);
  107. foreach ($data as $row) {
  108. $info = $doc->createElement('info');
  109. // Populate the <info> element with data from the entity
  110. $event = $doc->createElement('event', $row->getEvent());
  111. $urgency = $doc->createElement('urgency', $row->getUrgency());
  112. $severity = $doc->createElement('severity', $row->getSeverity());
  113. $certainty = $doc->createElement('certainty', $row->getCertainty());
  114. $info->appendChild($event);
  115. $info->appendChild($urgency);
  116. $info->appendChild($severity);
  117. $info->appendChild($certainty);
  118. $root->appendChild($info);
  119. }
  120. $response = new Response();
  121. $response->headers->set('Content-Type', 'text/xml');
  122. $response->headers->set('Content-Disposition', $response->headers->makeDisposition(
  123. ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  124. 'alert.xml'
  125. ));
  126. $response->setContent($doc->saveXML());
  127. return $response;
  128. }
  129. /**
  130. * @Route("/list-meteomatics-permissions", name = "list_meteomatics_permissions")
  131. */
  132. public function meteomaticsPremissionAction(Request $request)
  133. {
  134. $db = Db::get();
  135. $permissions = $db->fetchAll("SELECT * FROM `policy`");
  136. return $this->render('Permission/meteomaticsPermissionView.html.twig', [
  137. "permissions" => $permissions
  138. ]);
  139. }
  140. /**
  141. * @Route("/unsubscribe/advanced-custom-notification", name="unsubscribe_advanced_custom_notification")
  142. */
  143. public function unsubscribeAdvCustomNotification(Request $request)
  144. {
  145. try {
  146. if ($request->query->has('token')) {
  147. if ($request->get('token')) {
  148. $token = $request->get('token');
  149. $customer = \Pimcore\Model\DataObject\Customer::getByUnSubscribeCustomNotificationToken($token, true);
  150. if ($customer instanceof \Pimcore\Model\DataObject\Customer) {
  151. $result = $this->customNotificationService->unSubscribeNotification($customer, $this->translator);
  152. return $this->json($result);
  153. }
  154. }
  155. }
  156. return $this->json(["success" => false, "message" => "You have already unsubscribed the custom notification"]);
  157. } catch (\Exception $ex) {
  158. $this->logger->error($ex->getMessage());
  159. return $this->json(['success' => false, 'message' => $this->translator->trans(USER_ERROR_MESSAGE)]);
  160. }
  161. }
  162. public function genericMailAction(Request $request)
  163. {
  164. $paramsBag = [
  165. 'document' => $this->document
  166. ];
  167. foreach ($request->attributes as $key => $value) {
  168. $paramsBag[$key] = $value;
  169. }
  170. $paramsBag = array_merge($request->request->all(), $request->query->all(), $paramsBag);
  171. return $this->render('default/generic_mail.html.twig', $paramsBag);
  172. }
  173. }