src/Controller/KuendigungController.php line 32
<?phpnamespace App\Controller;use App\Entity\Auswahllisten;use App\Entity\Links;use App\Entity\Mailtexte;use App\Entity\Mandanten;use App\Entity\Portalsettings;use App\Entity\Settings;use App\Entity\Texte;use App\Entity\Unterkonten;use App\Entity\User;use Doctrine\ORM\EntityManagerInterface;use Doctrine\Persistence\ManagerRegistry;use Symfony\Bridge\Twig\Mime\BodyRenderer;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\HttpFoundation\Session\Session;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Symfony\Component\Routing\Annotation\Route;use App\Controller\WebserviceController;use Twig\Environment;use Twig\Loader\FilesystemLoader;class KuendigungController extends AbstractController{#[Route('/kuendigung/', name: 'kuendigung')]public function kuendigung(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, UserPasswordHasherInterface $userPasswordHasher){$session = new Session();$iMandant = null;if($session->get('mandant')){$iMandant = $session->get('mandant');}// Settings$oZeigeKuendigung = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "kuendigung"]);// Auswahllisten$aAuswahllisten = $doctrine->getRepository(Auswahllisten::class)->findBy(["type" => "kuendigung"]);$aTemp = array();foreach($aAuswahllisten as $iKey => $oElement){if(!array_key_exists($oElement->getMetakey(),$aTemp)){$aTemp[$oElement->getMetakey()] = $oElement;}}$aAuswahllisten = $aTemp;$oInhaltsController = new InhalteController();$aTexte = $oInhaltsController->getTexte($doctrine);$oLinks = new LinksController();$sImpressum = $oLinks->getImpressum($doctrine, NULL);$sDatenschutz = $oLinks->getDatenschutz($doctrine, NULL);$sBarrierefreiheit = $oLinks->getBarrierefreiheit($doctrine, NULL);$sHilfe = $oLinks->getHilfe($doctrine, NULL);// Status Kündigungsbutton anzeigen / nicht anzeigen$sZeigeKuendigung = "";if($oZeigeKuendigung){$sZeigeKuendigung = $oZeigeKuendigung->getMetavalue();}$session->set('kuendigung', $sZeigeKuendigung);$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";$sFehlerMeldung = "Bei der Übermittlung Ihrer Kündigung ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.";if($request->get('rvnummer')){$oWebservice = new WebserviceController();$sAnrede = "Sehr geehrte Damen und Herren";$oAnrede = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "Standardanrede"]);if($oAnrede){$sAnrede = $oAnrede->getMetavalue();}$sRVNummer = $request->get('rvnummer');$sVertragsnr = $request->get('vertragsnummer');$bKorrekterVertrag = false;$aProduktCodes = array();if($this->getUser()){try{$aMandanten = $doctrine->getRepository(Mandanten::class)->findAll();$oWebservice = new WebserviceController();$aBusinessDaten = null;if($aMandanten){$oTest = "";foreach($aMandanten as $iKey => $oMandant){if($session->get('mandant') && $session->get('mandant') != $oMandant->getId()){continue;}$oClient = $oWebservice->getClient($doctrine,$oMandant->getWsmandant());$aResult = $oClient->GetBusinessPartnersByNo(array("p_No" => $session->get('kundennummer'),"v_ExportBusinessPartners" => 1));if($aResult->return_value){$oTest = $oClient;$aBusinessDaten = $aResult;break;}}$oClient = $oTest;}else{$oClient = $oWebservice->getClient($doctrine);$aResult = $oClient->GetBusinessPartnersByNo(array("p_No" => $session->get('kundennummer'),"v_ExportBusinessPartners" => 1));if($aResult->return_value){$aBusinessDaten = $aResult;}}if($aBusinessDaten){$aProduktCodes = array();if (is_array($aBusinessDaten->v_ExportBusinessPartners->BusinessPartner)){$oBusinessPartner = $aBusinessDaten->v_ExportBusinessPartners->BusinessPartner[0];foreach ($oBusinessPartner->BaseContracts->BaseContract as $iKey => $oContract){if($oContract->No == $sRVNummer){if(is_array($oContract->Contracts->Contract)){foreach ($oContract->Contracts->Contract as $iKey2 => $oContract2){if($oContract2->No == $sVertragsnr){$aProduktCodes[] = $oContract2->ProductTariffCode;$bKorrekterVertrag = true;}}}else{if($oContract->Contracts->Contract->No == $sVertragsnr){$aProduktCodes[] = $oContract->Contracts->Contract->ProductTariffCode;$bKorrekterVertrag = true;}}}}}else{$oBusinessPartner = $aBusinessDaten->v_ExportBusinessPartners->BusinessPartner;if(is_array($oBusinessPartner->BaseContracts->BaseContract)){foreach ($oBusinessPartner->BaseContracts->BaseContract as $iKey => $oContract){if($oContract->No == $sRVNummer){if(is_array($oContract->Contracts->Contract)){foreach ($oContract->Contracts->Contract as $iKey2 => $oContract2){if($oContract2->No == $sVertragsnr){$aProduktCodes[] = $oContract2->ProductTariffCode;$bKorrekterVertrag = true;}}}else{if($oContract->Contracts->Contract->No == $sVertragsnr){$aProduktCodes[] = $oContract->Contracts->Contract->ProductTariffCode;$bKorrekterVertrag = true;}}}}}else{if($oBusinessPartner->BaseContracts->BaseContract->No == $sRVNummer){if(is_array($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract)){foreach ($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract as $iKey2 => $oContract2){if($oContract2->No == $sVertragsnr){$aProduktCodes[] = $oContract2->ProductTariffCode;$bKorrekterVertrag = true;}}}else{if($oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract->No == $sVertragsnr){$aProduktCodes[] = $oBusinessPartner->BaseContracts->BaseContract->Contracts->Contract->ProductTariffCode;$bKorrekterVertrag = true;}}}}}}else{$this->addFlash('error',$sFehlerMeldung);return $this->redirectToRoute('vertraege');}}catch(\Exception $exception){#$bKorrekterVertrag = true;$this->addFlash('error',$sFehlerMeldung);return $this->redirectToRoute('vertraege');}}else{$bKorrekterVertrag = true;}$sKuendigungText = "";$sProduktCodes = "";if($aProduktCodes){$sProduktCodes = implode(',', $aProduktCodes);}if($bKorrekterVertrag){// GV auslösen$aTempData = array('AML_RVERTRAG' => $sRVNummer,'AML_VERTRAG' => $sVertragsnr,'AML_PRODUKT' => $sProduktCodes,'AML_LIEFERENDE' => date("d.m.Y",strtotime($request->get('datum'))),'AML_REASON' => $request->get('kuendigung'),'AML_EMAIL' => $request->get('kemail'),);if(!array_key_exists("rahmenvertrag_begriff",$aTexte)){$sKuendigungText .= "Rahmenvertrag: ".$sRVNummer."<br>";}else{$sKuendigungText .= $aTexte["rahmenvertrag_begriff"].": ".$sRVNummer."<br>";}$sKuendigungText .= "Vertrag: ".$sVertragsnr."<br>";$sKuendigungText .= "Kündigungsdatum: ".date("d.m.Y",strtotime($request->get('datum')))."<br>";$sArt = "ordentlich";if(!empty($request->get('kuendigung'))){$sKuendigungText .= "Grund: ".$request->get('kuendigung')."<br>";$sArt = "außerordentlich";}$sKuendigungText .= "Art: ".$sArt."<br>";$sKuendigungText .= "E-Mail Adresse: ".$request->get('kemail')."<br>";// Prüfen, ob die Nummern zusammen gehörenif($this->getUser()){try{$aResult = $oWebservice->sendData($doctrine, "MELD_AB_LIEF",$session->get('kundennummer'), $sRVNummer, $aTempData);if(!$aResult->return_value){if($aResult->v_ErrorMessage){$sFehlerMeldung = $aResult->v_ErrorMessage;}$this->addFlash('error',$sFehlerMeldung);return $this->redirectToRoute('vertraege');}}catch(\Exception $exception){$this->addFlash('error',$sFehlerMeldung);return $this->redirectToRoute('vertraege');}}$sStyle = "";$sFile = "css/email.css";if(file_exists($sFile)){$sStyle = file_get_contents($sFile);}$sFile = "css/customer.css";if(file_exists($sFile)){$sStyle .= file_get_contents($sFile);}// Mailsignatur$oInhalte = new InhalteController();$sSignatur = $oInhalte->getMailSignatur($doctrine, NULL);$sTo = $request->get('kemail');if(!filter_var($sTo, FILTER_VALIDATE_EMAIL)){$this->addFlash('error','Die eingegebene E-Mail-Adresse ist ungültig.');if($this->getUser()){return $this->redirectToRoute('vertraege');}return $this->redirectToRoute('kuendigung');}$oAbsender = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "kontakt_mail"]);$sMail = 'portal.support@msu-solutions.de';if($oAbsender){$sMail = $oAbsender->getMetavalue();}// Mail an den Kunden$sText = "";$sSubject = "Kündigung";$oText = $doctrine->getRepository(Mailtexte::class)->findOneBy(["metakey" => "termination_to_customer"]);$sGrund = "";$sArt = "ordentlich";if($request->get('kuendigung')){$sGrund = $request->get('kuendigung');$sArt = "außerordentlich";}if ($oText){$sText = $oText->getInhalt();$sText = str_replace("#anrede#",$sAnrede,$sText);$sText = str_replace("#datum#",date("d.m.Y") . " um " . date("H:i") ." Uhr" ,$sText);$sText = str_replace("#rahmenvertrag#",$sRVNummer,$sText);$sText = str_replace("#vertrag#",$sVertragsnr,$sText);$sText = str_replace("#kündigungsdatum#",date("d.m.Y",strtotime($request->get('datum'))),$sText);$sText = str_replace("#grund#",$sGrund,$sText);$sText = str_replace("#art#",$sArt,$sText);$sText = str_replace("#email#",$request->get('kemail'),$sText);$sSubject = $oText->getBetreff();}$email = (new TemplatedEmail())->from($sMail)->to($sTo)->subject($sSubject)// path of the Twig template to render->htmlTemplate('emails/kuendigung.html.twig')// pass variables (name => value) to the template->context(["anrede" => $sAnrede,"text" => $sText,"style" => $sStyle,"signatur" => $sSignatur]);$loader = new FilesystemLoader('../templates/');$twigEnv = new Environment($loader);$twigBodyRenderer = new BodyRenderer($twigEnv);$twigBodyRenderer->render($email);$oMailController = new MailController();$oMailer = $oMailController->getMailer($doctrine);try{$oMailer->send($email);$this->addFlash('neu',$sErfolgsmeldung);}catch(\Exception $exception){$this->addFlash('error',"Die Mail konnte leider nicht versendet werden.");}// Mail an das Portal$sText = "";$sSubject = "Kündigung";$oText = $doctrine->getRepository(Mailtexte::class)->findOneBy(["metakey" => "termination_to_service"]);if ($oText){$sText = $oText->getInhalt();$sText = str_replace("#anrede#",$sAnrede,$sText);$sText = str_replace("#datum#",date("d.m.Y"),$sText);$sText = str_replace("#rahmenvertrag#",$sRVNummer,$sText);$sText = str_replace("#vertrag#",$sVertragsnr,$sText);$sText = str_replace("#kündigungsdatum#",date("d.m.Y",strtotime($request->get('datum'))),$sText);$sText = str_replace("#grund#",$sGrund,$sText);$sText = str_replace("#art#",$sArt,$sText);$sText = str_replace("#email#",$request->get('kemail'),$sText);$sSubject = "Kopie: ".$oText->getBetreff();}$email = (new TemplatedEmail())->from($sMail)->to($sMail)->subject($sSubject)// path of the Twig template to render->htmlTemplate('emails/kuendigung.html.twig')// pass variables (name => value) to the template->context(["anrede" => $sAnrede,"text" => $sText,"style" => $sStyle,"signatur" => $sSignatur]);$loader = new FilesystemLoader('../templates/');$twigEnv = new Environment($loader);$twigBodyRenderer = new BodyRenderer($twigEnv);$twigBodyRenderer->render($email);try{$oMailer->send($email);}catch(\Exception $exception){}$session = new Session();$session->set('kuendigungtext',$sKuendigungText);}}if ($this->getUser()){return $this->redirectToRoute('vertraege');}return $this->render('login/kuendigung.html.twig',['impressum' => $sImpressum,'datenschutz' => $sDatenschutz,'barrierefreiheit' => $sBarrierefreiheit,'hilfe' => $sHilfe,'texte' => $aTexte,'auswahllisten' => $aAuswahllisten,"kuendigung" => 1]);}}