src/Controller/KuendigungController.php line 32

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Auswahllisten;
  4. use App\Entity\Links;
  5. use App\Entity\Mailtexte;
  6. use App\Entity\Mandanten;
  7. use App\Entity\Portalsettings;
  8. use App\Entity\Settings;
  9. use App\Entity\Texte;
  10. use App\Entity\Unterkonten;
  11. use App\Entity\User;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Doctrine\Persistence\ManagerRegistry;
  14. use Symfony\Bridge\Twig\Mime\BodyRenderer;
  15. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  16. use Symfony\Component\HttpFoundation\Session\Session;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\Mailer\MailerInterface;
  21. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use App\Controller\WebserviceController;
  24. use Twig\Environment;
  25. use Twig\Loader\FilesystemLoader;
  26. class KuendigungController extends AbstractController
  27. {
  28.     #[Route('/kuendigung/'name'kuendigung')]
  29.     public function kuendigung(Request $requestManagerRegistry $doctrineEntityManagerInterface $entityManager,  UserPasswordHasherInterface $userPasswordHasher)
  30.     {
  31.         $session                 = new Session();
  32.         $iMandant       null;
  33.         
  34.         if($session->get('mandant')) 
  35.         {
  36.             $iMandant $session->get('mandant');
  37.         }
  38.         // Settings
  39.         $oZeigeKuendigung        $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "kuendigung"]);
  40.         
  41.         // Auswahllisten
  42.         $aAuswahllisten          $doctrine->getRepository(Auswahllisten::class)->findBy(["type" => "kuendigung"]);
  43.         $aTemp = array();
  44.         foreach($aAuswahllisten as $iKey => $oElement)
  45.         {
  46.             if(!array_key_exists($oElement->getMetakey(),$aTemp))
  47.             {
  48.                 $aTemp[$oElement->getMetakey()] = $oElement;
  49.             }
  50.         }
  51.         $aAuswahllisten $aTemp;
  52.         $oInhaltsController = new InhalteController();
  53.         $aTexte             $oInhaltsController->getTexte($doctrine);
  54.         $oLinks             = new LinksController();
  55.         $sImpressum         $oLinks->getImpressum($doctrineNULL);
  56.         $sDatenschutz       $oLinks->getDatenschutz($doctrineNULL);
  57.         $sBarrierefreiheit  $oLinks->getBarrierefreiheit($doctrineNULL);
  58.         $sHilfe             $oLinks->getHilfe($doctrineNULL);
  59.         // Status Kündigungsbutton anzeigen / nicht anzeigen
  60.         $sZeigeKuendigung "";
  61.         if($oZeigeKuendigung)
  62.         {
  63.             $sZeigeKuendigung $oZeigeKuendigung->getMetavalue();
  64.         }
  65.         $session->set('kuendigung'$sZeigeKuendigung);
  66.         $sErfolgsmeldung    "Sie erhalten in Kürze eine E-Mail mit der Kündigungsbestätigung. Bitte prüfen Sie auch den Posteingang in Ihrem Spam-Ordner";
  67.         $sFehlerMeldung     "Bei der Übermittlung Ihrer Kündigung ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.";
  68.         if($request->get('rvnummer'))
  69.         {
  70.             $oWebservice     = new WebserviceController();
  71.             $sAnrede "Sehr geehrte Damen und Herren";
  72.             $oAnrede $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "Standardanrede"]);
  73.             if($oAnrede)
  74.             {
  75.                 $sAnrede $oAnrede->getMetavalue();
  76.             }
  77.             $sRVNummer          $request->get('rvnummer');
  78.             $sVertragsnr        $request->get('vertragsnummer');
  79.             $bKorrekterVertrag  false;
  80.             $aProduktCodes      = array();
  81.             if($this->getUser())
  82.             {
  83.                 try
  84.                 {
  85.                     $aMandanten     $doctrine->getRepository(Mandanten::class)->findAll();
  86.                     $oWebservice    = new WebserviceController();
  87.                     $aBusinessDaten null;
  88.                     if($aMandanten)
  89.                     {
  90.                         $oTest "";
  91.                         foreach($aMandanten as $iKey => $oMandant)
  92.                         {
  93.                             if($session->get('mandant') && $session->get('mandant') != $oMandant->getId())
  94.                             {
  95.                                 continue;
  96.                             }
  97.                             $oClient $oWebservice->getClient($doctrine,$oMandant->getWsmandant());
  98.                             $aResult $oClient->GetBusinessPartnersByNo(array(
  99.                                 "p_No" => $session->get('kundennummer'),
  100.                                 "v_ExportBusinessPartners" => 1
  101.                             ));
  102.                             if($aResult->return_value)
  103.                             {
  104.                                 $oTest $oClient;
  105.                                 $aBusinessDaten $aResult;
  106.                                 break;
  107.                             }
  108.                         }
  109.                         $oClient $oTest;
  110.                     }
  111.                     else
  112.                     {
  113.                         $oClient $oWebservice->getClient($doctrine);
  114.                         $aResult $oClient->GetBusinessPartnersByNo(array(
  115.                             "p_No" => $session->get('kundennummer'),
  116.                             "v_ExportBusinessPartners" => 1
  117.                         ));
  118.                         if($aResult->return_value)
  119.                         {
  120.                             $aBusinessDaten $aResult;
  121.                         }
  122.                     }
  123.                     if($aBusinessDaten)
  124.                     {
  125.                         $aProduktCodes = array();
  126.                         if (is_array($aBusinessDaten->v_ExportBusinessPartners->BusinessPartner))
  127.                         {
  128.                             $oBusinessPartner $aBusinessDaten->v_ExportBusinessPartners->BusinessPartner[0];
  129.     
  130.                             foreach ($oBusinessPartner->BaseContracts->BaseContract as $iKey => $oContract)
  131.                             {
  132.                                 if($oContract->No == $sRVNummer)
  133.                                 {
  134.                                     if(is_array($oContract->Contracts->Contract))
  135.                                     {
  136.                                         foreach ($oContract->Contracts->Contract as $iKey2 => $oContract2)
  137.                                         {
  138.                                             if($oContract2->No == $sVertragsnr)
  139.                                             {
  140.                                                 $aProduktCodes[] = $oContract2->ProductTariffCode;
  141.                                                 $bKorrekterVertrag true;
  142.                                             }
  143.                                         }
  144.                                     }
  145.                                     else
  146.                                     {
  147.                                         if($oContract->Contracts->Contract->No == $sVertragsnr)
  148.                                         {
  149.                                             $aProduktCodes[] = $oContract->Contracts->Contract->ProductTariffCode;
  150.                                             $bKorrekterVertrag true;
  151.                                         }
  152.                                     }
  153.                                 }
  154.                             }
  155.                         }
  156.                         else
  157.                         {
  158.                             $oBusinessPartner $aBusinessDaten->v_ExportBusinessPartners->BusinessPartner;
  159.     
  160.                             if(is_array($oBusinessPartner->BaseContracts->BaseContract))
  161.                             {
  162.                                 foreach ($oBusinessPartner->BaseContracts->BaseContract as $iKey => $oContract)
  163.                                 {
  164.                                     if($oContract->No == $sRVNummer)
  165.                                     {
  166.                                         if(is_array($oContract->Contracts->Contract))
  167.                                         {
  168.                                             foreach ($oContract->Contracts->Contract as $iKey2 => $oContract2)
  169.                                             {
  170.                                                 if($oContract2->No == $sVertragsnr)
  171.                                                 {
  172.                                                     $aProduktCodes[] = $oContract2->ProductTariffCode;
  173.                                                     $bKorrekterVertrag true;
  174.                                                 }
  175.                                             }
  176.                                         }
  177.                                         else
  178.                                         {
  179.                                             if($oContract->Contracts->Contract->No == $sVertragsnr)
  180.                                             {
  181.                                                 $aProduktCodes[] = $oContract->Contracts->Contract->ProductTariffCode;
  182.                                                 $bKorrekterVertrag true;
  183.                                             }
  184.                                         }
  185.                                     }
  186.                                 }
  187.                             }
  188.                             else
  189.                             {
  190.                                 if($oBusinessPartner->BaseContracts->BaseContract->No == $sRVNummer)
  191.                                 {
  192.                                     if(is_array($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract))
  193.                                     {
  194.                                         foreach ($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract as $iKey2 => $oContract2)
  195.                                         {
  196.                                             if($oContract2->No == $sVertragsnr)
  197.                                             {
  198.                                                 $aProduktCodes[] = $oContract2->ProductTariffCode;
  199.                                                 $bKorrekterVertrag true;
  200.                                             }
  201.                                         }
  202.                                     }
  203.                                     else
  204.                                     {
  205.                                         if($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract->No == $sVertragsnr)
  206.                                         {
  207.                                             $aProduktCodes[] = $oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract->ProductTariffCode;
  208.                                             $bKorrekterVertrag true;
  209.                                         }
  210.                                     }
  211.                                 }
  212.                             }
  213.                         }
  214.                     }
  215.                     else
  216.                     {
  217.                         $this->addFlash(
  218.                             'error',
  219.                             $sFehlerMeldung
  220.                         );
  221.     
  222.                         return $this->redirectToRoute('vertraege');
  223.                     }
  224.                 }
  225.                 catch(\Exception $exception)
  226.                 {
  227.                     #$bKorrekterVertrag = true;
  228.                     $this->addFlash(
  229.                         'error',
  230.                         $sFehlerMeldung
  231.                     );
  232.                     return $this->redirectToRoute('vertraege');
  233.                 }
  234.             }
  235.             else
  236.             {
  237.                 $bKorrekterVertrag  true;
  238.             }
  239.             $sKuendigungText "";
  240.             $sProduktCodes "";
  241.             if($aProduktCodes)
  242.             {
  243.                 $sProduktCodes implode(','$aProduktCodes);
  244.             }
  245.             if($bKorrekterVertrag)
  246.             {
  247.                 // GV auslösen
  248.                 $aTempData = array(
  249.                     'AML_RVERTRAG' => $sRVNummer,
  250.                     'AML_VERTRAG' => $sVertragsnr,
  251.                     'AML_PRODUKT' => $sProduktCodes,
  252.                     'AML_LIEFERENDE' => date("d.m.Y",strtotime($request->get('datum'))),
  253.                     'AML_REASON' => $request->get('kuendigung'),
  254.                     'AML_EMAIL' => $request->get('kemail'),
  255.                 );
  256.                 if(!array_key_exists("rahmenvertrag_begriff",$aTexte))
  257.                 {
  258.                     $sKuendigungText .= "Rahmenvertrag: ".$sRVNummer."<br>";
  259.                 }
  260.                 else
  261.                 {
  262.                     $sKuendigungText .= $aTexte["rahmenvertrag_begriff"].": ".$sRVNummer."<br>";
  263.                 }
  264.                 $sKuendigungText .= "Vertrag: ".$sVertragsnr."<br>";
  265.                 $sKuendigungText .= "Kündigungsdatum: ".date("d.m.Y",strtotime($request->get('datum')))."<br>";
  266.                 $sArt "ordentlich";
  267.                 if(!empty($request->get('kuendigung')))
  268.                 {
  269.                     $sKuendigungText .= "Grund: ".$request->get('kuendigung')."<br>";
  270.                     $sArt "außerordentlich";
  271.                 }
  272.                 $sKuendigungText .= "Art: ".$sArt."<br>";
  273.                 $sKuendigungText .= "E-Mail Adresse: ".$request->get('kemail')."<br>";
  274.                 // Prüfen, ob die Nummern zusammen gehören
  275.                 if($this->getUser())
  276.                 {
  277.                     try
  278.                     {
  279.                         $aResult $oWebservice->sendData($doctrine"MELD_AB_LIEF",$session->get('kundennummer'), $sRVNummer$aTempData);
  280.                         if(!$aResult->return_value)
  281.                         {
  282.                             if($aResult->v_ErrorMessage)
  283.                             {
  284.                                 $sFehlerMeldung $aResult->v_ErrorMessage;
  285.                             }
  286.                             $this->addFlash(
  287.                                 'error',
  288.                                 $sFehlerMeldung
  289.                             );
  290.                             return $this->redirectToRoute('vertraege');
  291.                         }
  292.                     }
  293.                     catch(\Exception $exception)
  294.                     {
  295.                         $this->addFlash(
  296.                             'error',
  297.                             $sFehlerMeldung
  298.                         );
  299.                         return $this->redirectToRoute('vertraege');
  300.                     }
  301.                 }
  302.                 $sStyle      "";
  303.                 $sFile       "css/email.css";
  304.                 if(file_exists($sFile))
  305.                 {
  306.                     $sStyle file_get_contents($sFile);
  307.                 }
  308.                 $sFile      "css/customer.css";
  309.                 if(file_exists($sFile))
  310.                 {
  311.                     $sStyle .= file_get_contents($sFile);
  312.                 }
  313.                 // Mailsignatur
  314.                 $oInhalte  = new InhalteController();
  315.                 $sSignatur $oInhalte->getMailSignatur($doctrineNULL);
  316.                 $sTo $request->get('kemail');
  317.                 
  318.                 if(!filter_var($sToFILTER_VALIDATE_EMAIL)) 
  319.                 {
  320.                     $this->addFlash(
  321.                         'error',
  322.                         'Die eingegebene E-Mail-Adresse ist ungültig.'
  323.                     );
  324.                     if($this->getUser())
  325.                     {
  326.                         return $this->redirectToRoute('vertraege');
  327.                     }
  328.                     return $this->redirectToRoute('kuendigung');
  329.                 }
  330.                 $oAbsender  $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "kontakt_mail"]);
  331.                 $sMail      'portal.support@msu-solutions.de';
  332.                 if($oAbsender)
  333.                 {
  334.                     $sMail $oAbsender->getMetavalue();
  335.                 }
  336.                 // Mail an den Kunden
  337.                 $sText      "";
  338.                 $sSubject   "Kündigung";
  339.                 $oText $doctrine->getRepository(Mailtexte::class)->findOneBy(["metakey" => "termination_to_customer"]);
  340.                 $sGrund "";
  341.                 $sArt   "ordentlich";
  342.                 if($request->get('kuendigung'))
  343.                 {
  344.                     $sGrund $request->get('kuendigung');
  345.                     $sArt   "außerordentlich";
  346.                 }
  347.                 if ($oText)
  348.                 {
  349.                     $sText      $oText->getInhalt();
  350.                     $sText      str_replace("#anrede#",$sAnrede,$sText);
  351.                     $sText      str_replace("#datum#",date("d.m.Y") . " um " date("H:i") ." Uhr" ,$sText);
  352.                     $sText      str_replace("#rahmenvertrag#",$sRVNummer,$sText);
  353.                     $sText      str_replace("#vertrag#",$sVertragsnr,$sText);
  354.                     $sText      str_replace("#kündigungsdatum#",date("d.m.Y",strtotime($request->get('datum'))),$sText);
  355.                     $sText      str_replace("#grund#",$sGrund,$sText);
  356.                     $sText      str_replace("#art#",$sArt,$sText);
  357.                     $sText      str_replace("#email#",$request->get('kemail'),$sText);
  358.                     $sSubject   $oText->getBetreff();
  359.                 }
  360.                 $email = (new TemplatedEmail())
  361.                     ->from($sMail)
  362.                     ->to($sTo)
  363.                     ->subject($sSubject)
  364.                     // path of the Twig template to render
  365.                     ->htmlTemplate('emails/kuendigung.html.twig')
  366.                     // pass variables (name => value) to the template
  367.                     ->context([
  368.                         "anrede" => $sAnrede,
  369.                         "text" => $sText,
  370.                         "style" => $sStyle,
  371.                         "signatur" => $sSignatur
  372.                     ]);
  373.                 $loader = new FilesystemLoader('../templates/');
  374.                 $twigEnv = new Environment($loader);
  375.                 $twigBodyRenderer = new BodyRenderer($twigEnv);
  376.                 $twigBodyRenderer->render($email);
  377.                 
  378.                 $oMailController = new MailController();
  379.                 $oMailer         $oMailController->getMailer($doctrine);
  380.                 try
  381.                 {
  382.                     $oMailer->send($email);
  383.                     $this->addFlash(
  384.                         'neu',
  385.                         $sErfolgsmeldung
  386.                     );
  387.                 }
  388.                 catch(\Exception $exception)
  389.                 {
  390.                     $this->addFlash(
  391.                         'error',
  392.                         "Die Mail konnte leider nicht versendet werden."
  393.                     );
  394.                 }
  395.                 // Mail an das Portal
  396.                 $sText      "";
  397.                 $sSubject   "Kündigung";
  398.                 $oText $doctrine->getRepository(Mailtexte::class)->findOneBy(["metakey" => "termination_to_service"]);
  399.                 if ($oText)
  400.                 {
  401.                     $sText      $oText->getInhalt();
  402.                     $sText      str_replace("#anrede#",$sAnrede,$sText);
  403.                     $sText      str_replace("#datum#",date("d.m.Y"),$sText);
  404.                     $sText      str_replace("#rahmenvertrag#",$sRVNummer,$sText);
  405.                     $sText      str_replace("#vertrag#",$sVertragsnr,$sText);
  406.                     $sText      str_replace("#kündigungsdatum#",date("d.m.Y",strtotime($request->get('datum'))),$sText);
  407.                     $sText      str_replace("#grund#",$sGrund,$sText);
  408.                     $sText      str_replace("#art#",$sArt,$sText);
  409.                     $sText      str_replace("#email#",$request->get('kemail'),$sText);
  410.                     $sSubject   "Kopie: ".$oText->getBetreff();
  411.                 }
  412.                 $email = (new TemplatedEmail())
  413.                     ->from($sMail)
  414.                     ->to($sMail)
  415.                     ->subject($sSubject)
  416.                     // path of the Twig template to render
  417.                     ->htmlTemplate('emails/kuendigung.html.twig')
  418.                     // pass variables (name => value) to the template
  419.                     ->context([
  420.                         "anrede" => $sAnrede,
  421.                         "text" => $sText,
  422.                         "style" => $sStyle,
  423.                         "signatur" => $sSignatur
  424.                     ]);
  425.                 $loader = new FilesystemLoader('../templates/');
  426.                 $twigEnv = new Environment($loader);
  427.                 $twigBodyRenderer = new BodyRenderer($twigEnv);
  428.                 $twigBodyRenderer->render($email);
  429.                 try
  430.                 {
  431.                     $oMailer->send($email);
  432.                 }
  433.                 catch(\Exception $exception)
  434.                 {
  435.                     
  436.                 }
  437.                 $session = new Session();
  438.                 $session->set('kuendigungtext',$sKuendigungText);
  439.             }
  440.         }
  441.         if ($this->getUser())
  442.         {
  443.             return $this->redirectToRoute('vertraege');
  444.         }
  445.         return $this->render('login/kuendigung.html.twig',[
  446.             'impressum'         => $sImpressum
  447.             'datenschutz'       => $sDatenschutz,
  448.             'barrierefreiheit'  => $sBarrierefreiheit
  449.             'hilfe'             => $sHilfe,
  450.             'texte'             => $aTexte
  451.             'auswahllisten'     => $aAuswahllisten
  452.             "kuendigung"        => 1
  453.         ]);
  454.     }
  455. }