src/Controller/TarifrechnerController.php line 31
<?phpnamespace App\Controller;use App\Entity\Auswahllisten;use App\Entity\Links;use App\Entity\Mailtexte;use App\Entity\Portalsettings;use App\Entity\Settings;use App\Entity\Texte;use App\Entity\User;use App\Entity\Warenkorb;use App\Service\Utilities;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;use Doctrine\ORM\EntityManagerInterface;use Doctrine\Persistence\ManagerRegistry;use Exception;use Symfony\Bridge\Twig\Mime\BodyRenderer;use Symfony\Bridge\Twig\Mime\TemplatedEmail;use Symfony\Component\HttpFoundation\Session\Session;use Twig\Environment;use Twig\Loader\FilesystemLoader;class TarifrechnerController extends AbstractController{#[Route('/tarifrechner', name: 'app_tarifrechner')]public function index(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, Utilities $utilities): Response{// Tarifwahl$iStep = 1;$session = new Session();$oWebsercice = new WebserviceController();$oClient = $oWebsercice->getClient($doctrine);// Logos$oLogo = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "logo"]);$oLogoGraustufen = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "logo-graustufen"]);$oLogoSchwarzWeiss = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "logo-schwarzweiss"]);$oFavicon = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "favicon"]);// Texte$aTexte = $doctrine->getRepository(Texte::class)->findAll();$aProdukte = array();$aRequestData = array();$aError = array();$aTemp = array();$aWarenkorb = array();$aTarifInfo = array();$aProdukteStrom = array();$aProdukteGas = array();$bWarenkorbExists = false;$sSparte = null;$sKundentyp = null;$sJahresverbrauch = null;$iPersonen = null;if ($oLogo){$session->set('logo', $oLogo->getMetavalue());}else{$session->set('logo', '');}if($oLogoGraustufen){$session->set('logo-graustufen', $oLogoGraustufen->getMetavalue());}else{$session->set('logo-graustufen', '');}if($oLogoSchwarzWeiss){$session->set('logo-schwarzweiss', $oLogoSchwarzWeiss->getMetavalue());}else{$session->set('logo-schwarzweiss', '');}if($oFavicon && $oFavicon->getMetavalue()){$session->set('favicon', $oFavicon->getMetavalue());}else{$session->set('favicon', '');}$aTemp = array();foreach($aTexte as $iKey => $oText){$aTemp[$oText->getMetakey()] = $oText->getMetavalue();}$oInhaltsController = new InhalteController();$aTexte = $oInhaltsController->getTexte($doctrine);if($session->get('tarifinfo')){$aTarifInfo = $session->get('tarifinfo');}// Fallback Spartenkennung$aSpartenkennung = array("SVV" => "Strom","GVV" => "Gas","WVV" => "Wasser","FWV" => "Fernwärme");// Produktspaten ermitteln$oSpartencodes = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_spatencodes"]);if($oSpartencodes && $oSpartencodes->getMetavalue()){$aSpartenkennung = json_decode($oSpartencodes->getMetavalue(), true);}$sCodeStrom = "SVV";$sCodeGas = "GVV";foreach($aSpartenkennung as $sSpartencode => $sSpartenbezeichnung){if(strtolower($sSpartenbezeichnung) == "strom"){$sCodeStrom = $sSpartencode;}if(strtolower($sSpartenbezeichnung) == "gas"){$sCodeGas = $sSpartencode;}}// Produktgebiet ermitteln (PLZ, Ort, Strasse, Anschlussobjekt)$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_produktgebiet"]);$aProduktgebiet = array("Anschlussobjekt");if($oPortalsettings && $oPortalsettings->getMetavalue()){$aProduktgebiet = str_replace(",", ";", $oPortalsettings->getMetavalue());$aProduktgebiet = explode(";", $aProduktgebiet);}// Text "schon Kunde"$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_bereits_kunde"]);$sTextBereitsKunde = "Sie sind bereits Kunde bei uns und möchten einen weiteren Vertrag abschließen? Dann loggen Sie sich jetzt in Ihr Kundenkonto ein. Dort müssen Sie Ihre persönlichen Daten nicht nochmal eingeben. Wenn Sie noch kein Kundenkonto haben, können Sie sich hier registrieren.";if($oPortalsettings && $oPortalsettings->getMetavalue()){$sTextBereitsKunde = $oPortalsettings->getMetavalue();}// Anzahl Abschläge$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_anzahl_abschlaege"]);$iAnzahlAbschlaege = 12;if($oPortalsettings && $oPortalsettings->getMetavalue()){$iAnzahlAbschlaege = $oPortalsettings->getMetavalue();}// Sortierung Produktsimulation$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_sortierung_simulation"]);$sSortierungProduktsimulation = 'Gesamtsumme';if($oPortalsettings && $oPortalsettings->getMetavalue()){$sSortierungProduktsimulation =$oPortalsettings->getMetavalue();}// Erklärungstext für weniger als 12 Abschläge$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_abschlag_erklaerung"]);$sAbschlagserklaerung = 'Der Abschlag bezieht sich auf eine Dauer von weniger als 12 Monaten';if($oPortalsettings && $oPortalsettings->getMetavalue()){$sAbschlagserklaerung = $oPortalsettings->getMetavalue();}// Gewerbeprodukte nutzen// Wenn 0 wird Text eingeblendet,// ansonsten wird Produktsimulation angezeigt$oGewerbeprodukte = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_gewerbeprodukte"]);$sGewerbeprodukte = "on";if($oGewerbeprodukte && $oGewerbeprodukte->getMetavalue() == "0"){$sGewerbeprodukte = "off";}// Anpassbarer Text für Gewerbekunden$oTextGewerbeprodukte = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_gewerbeprodukte_text"]);// Kontakt E-Mail ermitteln$oKontaktMail = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "email", "metakey" => "kontakt_mail"]);$sTextGewerbeprodukte = "Bitte kontaktieren Sie uns telefonisch oder per E-Mail für ein individuelles Angebot.";if($oKontaktMail && $oKontaktMail->getMetavalue()){$sTextGewerbeprodukte .= '<br><br>E-Mail: <a href=mailto:"'.$oKontaktMail->getMetavalue().'" class="text-primary dark:text-slate-200">' . $oKontaktMail->getMetavalue() . '</a>';}if($oTextGewerbeprodukte && $oTextGewerbeprodukte->getMetavalue()){$sTextGewerbeprodukte = $oTextGewerbeprodukte->getMetavalue();}// Tarifrechner Passwort$oTarifrechnerPasswort = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "tarifrechner_passwort"]);$bTarifrechnerPasswort = false;if($oTarifrechnerPasswort && $oTarifrechnerPasswort->getMetavalue()){$bTarifrechnerPasswort = true;}// Ermitteln der Daten für Einzugsgebiet aus Sessionif($session->get("requestData")){$aRequestData = $session->get("requestData");}if(key_exists('kundentyp', $aRequestData)){$sKundentyp = $aRequestData['kundentyp'];}// Rundungsart für Preise ermitteln$oRundungsart = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_rundungsart"]);// Fallback Rundungsart; wenn nicht anders definiert, auf ganze Cent runden$sRundungsart = "aufrunden";// Mögliche Rundungsarten$aRundungsarten = array("abrunden", "aufrunden", "kaufmännisch");if($oRundungsart && $oRundungsart->getMetavalue()){if(in_array(strtolower($oRundungsart->getMetavalue()), $aRundungsarten)){$sRundungsart = strtolower($oRundungsart->getMetavalue());}}if ($request->getMethod() == "POST" && $request->get('formSend')) {// Daten aus Anfrage werden ermittelt$sJahresverbrauch = $request->get("jahresverbrauch") ? trim($request->get("jahresverbrauch")) : null;$sPlz = $request->get("plz") ? trim($request->get("plz")) : null;$sOrt = $request->get("ort") ? trim($request->get("ort")) : null;$sStrasse = $request->get("strasse") ? trim($request->get("strasse")) : null;$sHausNr = $request->get("hausnr") ? trim($request->get("hausnr")) : null;$sHausNrZusatz = $request->get("hausnrzusatz") ? trim($request->get("hausnrzusatz")) : null;$sSparte = $request->get("sparte") ? trim($request->get("sparte")) : null;$sProduktCode = $request->get("produktcode") ? trim($request->get("produktcode")) : null;$sTarifrechnerPasswort = $request->get("tarifrechner_passwort") ? trim($request->get("tarifrechner_passwort")) : null;$sKundentyp = $request->get("kundentyp") ? trim($request->get("kundentyp")) : $sKundentyp;$iPersonen = $request->get("personen") ? trim($request->get("personen")) : null;$aRequestData['p_Quantity'] = $sJahresverbrauch;$aRequestData['p_PostCode'] = $sPlz;$aRequestData['p_CityName'] = $sOrt;$aRequestData['p_StreetName'] = $sStrasse;$aRequestData['p_HouseNo'] = intval($sHausNr);$aRequestData['p_HouseNumberAddition'] = $sHausNrZusatz;$aRequestData['p_SectorCodes'] = $sSparte;$aRequestData['p_ProductCode'] = $sProduktCode;$aRequestData['p_DistrictName'] = '';$aRequestData['p_Sorting'] = $sSortierungProduktsimulation;$aRequestData['p_ProductTyp'] = 0;$aRequestData['v_ExportProductSimulation'] = 1;$aRequestData['kundentyp'] = $sKundentyp;$aRequestData['personen'] = $iPersonen;try {// Initial-Daten holen$aInitialDataResponse = $oClient->GetInitialData(array("v_InitialData" => 1));// Produkte aus den Initial-Daten ermitteln$aProdukteFromWebService = $aInitialDataResponse->v_InitialData->Products->Product;if($session->get('warenkorb')){$aWarenkorb = $session->get('warenkorb');}// assoziatives Array "productCode => oProduct"foreach ($aProdukteFromWebService as $iKey => $oProdukt) {$aTemp[$oProdukt->ProductCode] = $oProdukt;if ($oProdukt->SectorCodes == $sCodeStrom){$aProdukteStrom[] = $oProdukt->ProductCode;}if ($oProdukt->SectorCodes == $sCodeGas){$aProdukteGas[] = $oProdukt->ProductCode;}}$aAlleProdukte = $aTemp;// Ermitteln aller Produkte (Produktsimulation)$aProduktSimulation = $oClient->GetProductSimulationWithProductTyp($aRequestData)->v_ExportProductSimulation->ProductSimulation;// Struktur anpassenif (is_object($aProduktSimulation)){if (empty($aProduktSimulation->ProductCode)){throw new Exception('Keine Produkte vorhanden!');}else{$aProduktSimulation = array($aProduktSimulation);}}$sEinheit = "kWh";// durch die simulierten Produkte gehen und alle zusätzlichen Informationen ermittelnforeach ($aProduktSimulation as $iIndex => $oProdukt) {if ($sTarifrechnerPasswort && $oProdukt->ProductCode != $sTarifrechnerPasswort){continue;}if(array_key_exists($oProdukt->ProductCode, $aWarenkorb)){continue;}// Arbeitspreis und Grundpreis ermittelnforeach ($oProdukt->Lines->Lines as $iLineIndex => $oLine) {$sPreisOhneSteuern = str_replace(".", "", $oLine->Price);$sPreisOhneSteuern = (float) str_replace(",", ".", $sPreisOhneSteuern);$sPreisMitSteuern = str_replace(".", "", $oLine->PriceWithVAT);$sPreisMitSteuern = (float) str_replace(",", ".", $sPreisMitSteuern);// Arbeitspreisif ($oLine->KindOfPrice == "V1010_VO_ARB"){$aProdukte[$iIndex]['arbeitspreis'] = number_format($sPreisOhneSteuern, 2, ",", ".");$aProdukte[$iIndex]['arbeitspreisMitSteuern'] = number_format($sPreisMitSteuern, 2, ",", ".");}// Grundpreisif ($oLine->KindOfPrice == "V1020_VO_GP"){$aProdukte[$iIndex]['grundpreis'] = number_format($sPreisOhneSteuern, 2, ",", ".");// Preis nach Steuern je Monat$sPreisMitSteuern = $sPreisMitSteuern / 12;switch ($sRundungsart) {case 'kaufmännisch':$sPreisMitSteuern = round($sPreisMitSteuern, 2);break;case 'abrunden':$sPreisMitSteuern = floor($sPreisMitSteuern * 100) / 100;break;default:$sPreisMitSteuern = ceil($sPreisMitSteuern * 100) / 100;break;}$aProdukte[$iIndex]['grundpreisMitSteuern'] = number_format($sPreisMitSteuern, 2, ",", ".");}}// Gesamtpreis ermitteln$sGesamtpreis = str_replace(".", "", $oProdukt->TotalAmount);$sGesamtpreis = (float) str_replace(",", ".", $sGesamtpreis);$aProdukte[$iIndex]['gesamtpreis'] = number_format($sGesamtpreis, 2, ",", ".");// Abschlag pro Monat$sAbschlagMonat = str_replace(".", "", $oProdukt->TotalAmount);$sAbschlagMonat = (float) str_replace(",", ".", $sAbschlagMonat);$sAbschlagMonat = ceil($sAbschlagMonat / $iAnzahlAbschlaege);$aProdukte[$iIndex]['monatlAbschlag'] = number_format($sAbschlagMonat, 0, ",", ".");// Anzahl Abschlaege$aProdukte[$iIndex]['anzahlAbschlaege'] = $iAnzahlAbschlaege;// Abschlagserklärung$aProdukte[$iIndex]['abschlagErklaerung'] = $iAnzahlAbschlaege < 12 ? $sAbschlagserklaerung : '';// Mindestvertragslaufzeit$sVertragslaufzeit = $aAlleProdukte[$oProdukt->ProductCode]->MinimumTerm;$aProdukte[$iIndex]['minimumTerm'] = $sVertragslaufzeit;// Auf Datumsformat YYYY-MM-DD in String prüfenif(preg_match('/^\d{4}-\d{2}-\d{2}$/', $sVertragslaufzeit)){$sVertragslaufzeit = "bis " . date("d.m.Y", strtotime($sVertragslaufzeit));}else{$sVertragslaufzeit = $utilities->convertRuntimeDetails($sVertragslaufzeit);}$aProdukte[$iIndex]['vertragslaufzeit'] = $sVertragslaufzeit;// Verlängerungszeitraum$aProdukte[$iIndex]['verlaengerungszeitraum'] = $utilities->convertRuntimeDetails($aAlleProdukte[$oProdukt->ProductCode]->ExtensionPeriod);$aProdukte[$iIndex]['extensionPeriod'] = $aAlleProdukte[$oProdukt->ProductCode]->ExtensionPeriod;// Kündigungsfrist$aProdukte[$iIndex]['kuendigungsfrist'] = $utilities->convertRuntimeDetails($aAlleProdukte[$oProdukt->ProductCode]->ExtensionNotice);$aProdukte[$iIndex]['extensionNotice'] = $aAlleProdukte[$oProdukt->ProductCode]->ExtensionNotice;// Produktbeschreibung$aProdukte[$iIndex]['produktbeschreibung'] = $oProdukt->ProductDescription;// Produktcode$aProdukte[$iIndex]['produktcode'] = $oProdukt->ProductCode;// Spatencode$aProdukte[$iIndex]['spatencode'] = $aAlleProdukte[$oProdukt->ProductCode]->SectorCodes;// Verlinkung, um Produkt dem Warenkorb hinzuzufügen$aProdukte[$iIndex]['linkWarenkorb'] = "/tarifrechner/tarif-waehlen";if(in_array($oProdukt->ProductCode, $aProdukteGas) || in_array($oProdukt->ProductCode, $aProdukteStrom)){$sEinheit = "kWh";}else{$sEinheit = "m³";}$aTarifInfo[$oProdukt->ProductCode] = array('produktcode' => $oProdukt->ProductCode,'produktname' => $aProdukte[$iIndex]['produktbeschreibung'],'gesamtpreis' => $aProdukte[$iIndex]['gesamtpreis'],'arbeitspreis' => $aProdukte[$iIndex]['arbeitspreisMitSteuern'],'grundpreis' => $aProdukte[$iIndex]['arbeitspreisMitSteuern'],'abschlag' => $aProdukte[$iIndex]['monatlAbschlag'],'vertragslaufzeit' => $aProdukte[$iIndex]['vertragslaufzeit'],'verlaengerungszeitraum' => $aProdukte[$iIndex]['verlaengerungszeitraum'],'kuendigungsfrist' => $aProdukte[$iIndex]['kuendigungsfrist'],'vertragslaufzeit_ws' => $aProdukte[$iIndex]['minimumTerm'],'verlaengerungszeitraum_ws' => $aProdukte[$iIndex]['extensionPeriod'],'kuendigungsfrist_ws' => $aProdukte[$iIndex]['extensionNotice'],'einheit' => $sEinheit);}} catch (Exception $error) {$aError = $error;}}if($aTarifInfo){$session->set('tarifinfo', $aTarifInfo);}// Gibt es einen Warenkorbif (!$this->getUser() && $session->get("warenkorb") && count($session->get("warenkorb")) > 0){// anonymer Nutzer$bWarenkorbExists = true;}elseif($this->getUser() && $doctrine->getRepository(Warenkorb::class)->findBy(["userid" => $this->getUser()->getId()])){// angemeldeter Nutzer$bWarenkorbExists = true;}// Daten zum Einzugsgebiet in die Session speichern$session->set("requestData", $aRequestData);if(key_exists('p_SectorCodes', $aRequestData)){$sSparte = $aRequestData['p_SectorCodes'];}if(key_exists('personen', $aRequestData)){$iPersonen = $aRequestData['personen'];}if(key_exists('p_Quantity', $aRequestData)){$sJahresverbrauch = $aRequestData['p_Quantity'];}$sPlz = "";if(key_exists('p_PostCode', $aRequestData)){$sPlz = $aRequestData['p_PostCode'];}$sOrt = "";if(key_exists('p_CityName', $aRequestData)){$sOrt = $aRequestData['p_CityName'];}$sStrasse = "";if(key_exists('p_StreetName', $aRequestData)){$sStrasse = $aRequestData['p_StreetName'];}$aReturn = array('spartenkennung' => $aSpartenkennung,'einzugsgebiet' => $aProduktgebiet,'produkte' => $aProdukte,'jahresverbrauch' => $sJahresverbrauch,'requestData' => $aRequestData,'error' => $aError,'warenkorbExists' => $bWarenkorbExists,'inputReadonly' => $bWarenkorbExists,'step' => $iStep,'text_bereits_kunde' => $sTextBereitsKunde,'text_gewerbeprodukte' => $sTextGewerbeprodukte,'gewerbeprodukte' => $sGewerbeprodukte,'simulation' => $request->get('formSend') ? true : false,'tarifrechner_passwort' => $bTarifrechnerPasswort,'kundentyp' => $sKundentyp,'sparte' => $sSparte,'personen' => $iPersonen,'plz' => $sPlz,'ort' => $sOrt,'strasse' => $sStrasse);return $this->render('tarifrechner/index.html.twig', $aReturn);}#[Route('/tarifrechner/tarif-waehlen', name: 'app_tarifrechner_tarif_waehlen')]public function tarifwaehlen(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, Utilities $utilities): Response{// Warenkorb$iStep = 2;$session = new Session();$aWarenkorb = array();// bereits ausgewählte Produkte aus der Session holenif(!$session->get('warenkorb')){$session->set('warenkorb', $aWarenkorb);}$aWarenkorb = $session->get('warenkorb');// Prüfen, ob ein Produkt existiert was zum Warenkorb hinzugefügt werden mussif($request->get("produktcode")){if(!key_exists($request->get("produktcode"), $aWarenkorb)){$aWarenkorb[$request->get("produktcode")] = array('spartencode' => $request->get("spartencode") ? trim($request->get("spartencode")) : '','produktcode' => $request->get("produktcode") ? trim($request->get("produktcode")) : '','produktbeschreibung' => $request->get("produktbeschreibung") ? trim($request->get("produktbeschreibung")) : '','jahresverbrauch' => $request->get("jahresverbrauch") ? trim($request->get("jahresverbrauch")) : '','gesamtpreis' => $request->get("gesamtpreis") ? trim($request->get("gesamtpreis")) : '');// Warenkorb speichern$session->set('warenkorb', $aWarenkorb);}}$aReturn = array('produkte' => $aWarenkorb,'step' => $iStep);return $this->render('tarifrechner/tarif-waehlen.html.twig', $aReturn);}#[Route('/tarifrechner/verbrauchsstelle', name: 'app_tarifrechner_verbrauchsstelle')]public function verbrauchsstelle(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, Utilities $utilities): Response{// Verbrauchsstelle$iStep = 3;$session = new Session();$oWebservice = new WebserviceController();$oClient = $oWebservice->getClient($doctrine);$aRequestData = $session->get("requestData");$aWarenkorb = $session->get("warenkorb");$sVerbrauchsstelle = $session->get("verbrauchsstelle");// Fallback Spartenkennung$aSpartenkennung = array("SVV" => "Strom","GVV" => "Gas","WVV" => "Wasser","FWV" => "Fernwärme");// Produktspaten ermitteln$oSpartencodes = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_spatencodes"]);if($oSpartencodes && $oSpartencodes->getMetavalue()){$aSpartenkennung = json_decode($oSpartencodes->getMetavalue(), true);}// Initialdaten ermitteln$aInitialData = $oClient->GetInitialData(array("v_InitialData" => 1));// Lieferanten ermitteln$aLieferanten = $aInitialData->v_InitialData->Presuppliers->Presupplier;// Anordnung und Sortierung der Lieferantenforeach($aLieferanten as $iKey => $oLieferant){foreach($aWarenkorb as $sProduktcode => $aProdukt){$aTemp[] = $oLieferant;}}ksort($aTemp);$aLieferanten = $aTemp;if($request->getMethod() == "POST" && $request->get('formSend')){// speichern der Daten aus "Verbrauchsstelle"$session->set("verbrauchsstelle", $request->request->all());if(!$session->get("verbrauchsstelle")){$aError = array('message' => "Übertragende Daten (Verbrauchsstelle) konnten nicht gespeichert werden!");return $this->render('tarifrechner/verbrauchsstelle.html.twig', $aError);}return $this->redirectToRoute('app_tarifrechner_personendaten');}// Produktgebiet ermitteln (PLZ, Ort, Strasse, Anschlussobjekt)$oPortalsettings = $doctrine->getRepository(Portalsettings::class)->findBy(["type" => "tarifrechner", "metakey" => "tarifrechner_produktgebiet"])[0]->getMetavalue();if($oPortalsettings){$aProduktgebiet = $oPortalsettings;}else{$aProduktgebiet = array("Anschlussobjekt");}$bWarenkorbExists = false;if($aWarenkorb){$bWarenkorbExists = true;}$aReturn = array('requestData' => $aRequestData,'einzugsgebiet' => $aProduktgebiet,'produkte' => $aWarenkorb,'step' => $iStep,'lieferanten' => $aLieferanten,'spartencodes' => $aSpartenkennung,'verbrauchsstelle' => $sVerbrauchsstelle,'warenkorbExists' => $bWarenkorbExists);return $this->render('tarifrechner/verbrauchsstelle.html.twig', $aReturn);}#[Route('/tarifrechner/personendaten', name: 'app_tarifrechner_personendaten')]public function personendaten(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, Utilities $utilities): Response{// Persönliche Daten$iStep = 4;$session = new Session();// Anreden ermitteln$aAnreden = $doctrine->getRepository(Auswahllisten::class)->findBy(["type" => "anreden"]);$aReturn = array();$sKundentyp = null;$aPersonDaten = null;// Kundentyp aus Session ermitteln, sofern vorhandenif($session->get("requestData")){$sKundentyp = $session->get("requestData")['kundentyp'];}// Persönliche Daten aus Session ermitteln, sofern vorhandenif($session->get("personendaten")){$aPersonDaten = $session->get("personendaten");}// Anreden ermittelnif ($aAnreden){$aTemp = array();foreach ($aAnreden as $iIndex => $oOption){$aTemp[$oOption->getMetavalue()] = $oOption->getMetaKey();}$aAnredeOptionen = $aTemp;}else{$aAnredeOptionen = array("HERRN" => "Herr","FRAU" => "Frau","FAMILIE" => "Familie","AN DIE GEB" => "An die Gebrüder","AN DIE GES" => "An die Geschwister","HERR UND F" => "Herr und Frau",);}$aWarenkorb = $session->get("warenkorb");if($request->getMethod() == "POST" && $request->get('formSend')){// Formulardaten ermitteln und in Session speichern$aPersonDaten = $request->request->all();$session->set("personendaten", $aPersonDaten);$aReturn = array('anredeOptionen' => $aAnredeOptionen,'kundentyp' => $sKundentyp,'personDaten' => $aPersonDaten,'produkte' => $aWarenkorb,'step' => $iStep);if(!$session->get("personendaten")){$aError = array('message' => "Übertragende Daten (Persönliche Daten) konnten nicht gespeichert werden!");return $this->render('tarifrechner/persoenlichedaten.html.twig', $aError);}return $this->redirectToRoute('app_tarifrechner_zahlweise');}$bWarenkorbExists = false;if($aWarenkorb){$bWarenkorbExists = true;}$aReturn = array('anredeOptionen' => $aAnredeOptionen,'kundentyp' => $sKundentyp,'personDaten' => $aPersonDaten,'produkte' => $aWarenkorb,'step' => $iStep,'warenkorbExists' => $bWarenkorbExists);return $this->render('tarifrechner/persoenlichedaten.html.twig', $aReturn);}#[Route('/tarifrechner/zahlweise', name: 'app_tarifrechner_zahlweise')]public function zahlweise(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, Utilities $utilities): Response{// Zahlweise$iStep = 5;$session = new Session();$aWarenkorb = $session->get("warenkorb");// Texte$oHinweis = $doctrine->getRepository(Texte::class)->findOneBy(["metakey" => "bankdaten_hinweis"]);$sHinweis = "Ich ermächtige die Stadtwerke Musterstadt (Gläubiger-Identifikationsnummer: MUSTER123, Mandatsreferenz wird separat mitgeteilt), Zahlungen von meinem Konto mittels Lastschrift einzulösen.";if($oHinweis){$sHinweis = $oHinweis->getMetavalue();}$aZahlweise = null;if($session->get('zahlweise')){$aZahlweise = $session->get('zahlweise');}$bWarenkorbExists = false;if($aWarenkorb){$bWarenkorbExists = true;}$aReturn = array('zahlweise' => $aZahlweise,'hinweis' => $sHinweis,'produkte' => $aWarenkorb,'step' => $iStep,'warenkorbExists' => $bWarenkorbExists);if($request->getMethod() == "POST" && $request->get('formSend')){// speichern der Daten aus "Zahlweise"$session->set("zahlweise", $request->request->all());return $this->redirectToRoute('app_tarifrechner_zusammenfassung');}return $this->render('tarifrechner/zahlweise.html.twig', $aReturn);}#[Route('/tarifrechner/zusammenfassung', name: 'app_tarifrechner_zusammenfassung')]public function zusammenfassung(Request $request, ManagerRegistry $doctrine, EntityManagerInterface $entityManager, UserPasswordHasherInterface $userPasswordHasher, Utilities $utilities): Response{// Zusammenfassung$iStep = 6;$session = new Session();$oWebservice = new WebserviceController();$oClient = $oWebservice->getClient($doctrine);$aRequestData = $session->get('requestData');$aWarenkorb = $session->get('warenkorb');$aVerbrauchsstelle = $session->get('verbrauchsstelle');$aPersonenDaten = $session->get('personendaten');$aZahlweise = $session->get('zahlweise');$aResult = array();$aZustellarten = array("Abruf im Kundenportal", "Zustellung per E-Mail");if($aZahlweise){$session->set('zahlweise', $aZahlweise);}$aTarifinfo = null;if($session->get('tarifinfo')){$aTarifinfo = $session->get('tarifinfo');}$oLinks = new LinksController();$sImpressum = $oLinks->getImpressum($doctrine, NULL);$sDatenschutz = $oLinks->getDatenschutz($doctrine, NULL);$sBarrierefreiheit = $oLinks->getBarrierefreiheit($doctrine, NULL);$sWiderruf = $oLinks->getWiderruf($doctrine, NULL);$sHilfe = $oLinks->getHilfe($doctrine, NULL);// falls die Session leer sein sollte...if(!$aWarenkorb || !$aPersonenDaten || !$aVerbrauchsstelle || !$aZahlweise) {$this->addFlash('neu','Diese Sitzung ist abgelaufen. Die Tarifwahl wird neu gestartet.');return $this->redirectToRoute('app_tarifrechner');}// Adresse der Verbrauchsstelle ermitteln$sPlz = "";$sOrt = "";$sOrtsteil = "";$sStrasse = "";$sHausNr = "";$sHausNrZusatz = "";if(key_exists("plz", $aVerbrauchsstelle)){$sPlz = $aVerbrauchsstelle["plz"];}if(key_exists("ort", $aVerbrauchsstelle)){$sOrt = $aVerbrauchsstelle["ort"];}if(key_exists("ortsteil", $aVerbrauchsstelle)){$sOrtsteil = $aVerbrauchsstelle["ortsteil"];}if(key_exists("strasse", $aVerbrauchsstelle)){$sStrasse = $aVerbrauchsstelle["strasse"];}if(key_exists("hausnr", $aVerbrauchsstelle)){$sHausNr = $aVerbrauchsstelle["hausnr"];}if(key_exists("hausnrzusatz", $aVerbrauchsstelle)){$sHausNrZusatz = $aVerbrauchsstelle["hausnrzusatz"];}// Initialdaten ermitteln$aInitialData = $oClient->GetInitialData(array("v_InitialData" => 1));// Lieferanten ermitteln$aLieferanten = $aInitialData->v_InitialData->Presuppliers->Presupplier;$aTemp = array();// Anordnung und Sortierung der Lieferantenforeach($aLieferanten as $iKey => $oLieferant){foreach($aVerbrauchsstelle['bisheriger_lieferant'] as $sProduktcode => $sLieferantencode){if($sLieferantencode == $oLieferant->PresupplierCode){$aTemp[$sProduktcode] = $oLieferant;}}}ksort($aTemp);$aVerbrauchsstelle['vorlieferant'] = $aTemp;$sKundentyp = null;// Geschäftspartnertyp// 1 => privat; 2 => gewerbe$iGPTyp = 1;if($aRequestData && key_exists('kundentyp', $aRequestData)){$sKundentyp = $aRequestData['kundentyp'];if($sKundentyp == "gewerbe"){$iGPTyp = 2;}}// Fallback Spartenkennung$aSpartenkennung = array("SVV" => "Strom","GVV" => "Gas","WVV" => "Wasser","FWV" => "Fernwärme");// Produktspaten ermitteln$oSpartencodes = $doctrine->getRepository(Portalsettings::class)->findOneBy(["type" => "tarifrechner", "metakey" => "tarifrechner_spatencodes"]);if($oSpartencodes && $oSpartencodes->getMetavalue()){$aSpartenkennung = json_decode($oSpartencodes->getMetavalue(), true);}$bWarenkorbExists = false;$aLinks = array();$aLinksTemp = array();$aFilterlist = array();if($aWarenkorb){$bWarenkorbExists = true;foreach($aWarenkorb as $iKey => $aProdukt){$sProduktCode = $aProdukt["produktcode"];$sProduktSparte = $aProdukt["spartencode"];$sProduktbeschreibung = $aProdukt["produktbeschreibung"];$aLinksProduktcode = $doctrine->getRepository(Links::class)->findBy(["produktcode" => $sProduktCode, 'bezeichnung' => $sProduktbeschreibung]);$aLinksSparte = $doctrine->getRepository(Links::class)->findBy(["produktcode" => $sProduktSparte, 'bezeichnung' => $sProduktbeschreibung]);if(!$aLinksProduktcode){$aLinksProduktcode = $doctrine->getRepository(Links::class)->findBy(["produktcode" => $sProduktCode]);}if(!$aLinksSparte){$aLinksSparte = $doctrine->getRepository(Links::class)->findBy(["produktcode" => $sProduktSparte]);}$aLinksTemp = array_merge($aLinksProduktcode, $aLinksSparte);$sLinks = "";foreach($aLinksTemp as $iKey2 => $oLink){if(key_exists($sProduktCode, $aFilterlist)){$bLinkExists = in_array($oLink->getLink(), $aFilterlist[$sProduktCode]);$bFileExists = in_array($oLink->getDatei(), $aFilterlist[$sProduktCode]);if($bLinkExists || $bFileExists){continue;}}$sMandant = "";if($oLink->getMandantenid()){$sMandant = $oLink->getMandantenid() . "/";}if(!empty($oLink->getLink())){$sBezeichnung = $oLink->getLink();if($oLink->getBezeichnung()){$sBezeichnung = $oLink->getBezeichnung();}$sLinks .= "<a href='". $oLink->getLink() . "' target='_blank' class='text-danger'>" . $sBezeichnung . "</a><br>";$aFilterlist[$sProduktCode][] = $oLink->getLink();}if(!empty($oLink->getDatei())){$sBezeichnung = $oLink->getDatei();if($oLink->getBezeichnung()){$sBezeichnung = $oLink->getBezeichnung();}$sLinks .= "<a href='/customerdata/" . $sMandant . $oLink->getDatei() . "' target='_blank' class='text-danger'>" . $sBezeichnung . "</a><br>";$aFilterlist[$sProduktCode][] = $oLink->getDatei();}}$aLinks[$sProduktCode] = $sLinks;}}$aReturn = array('personendaten' => $aPersonenDaten,'verbrauchsstelle' => $aVerbrauchsstelle,'produkte' => $aWarenkorb,'tarifinfo' => $aTarifinfo,'zahlweise' => $aZahlweise,'kundentyp' => $sKundentyp,'step' => $iStep,'warenkorbExists' => $bWarenkorbExists,'links' => $aLinks,'sparten' => $aSpartenkennung,'plz' => $sPlz,'ort' => $sOrt,'ortsteil' => $sOrtsteil,'strasse' => $sStrasse,'hausnr' => $sHausNr,'hausnrzusatz' => $sHausNrZusatz,);if($request->getMethod() == "POST" && $request->get('formSend')){// Gewählte Zustellart speichern$oUser = null;if($aPersonenDaten['email']){$oUser = $doctrine->getRepository(user::class)->findOneBy(["email" => $aPersonenDaten['email']]);}// UseCase 'MELD_NEU_EIN' - Einzug// UseCase 'MELD_NEU_LIEF' - Neuer Lieferant$sUsecase = "MELD_NEU_EIN";if($aVerbrauchsstelle['switch_usecase']){$sUsecase = $aVerbrauchsstelle['switch_usecase'];}$iTransactionId = null;if($aWarenkorb){$aMessages = array();foreach($aWarenkorb as $iKey => $aProdukt){$iCustomerId = '';$sBaseContractNo = '';$sSpartencode = $aProdukt['spartencode'];$sProduktcode = $aProdukt['produktcode'];$aData = array('MS_TSPARTE' => $aSpartenkennung[$sSpartencode],'MS_STRASSE' => $sStrasse,'MS_HAUSNR' => $sHausNr,'MS_HAUSNRZ' => $sHausNrZusatz,'MS_PLZ' => $sPlz,'MS_ORT' => $sOrt,'MS_ORTSTEIL' => $sOrtsteil,'PD_GPTYP' => $iGPTyp,'PD_ANREDE' => $aPersonenDaten['anrede'],'PD_NAME1' => key_exists('name', $aPersonenDaten) ? $aPersonenDaten['name'] : "",'PD_NAME2' => key_exists('name2', $aPersonenDaten) ? $aPersonenDaten['name2'] : "",'PD_VORNAME' => $aPersonenDaten['vorname'],'PD_NACHNAME' => $aPersonenDaten['nachname'],'PD_STRASSE' => $sStrasse,'PD_HAUSNR' => $sHausNr,'PD_HAUSNRZ' => $sHausNrZusatz,'PD_PLZ' => $sPlz,'PD_ORT' => $sOrt,'PD_ORTSTEIL' => $sOrtsteil,'PD_CNTRYREGCODE' => 'DE','PD_EMAIL' => $aPersonenDaten['email'],'PD_TEL' => $aPersonenDaten['telefon'],'PD_MOBIL' => $aPersonenDaten['mobil'],'PD_REGGERICHT' => key_exists('registergericht', $aPersonenDaten) ? $aPersonenDaten['registergericht'] : "",'GD_REGISTERNR' => key_exists('registernr', $aPersonenDaten) ? $aPersonenDaten['registernr'] : "",);// Parameter bei abweichender Rechnungsadresseif (isset($aPersonenDaten['abweichende_rechnungsadresse']) && $aPersonenDaten['abweichende_rechnungsadresse'] == 1){$aData['PD_ABW_GPVORH'] = 1;$aData['PD_ABW_GPTYP'] = 1;$aData['PD_ABW_ANREDE'] = $aPersonenDaten['anrede'];$aData['PD_ABW_NAME1'] = '';$aData['PD_ABW_NAME2'] = '';$aData['PD_ABW_VORNAME'] = $aPersonenDaten['vorname'];$aData['PD_ABW_NACHNAME'] = $aPersonenDaten['nachname'];$aData['PD_ABW_STRASSE'] = $aPersonenDaten['rechnungStrasse'];$aData['PD_ABW_HAUSNR'] = $aPersonenDaten['rechnungHausnummer'];$aData['PD_ABW_HAUSNRZ'] = $aPersonenDaten['rechnungHausnrzusatz'];$aData['PD_ABW_PLZ'] = $aPersonenDaten['rechnungPlz'];$aData['PD_ABW_ORT'] = $aPersonenDaten['rechnungOrt'];$aData['PD_ABW_ORTSTEIL'] = $aPersonenDaten['rechnungOrtsteil'];$aData['PD_ABW_CNTRYREGCODE'] = 'DE';$aData['PD_ABW_EMAIL'] = $aPersonenDaten['email'];}else{$aData['PD_ABW_GPVORH'] = 0;}// Parameter für Zahlungsart// Bei Lastschrift entsprechende Kontoinformationenif($aZahlweise['zahlweise'] && $aZahlweise['zahlweise'] == 'lastschrift'){$aData['BD_PMVORH'] = 0;$aData['BD_ZAHLUNGSART'] = 1;$aData['BD_IBAN'] = $aZahlweise['iban'];$aData['BD_SWIFT'] = $aZahlweise['bic'];// Parameter für abweichenden Kontoinhaberif(isset($aZahlweise['abweichender_kontoinhaber']) && !empty($aZahlweise['abweichender_kontoinhaber'])){$aData['BD_KINHABER'] = $aZahlweise['abweichender_kontoinhaber'];$aData['BD_PMVORH'] = 1;}else{$aData['BD_KINHABER'] = $aPersonenDaten['vorname'] . " " . $aPersonenDaten['nachname'];}}else{$aData['BD_ZAHLUNGSART'] = 2;}$aData['VD_LIEFBEGINN'] = $aVerbrauchsstelle['einzug_datum'];$aData['VD_PRODUKT'] = $aProdukt['produktcode'];$aData['VD_PROGNOSE'] = $aProdukt['jahresverbrauch'];$aData['ZS_ZNUMMER'] = $aVerbrauchsstelle['zaehlernummer'][$sProduktcode];$aData['MS_MALO'] = $aVerbrauchsstelle['marktlokation'][$sProduktcode];if($sUsecase == "MELD_NEU_LIEF"){$iVorliefGekuendigt = false;if(key_exists("check_supplier_terminated", $aVerbrauchsstelle) && key_exists($sProduktcode, $aVerbrauchsstelle['check_supplier_terminated'])){if($aVerbrauchsstelle['check_supplier_terminated'][$sProduktcode] == "on"){$iVorliefGekuendigt = true;}}$aData['VD_LIEFBEGINN'] = $aVerbrauchsstelle['lieferbeginn_datum'];$aData['VORLIEF'] = $aVerbrauchsstelle['bisheriger_lieferant'][$sProduktcode];$aData['VORLIEF_KUENDIGUNG'] = $iVorliefGekuendigt;$aData['VORLIEF_KDNR'] = $aVerbrauchsstelle['kundennummer_lieferant'][$sProduktcode];}$aResult = $oWebservice->sendData($doctrine,$sUsecase,$iCustomerId,$sBaseContractNo,$aData);if(!$aResult->return_value){if(!key_exists("error", $aMessages)){$this->addFlash('error',$aResult->v_ErrorMessage);$aMessages['error'] = $aResult->v_ErrorMessage;}return $this->render('tarifrechner/zusammenfassung.html.twig', $aReturn);}else{if(!$iTransactionId){$iTransactionId = $aResult->v_TransactionID;}if(!key_exists("neu", $aMessages)){$sMessage = "Ihre Bestellung ist bei uns eingegangen. Sie erhalten schnellstmöglich von uns eine Bestätigung. Bei Fragen können Sie uns gerne kontaktieren.";$this->addFlash('neu',$sMessage);$aMessages['neu'] = $sMessage;}}}// Mailversand$oMailer = new MailController();$oMailer = $oMailer->getMailer($doctrine);$oSystem = $doctrine->getRepository(Texte::class)->findOneBy(["metakey" => "login-0"]);$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);if($iGPTyp == 1){$sAnrede = "Sehr geehrte Damen und Herren";$oAnrede = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "Standardanrede"]);if($oAnrede){$sAnrede = $oAnrede->getMetavalue();}}else{// Anrede Firma$sAnrede = "An Firma " . $aPersonenDaten['name'] . " " . $aPersonenDaten['name2'];// Anrede Ansprechpartnerif($aPersonenDaten['nachname']){if($aPersonenDaten['vorname']){$sApVorname = $aPersonenDaten['vorname'] . " ";}$sAnrede = "Sehr geehrte(r) Herr/ Frau " . $sApVorname . $aPersonenDaten['nachname'];}}$oAbsender = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "standardabsender"]);$sMail = 'portal.support@msu-solutions.de';if($oAbsender){$sMail = $oAbsender->getMetavalue();}$oMail = (new TemplatedEmail())->from($sMail)->to($aPersonenDaten['email'])->subject("Übertragung Auftrag")//->text('Auftrag ist bei uns angekommen')// path of the Twig template to render->htmlTemplate('emails/tarifrechner_tarifbeantragung.html.twig')// pass variables (name => value) to the template->context(['anrede' => $sAnrede,'personendaten' => $aPersonenDaten,'verbrauchsstelle' => $aVerbrauchsstelle,'produkte' => $aWarenkorb,'tarifinfo' => $aTarifinfo,"style" => $sStyle,"signatur" => $sSignatur,"system" => $oSystem->getMetavalue(),'kundentyp' => $iGPTyp]);$loader = new FilesystemLoader('../templates/');$twigEnv = new Environment($loader);$twigBodyRenderer = new BodyRenderer($twigEnv);$twigBodyRenderer->render($oMail);try{// Wenn Nuter noch nicht vorhanden und Bestätigungsmail gesendet werden konnte, wird Nutzer angelegt$oMailer->send($oMail);}catch(\Exception $exception){$this->addFlash('error',"Die Mail konnte leider nicht versendet werden.");}if(!$oUser){// Nutzer im Portal anlegenif($aPersonenDaten['email'] && $aPersonenDaten['passwort']){// Token-Lebensdauer und Länge aus den Einstellungen holen$sTokenDuration = 3600;$sTokenLength = 12;$oTokenDuration = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "regist_token_duration"]);$oTokenLength = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "regist_token_length"]);if ($oTokenDuration){$sTokenDuration = (int)$oTokenDuration->getMetavalue();}if ($oTokenLength){$sTokenLength = (int)$oTokenLength->getMetavalue();}if(empty($sTokenDuration)){$sTokenDuration = 3600;}if(empty($sTokenLength)){$sTokenLength = 12;}$sTokenDuration = $sTokenDuration / 60;$sTokenDuration += 120;$sTokenDuration = date("d.m.Y H:i:s", strtotime("+".$sTokenDuration." minutes", time()));// Gewählte Zustellart speichern$sZustellart = $aZustellarten[1];if($request->get('zustellart') == 1){$sZustellart = $aZustellarten[0];}// lokales Nutzerobjekt$user = new User();$user->setEmail($aPersonenDaten['email']);$user->setRoles(array("ROLE_USER"));$user->setZustellart($sZustellart);$user->setAktiv(0);$user->setKundennummer(null);$user->setDatenschutz(1);$user->setTokenduration($sTokenDuration);$user->setMandantenid(null);$user->setTransactionid($iTransactionId);$sHash = bin2hex(random_bytes(intval($sTokenLength)));$user->setHash($sHash);$oKeyLength = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "webid_key_length", "type" => "konto"]);$iLength = $oKeyLength->getMetavalue();$user->setPassword($userPasswordHasher->hashPassword($user,$aPersonenDaten['passwort']));try{$entityManager->persist($user);$entityManager->flush();$aMailvorlage = $doctrine->getRepository(Mailtexte::class)->findAll();$aTemp = array();$sAnrede = "Sehr geehrte Damen und Herren";$oAnrede = $doctrine->getRepository(Settings::class)->findOneBy(["metakey" => "Standardanrede"]);if($oAnrede){$sAnrede = $oAnrede->getMetavalue();}foreach ($aMailvorlage as $iKey => $oSetting){$aTemp[$oSetting->getMetakey()] = $oSetting;}$aMailvorlage = $aTemp;// Mailsignatur$oInhalte = new InhalteController();$sSignatur = $oInhalte->getMailSignatur($doctrine, NULL);// Mailversand$sLink = $_SERVER['SERVER_NAME'];$sAbsender = $aMailvorlage["zugang_beantragung"]->getAbsender();if(empty($sAbsender)){$oAbsender = $doctrine->getRepository(Portalsettings::class)->findOneBy(["metakey" => "standardabsender"]);$sAbsender = 'portal.support@msu-solutions.de';if($oAbsender){$sAbsender = $oAbsender->getMetavalue();}}$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);}$sUrl = '<p class="block text-center"><a href="https://' . $sLink . '/zugang/aktivieren/' . $sHash . '/" class="btn">Zugang aktivieren</a></p>';$oText = $doctrine->getRepository(Mailtexte::class)->findOneBy(["metakey" => "zugang_beantragung"]);$sText = "Anfrage zur Beantragung eines Zugangs";$sSubject = "Anfrage";if($oText){$sSubject = $oText->getBetreff();$sText = $oText->getInhalt();$sText = str_replace("#anrede#",$sAnrede,$sText);$sText = str_replace("#url#",$sUrl,$sText);$sText = str_replace("#tokenduration#",$sTokenDuration,$sText);}$oSystem = $doctrine->getRepository(Texte::class)->findOneBy(["metakey" => "login-0"]);$email = (new TemplatedEmail())->from($sAbsender)->to($aPersonenDaten['email'])->subject($sSubject)// path of the Twig template to render->htmlTemplate('emails/zugang.html.twig')// pass variables (name => value) to the template->context(["context" => $sText,"betreff" => $sSubject,"style" => $sStyle,"signatur" => $sSignatur,"system" => $oSystem->getMetavalue()]);$loader = new FilesystemLoader('../templates/');$twigEnv = new Environment($loader);$twigBodyRenderer = new BodyRenderer($twigEnv);$twigBodyRenderer->render($email);try{$this->addFlash('neu','Ihr Zugang wurde beantragt. Ihnen wurde ein Mail mit einem Link zum Aktivieren des Zugangs zugesendet.');$oMailer->send($email);}catch(\Exception $exception){$this->addFlash('error',"Die Mail konnte leider nicht versendet werden.");}}catch (\Throwable $th){$this->addFlash('error','Beim Anlegen Ihres Kontos ist ein Fehler ausgetreten.');}}}// Session bereinigen// Gibt es einen Warenkorbif($session->get("warenkorb")){$session->set("warenkorb", array());}// Gibt es request-Datenif($session->get("requestData")){$session->set("requestData", array());}// Gibt es eine Zahlweiseif($session->get("zahlweise")){$session->set("zahlweise", array());}// Gibt es Tarifinfosif($session->get("tarifinfo")){$session->set("tarifinfo", array());}// Gibt es Personendatenif($session->get("personendaten")){$session->set("personendaten", array());}// Gibt es Verbrauchsstelleif($session->get("verbrauchsstelle")){$session->set("verbrauchsstelle", array());}return $this->redirectToRoute('login');}}return $this->render('/tarifrechner/zusammenfassung.html.twig', $aReturn);}}