src/Controller/DefaultController.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Helper\Buma;
  4. use Google\Service\AndroidPublisher\Listing;
  5. use Pimcore\Controller\FrontendController;
  6. use Pimcore\File;
  7. use Pimcore\Image;
  8. use Pimcore\Model\Asset;
  9. use Pimcore\Model\DataObject\Benutzer;
  10. use Pimcore\Model\DataObject\Classificationstore;
  11. use Pimcore\Model\DataObject\Data\Hotspotimage;
  12. use Pimcore\Model\DataObject\Data\ImageGallery;
  13. use Pimcore\Model\DataObject\Fieldcollection;
  14. use Pimcore\Model\DataObject\Firma;
  15. use Pimcore\Model\DataObject\Mietobjekt;
  16. use Pimcore\Model\DataObject\Module;
  17. use Pimcore\Model\DataObject\Objectbrick;
  18. Use Pimcore\Model\DataObject\Objectbrick\Data\Unterkunft;
  19. use Pimcore\Model\WebsiteSetting;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  22. use Symfony\Component\Routing\Annotation\Route;
  23. use Symfony\Component\HttpFoundation\RequestStack;
  24. use Carbon\Carbon;
  25. class DefaultController  extends FrontendController
  26. {
  27.     private $requestStack;
  28.     public function __construct(RequestStack $requestStack)
  29.     {
  30.         $this->requestStack $requestStack;
  31.     }
  32.     private function Sicherheitscheck()
  33.     {
  34.         if ($this->editmode) {
  35.             return true;
  36.         }
  37.         $session $this->requestStack->getSession();
  38.         if ($session->get("benutzer") instanceof Benutzer) {
  39.             return true;
  40.         } else {
  41.             return false;
  42.         }
  43.     }
  44.     /**
  45.      * @Template
  46.      * @param Request $request
  47.      * @return array
  48.      */
  49.     public function defaultAction(Request $request)
  50.     {
  51.         if (!$this->Sicherheitscheck()) {
  52.             return $this->redirect('/login');
  53.         }
  54.         return ['bodyClass' => "main"];
  55.     }
  56.     /**
  57.      * @Template
  58.      * @param Request $request
  59.      * @return array
  60.      */
  61.     public function systemUebersichtAction(Request $request)
  62.     {
  63.         if (!$this->Sicherheitscheck()) {
  64.             return $this->redirect('/login');
  65.         }
  66.         return ['bodyClass' => "main"];
  67.     }
  68.     /**
  69.      * @Template
  70.      * @param Request $request
  71.      * @return array
  72.      */
  73.     public function systemFirmenUebersichtAction(Request $request\Knp\Component\Pager\PaginatorInterface $paginator)
  74.     {
  75.         if (!$this->Sicherheitscheck()) {
  76.             return $this->redirect('/login');
  77.         }
  78.         $list = new Firma\Listing();
  79.         $paginator $paginator->paginate(
  80.             $list,
  81.             $request->get('page'1),
  82.             20
  83.         );
  84.         return ['bodyClass' => "main"'paginator' => $paginator'paginationVariables' => $paginator->getPaginationData()];
  85.     }
  86.     /**
  87.      * @Template
  88.      * @param Request $request
  89.      * @return array
  90.      */
  91.     public function systemFirmenInformationenAction(Request $request)
  92.     {
  93.         if (!$this->Sicherheitscheck()) {
  94.             return $this->redirect('/login');
  95.         }
  96.         $firmenId $request->get('id');
  97.         $firma Firma::getById($firmenId);
  98.         return ['bodyClass' => "main"'item' => $firma];
  99.     }
  100.     /**
  101.      * @Template
  102.      * @param Request $request
  103.      * @return array
  104.      */
  105.     public function systemFirmenNeuAction(Request $request)
  106.     {
  107.         if (!$this->Sicherheitscheck()) {
  108.             return $this->redirect('/login');
  109.         }
  110.         return ['bodyClass' => "main"];
  111.     }
  112.     /**
  113.      * @Template
  114.      * @param Request $request
  115.      * @return array
  116.      */
  117.     public function systemFirmenBearbeitenAction(Request $request)
  118.     {
  119.         if (!$this->Sicherheitscheck()) {
  120.             return $this->redirect('/login');
  121.         }
  122.         return ['bodyClass' => "main"];
  123.     }
  124.     /**
  125.      * @Template
  126.      * @param Request $request
  127.      * @return array
  128.      */
  129.     public function systemFirmenLoeschenAction(Request $request)
  130.     {
  131.         if (!$this->Sicherheitscheck()) {
  132.             return $this->redirect('/login');
  133.         }
  134.         return ['bodyClass' => "main"];
  135.     }
  136.     /**
  137.      * @Template
  138.      * @Route("/login")
  139.      * @param Request $request
  140.      * @return array
  141.      */
  142.     public function loginAction(Request $request)
  143.     {
  144.         return ['bodyClass' => "login"];
  145.     }
  146.     /**
  147.      * @Template
  148.      * @Route("/login/passwort-reset")
  149.      * @param Request $request
  150.      * @return array
  151.      */
  152.     public function accountPasswortresetAction(Request $request)
  153.     {
  154.         return ['bodyClass' => "login"];
  155.     }
  156.     /**
  157.      * @Template
  158.      * @Route("/login/passwort-reset-update")
  159.      * @param Request $request
  160.      * @return array
  161.      */
  162.     public function accountPasswortresetUpdateAction(Request $request)
  163.     {
  164.         return ['bodyClass' => "login"];
  165.     }
  166.     /**
  167.      * @Template
  168.      * @Route("/login/passwort-reset-update-step2")
  169.      * @param Request $request
  170.      * @return array
  171.      */
  172.     public function accountPasswortresetUpdateStep2Action(Request $request)
  173.     {
  174.         if ($request->isMethod("POST")) {
  175.             // wir setzen den passworttoken, ohne diesen muss der Prozess neu bekonnen werden.
  176.             $username $request->get("username");
  177.             $email $request->get("email");
  178.             if ($username == "") {
  179.                 return $this->redirect("/login/passwort-reset?fehler=Username");
  180.             }
  181.             if ($email == "") {
  182.                 return $this->redirect("/login/passwort-reset?fehler=Email");
  183.             }
  184.             // wir prüfen ob wir den passenden Benutzer haben
  185.             $userlist = new Benutzer\Listing();
  186.             $userlist->setCondition("username = ? AND email = ?", [$username$email]);
  187.             $userlist->load();
  188.             if ($userlist->count() == 1) {
  189.                 $benutzer $userlist->current();
  190.                 $benutzer->setPassworttoken(md5(time()));
  191.                 $benutzer->save();
  192.                 return ['bodyClass' => "login"'username' => $username'token' => $benutzer->getPassworttoken()];
  193.             } else {
  194.                 return $this->redirect("/login/passwort-reset?fehler=keinBenutzer");
  195.             }
  196.         } else {
  197.             $username $request->get("usernamereturn");
  198.             $token $request->get("tokenreturn");
  199.             return ['bodyClass' => "login"'username' => $username'token' => $token];
  200.         }
  201.     }
  202.     /**
  203.      * @Template
  204.      * @Route("/login/passwort-reset-update-step3")
  205.      * @param Request $request
  206.      * @return array
  207.      */
  208.     public function accountPasswortresetUpdateStep3Action(Request $request)
  209.     {
  210.         $username $request->get("username");
  211.         $pwtoken $request->get("token");
  212.         $pw1 $request->get("password");
  213.         $pw2 $request->get("password2");
  214.         $userlist = new Benutzer\Listing();
  215.         $userlist->setCondition("username = ? AND passworttoken = ?", [$username$pwtoken]);
  216.         $userlist->load();
  217.         if ($userlist->count() == 0) {
  218.             // da pass was nicht, wir löschen den Token und gehen zu Schritt eins
  219.             $userlist = new Benutzer\Listing();
  220.             $userlist->setCondition("username = ?", [$username]);
  221.             $userlist->load();
  222.             if ($userlist->count() == 1) {
  223.                 $aktBenutzer $userlist->current();
  224.                 $aktBenutzer->setPassworttoken('');
  225.                 $aktBenutzer->save();
  226.                 return $this->redirect("/login/passwort-reset?fehler=User/Tokengeloescht");
  227.             }
  228.             return $this->redirect("/login/passwort-reset?fehler=User/Token");
  229.         }
  230.         if ($pw1 == "") {
  231.             return $this->redirect("/login/passwort-reset-update-step2?fehler=keinPasswort1&usernamereturn=" $username "&tokenreturn=" $pwtoken);
  232.         } else {
  233.             if ($pw2 == "") {
  234.                 return $this->redirect("/login/passwort-reset-update-step2?fehler=keinPasswort2&usernamereturn=" $username "&tokenreturn=" $pwtoken);
  235.             } else {
  236.                 if ($pw1 != $pw2) {
  237.                     return $this->redirect("/login/passwort-reset-update-step2?fehler=UnterschiedlichePasswoerter&usernamereturn=" $username "&tokenreturn=" $pwtoken);
  238.                 } else {
  239.                     // alles OK
  240.                 }
  241.             }
  242.         }
  243.         if ($request->get("username")) {
  244.             $username $request->get("username");
  245.             // HASH ist bumadesk => wird in der Objektklasse definiert
  246.             $email $request->get("username");
  247.             $userlist = new Benutzer\Listing();
  248.             $userlist->setCondition("username = ? AND passworttoken = ?", [$username$pwtoken]);
  249.             $userlist->load();
  250.             if ($userlist->count() == 1) {
  251.                 // wir können das Passwort neu setzen
  252.                 $password md5("bumadesk" $pw1);
  253.                 $aktBenutzer $userlist->current();
  254.                 $aktBenutzer->setPassword($password);
  255.                 $aktBenutzer->setPassworttoken('');
  256.                 $aktBenutzer->save();
  257.                 //TODO Logging Aktueller Benutzer Passwortänderung erfolgreich
  258.                 return $this->redirect("/login");
  259.             } else {
  260.             }
  261.         } else {
  262.             return $this->redirect("/login?fehler=keinUsername");
  263.         }
  264.         return $this->redirect("/login");
  265.     }
  266.     /**
  267.      * @Template
  268.      * @Route("/account/profil")
  269.      * @param Request $request
  270.      * @return array
  271.      */
  272.     public function accountProfilAction(Request $request)
  273.     {
  274.         if (!$this->Sicherheitscheck()) {
  275.             return $this->redirect('/login');
  276.         }
  277.         return ['bodyClass' => "main"];
  278.     }
  279.     /**
  280.      * @Template
  281.      * @Route("/account/profil-update")
  282.      * @param Request $request
  283.      * @return array
  284.      */
  285.     public function accountProfilUpdateAction(Request $request)
  286.     {
  287.         $session $this->requestStack->getSession();
  288.         $usertmp $session->get('benutzer');
  289.         $benutzer Benutzer::getById($usertmp->getId());
  290.         $saveAction false;
  291.         if ($benutzer->getVorname() != $request->get('account_profil_vorname')) {
  292.             $benutzer->setVorname($request->get('account_profil_vorname'));
  293.             $saveAction true;
  294.         }
  295.         if ($benutzer->getNachname() != $request->get('account_profil_nachname')) {
  296.             $benutzer->setNachname($request->get('account_profil_nachname'));
  297.             $saveAction true;
  298.         }
  299.         if ($benutzer->getEmail() != $request->get('account_profil_email')) {
  300.             $benutzer->setEmail($request->get('account_profil_email'));
  301.             $saveAction true;
  302.         }
  303.         if ($benutzer->getSprache() != $request->get('account_profil_sprache')) {
  304.             $benutzer->setSprache($request->get('account_profil_sprache'));
  305.             $saveAction true;
  306.         }
  307.         if ($benutzer->getTelefon() != $request->get('account_profil_telefon')) {
  308.             $benutzer->setTelefon($request->get('account_profil_telefon'));
  309.             $saveAction true;
  310.         }
  311.         if ($benutzer->getAnschrift() != $request->get('account_profil_anschrift')) {
  312.             $benutzer->setAnschrift($request->get('account_profil_anschrift'));
  313.             $saveAction true;
  314.         }
  315.         if ($saveAction) {
  316.             //TODO Funktion um die Änderungen zu loggen
  317.             $benutzer->save();
  318.             $session->set('benutzer'$benutzer);
  319.         }
  320.         return $this->redirect("/account/profil");
  321.     }
  322.     /**
  323.      * @Template
  324.      * @Route("/account/profil-image-update")
  325.      * @param Request $request
  326.      * @return array
  327.      */
  328.     public function accountProfilImageUpdateAction(Request $request)
  329.     {
  330.         $session $this->requestStack->getSession();
  331.         $usertmp $session->get('benutzer');
  332.         $benutzer Benutzer::getById($usertmp->getId());
  333.         $ImageData $_FILES['userbild'];
  334.         $filename date("dmYHis"time()) . "_" $ImageData['name'];
  335.         $newBenutzerBild = new Asset();
  336.         $newBenutzerBild->setKey($filename);
  337.         $newBenutzerBild->setFilename($filename);
  338.         $newBenutzerBild->setData(file_get_contents($ImageData['tmp_name']));
  339.         $newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Benutzerbilder')->getId());
  340.         $newBenutzerBild->save();
  341.         $asset Asset::getById($newBenutzerBild->getId());
  342.         if ($asset instanceof Asset && $benutzer instanceof Benutzer) {
  343.             $benutzer->setBild($asset);
  344.             $benutzer->save();
  345.             $session $this->requestStack->getSession();
  346.             $session->set('benutzer'$benutzer);
  347.             //TODO Logging Function
  348.         } else {
  349.             die('fehler');
  350.         }
  351.         return $this->redirect("/account/profil");
  352.     }
  353.     /**
  354.      * @Template
  355.      * @Route("/login/check")
  356.      */
  357.     public function loginCheckAction(Request $request)
  358.     {
  359.         if ($request->get("username")) {
  360.             $username $request->get("username");
  361.             // HASH ist bumadesk => wird in der Objektklasse definiert
  362.             $password md5("bumadesk" $request->get("password"));
  363.             $userlist = new Benutzer\Listing();
  364.             $userlist->setCondition("username = ? AND password = ?", [$username$password]);
  365.             $userlist->load();
  366.             if ($userlist->count() == 1) {
  367.                 // Hier kommen die Sessionbelegungen
  368.                 $session $this->requestStack->getSession();
  369.                 $session->set('benutzer'$userlist->current());
  370.                 $session->set('berechtigungen'$userlist->current()->getBerechtigungen());
  371.                 return $this->redirect("/");
  372.             } else {
  373.                 return $this->redirect("/login?fehler=passwort");
  374.             }
  375.         } else {
  376.             return $this->redirect("/login?fehler=username");
  377.         }
  378.     }
  379.     /**
  380.      * @Template
  381.      * @Route("/logout")
  382.      */
  383.     public function logoutAction(Request $request)
  384.     {
  385.         $session $this->requestStack->getSession();
  386.         $session->clear();
  387.         return $this->redirect("/login");
  388.     }
  389.     /**
  390.      * @Template
  391.      * @param Request $request
  392.      * @return array
  393.      */
  394.     public function kundenUebersichtAction(Request $request)
  395.     {
  396.         if (!$this->Sicherheitscheck()) {
  397.             return $this->redirect('/login');
  398.         }
  399.         return ['bodyClass' => "main"];
  400.     }
  401.     /**
  402.      * @Template
  403.      * @param Request $request
  404.      * @return array
  405.      */
  406.     public function benutzerUebersichtAction(Request $request)
  407.     {
  408.         if (!$this->Sicherheitscheck()) {
  409.             return $this->redirect('/login');
  410.         }
  411.         return ['bodyClass' => "main"];
  412.     }
  413.     /**
  414.      * @Template
  415.      * @param Request $request
  416.      * @return array
  417.      */
  418.     public function mietobjekteUebersichtAction(Request $request)
  419.     {
  420.         if (!$this->Sicherheitscheck()) {
  421.             return $this->redirect('/login');
  422.         }
  423.         // wir schauen was es alles für Mietobjekte gibt
  424.         $session $this->requestStack->getSession();
  425.         $usertmp $session->get('benutzer');
  426.         $firma Benutzer::getById($usertmp->getId())->getParent()->getParent();
  427.         $action $request->get("action");
  428.         if ($action != '') {
  429.             if ($action == 'edit') {
  430.                 $storeData = array();
  431.                 if($firma->getCustomertyp() != '') {
  432.                     $list = new Classificationstore\CollectionConfig\Listing();
  433.                     $list->setCondition('LOWER(name) = ' strtolower($list->quote($firma->getCustomertyp())));
  434.                     $list->load();
  435.                     $colId $list->getData()[0]->getId();
  436.                     $db \Pimcore\Db::get();
  437.                     $query 'select groupId from classificationstore_collectionrelations where colId = '.$colId;
  438.                     $relationList $db->fetchCol($query);
  439.                     $groupsList = new Classificationstore\GroupConfig\Listing();
  440.                     $conditionPart 'ID in (' implode(','$relationList) . ')';
  441.                     $groupsList->setCondition$conditionPart );
  442.                     foreach($groupsList->load() as $item){
  443.                         $storeData[$item->getId()]['bezeichnung'] = $item->getName();
  444.                         $itemData = new Classificationstore\KeyGroupRelation\Listing();
  445.                         $relationParts '(groupId = ' $list->quote($item->getId()) . ')';
  446.                         $itemData->setCondition($relationParts);
  447.                         foreach($itemData->load() as $value){
  448.                             $storeData[$item->getId()]['options'][$value->getKeyId()]['bezeichnung'] = $value->getName();
  449.                             $storeData[$item->getId()]['options'][$value->getKeyId()]['type'] = $value->getType();
  450.                         }
  451.                     }
  452.                 }
  453.                 $datensatzId $request->get('datensatzId');
  454.                 $folderofMietobjekte $firma->getMietobjekte()->getId();
  455.                 $mietobjekt Mietobjekt::getById($datensatzId);
  456.                 if ($mietobjekt instanceof Mietobjekt) {
  457.                     if ($mietobjekt->getParentId() == $folderofMietobjekte) {
  458.                         return ['bodyClass' => "main"'action' => $action'firma' => $firma'mietobjekt' => $mietobjekt'datensatzID' => $datensatzId'storedata' => $storeData];
  459.                     } else {
  460.                         return ['bodyClass' => "main"'action' => 'fehler''firma' => $firma'fehlertext' => 'Der von Ihnen aufgerufene Datensatz existiert nicht, oder gehört nicht zu Ihrem Unternehmen. Bitte benutzen Sie ausschließlich den Link zum bearbeiten der Daten.'];
  461.                     }
  462.                 }
  463.             }
  464.             if ($action == 'add') {
  465.                 if ($request->get('bezeichnung') != '') {
  466.                     $bezeichnung $request->get('bezeichnung');
  467.                     $key date("Ymd_His"time()) . "_" File::getValidFilename($bezeichnung);
  468.                     $mietobjekt = new Mietobjekt();
  469.                     $mietobjekt->setKey($key);
  470.                     $mietobjekt->setBezeichnung($request->get('bezeichnung'));
  471.                     $mietobjekt->setParentId($firma->getMietobjekte()->getId());
  472.                     $zusatzdatengetter "Pimcore\\Model\\DataObject\\Objectbrick\\Data\\" ucfirst(strtolower($firma->getCustomertyp()));
  473.                     $zusatzdaten = new $zusatzdatengetter($mietobjekt);
  474.                     $zusatzdatensetter "set" ucfirst(strtolower($firma->getCustomertyp()));
  475.                     $mietobjekt->getZusatzdaten()->setUnterkunft($zusatzdaten);
  476.                     $mietobjekt->save();
  477.                     $storeData = array();
  478.                     if($firma->getCustomertyp() != '') {
  479.                         $list = new Classificationstore\CollectionConfig\Listing();
  480.                         $list->setCondition('LOWER(name) = ' strtolower($list->quote($firma->getCustomertyp())));
  481.                         $list->load();
  482.                         $colId $list->getData()[0]->getId();
  483.                         $db \Pimcore\Db::get();
  484.                         $query 'select groupId from classificationstore_collectionrelations where colId = '.$colId;
  485.                         $relationList $db->fetchCol($query);
  486.                         $groupsList = new Classificationstore\GroupConfig\Listing();
  487.                         $conditionPart 'ID in (' implode(','$relationList) . ')';
  488.                         $groupsList->setCondition$conditionPart );
  489.                         foreach($groupsList->load() as $item){
  490.                             $storeData[$item->getId()]['bezeichnung'] = $item->getName();
  491.                             $itemData = new Classificationstore\KeyGroupRelation\Listing();
  492.                             $relationParts '(groupId = ' $list->quote($item->getId()) . ')';
  493.                             $itemData->setCondition($relationParts);
  494.                             foreach($itemData->load() as $value){
  495.                                 $storeData[$item->getId()]['options'][$value->getKeyId()]['bezeichnung'] = $value->getName();
  496.                                 $storeData[$item->getId()]['options'][$value->getKeyId()]['type'] = $value->getType();
  497.                             }
  498.                         }
  499.                     }
  500.                     return ['bodyClass' => "main"'action' => 'edit''mietobjekt' => $mietobjekt'datensatzID' => $mietobjekt->getId(), 'storedata' => $storeData];
  501.                 } else {
  502.                     return ['bodyClass' => "main"'action' => 'fehler''firma' => $firma'fehlertext' => 'Es ist ein fehler aufgetreten. Sie haben keine Bezeichnung eingegeben.'];
  503.                 }
  504.             }
  505.             if ($action == 'delete') {
  506.                 $datensatzId $request->get('datensatzId');
  507.                 $mietobjekt Mietobjekt::getById($datensatzId);
  508.                 if ($mietobjekt instanceof Mietobjekt) {
  509.                     $mietobjekt->delete();
  510.                     return ['bodyClass' => "main"'action' => '''firma' => $firma];
  511.                 } else {
  512.                     return ['bodyClass' => "main"'action' => 'fehler''firma' => $firma'fehlertext' => 'Es ist ein fehler aufgetreten.'];
  513.                 }
  514.             }
  515.             if ($action == 'save') {
  516.                 //prüfen ob die ID auch zur Firma passt !!!
  517.                 $items = array();
  518.                 $datensatzId $request->get('datensatzId');
  519.                 $folderofMietobjekte $firma->getMietobjekte()->getId();
  520.                 $mietobjekt Mietobjekt::getById($datensatzId);
  521.                 $mietobjekt->setNebenkosten(new Classificationstore());
  522.                 $mietobjekt->save();
  523.                 $activeGroups = [];
  524.                 $groupCollectionMapping = [];
  525.                 foreach ($_POST as $key => $value) {
  526.                     // Verwende einen regulären Ausdruck, um die gewünschten Variablennamen zu überprüfen
  527.                     if (preg_match('/^classificationstore_\d+_\d+$/'$key)) {
  528.                         if($value != null) {
  529.                             $parts explode('_',$key);
  530.                             $groupId $parts[1];
  531.                             $keyId $parts[2];
  532.                             // Aktive Gruppen und Mappings festlegen
  533.                             $activeGroups[$groupId] = true;
  534.                             $groupCollectionMapping[$groupId] = 1// oder ein anderer Wert, falls benötigt
  535.                             // Werte setzen, sofern nicht leer
  536.                             $mietobjekt->getNebenkosten()->setLocalizedKeyValue($groupId$keyIdstr_replace(",",".",$value));
  537.                         }
  538.                     }
  539.                     if (preg_match('/^zusatzdaten-[a-zA-Z]+-[a-zA-Z_]+$/'$key)) {
  540.                         if($value != null) {
  541.                             $partszusatzdaten explode('-',$key);
  542.                             print_r($partszusatzdaten);
  543.                             $getter1 "get" .ucfirst($partszusatzdaten[0]);
  544.                             $getter2 "get" .ucfirst($partszusatzdaten[1]);
  545.                             $setter "set" ucfirst($partszusatzdaten[2]);
  546.                             $mietobjekt->$getter1()->$getter2()->$setter($value);
  547.                         }
  548.                     }
  549.                 }
  550.                 // Aktive Gruppen und Mappings festlegen
  551.                 $mietobjekt->getNebenkosten()->setFieldname('Nebenkosten');
  552.                 $mietobjekt->getNebenkosten()->setActiveGroups($activeGroups);
  553.                 $mietobjekt->getNebenkosten()->setGroupCollectionMappings($groupCollectionMapping);
  554.                 // Objekt speichern
  555.                 $mietobjekt->save();
  556.                 if ($mietobjekt instanceof Mietobjekt) {
  557.                     if ($mietobjekt->getParentId() == $folderofMietobjekte) {
  558.                         // wir speichern
  559.                         //wir schauen mal wieviel Bilder aktuell gespeichert waren
  560.                         $oldBildAnzahl count($mietobjekt->getBildmaterial()->getItems());
  561.                         if ($request->get('old_bildmaterial')) {
  562.                             if (count($request->get('old_bildmaterial')) <= $oldBildAnzahl) {
  563.                                 // es werden Bilder gelöscht
  564.                                 $dataImageGallery $mietobjekt->getBildmaterial()->getItems();
  565.                                 foreach ($request->get('old_bildmaterial') as $bildmaterial) {
  566.                                     $items[] = $dataImageGallery[$bildmaterial 1];
  567.                                 }
  568.                             }
  569.                             // jetzt fügen wir die neuen Bilder hinzu sofern es welche gibt
  570.                             $ImageUploadData $_FILES['bildmaterial'];
  571.                             $AnzahlUpload =0;
  572.                             foreach ($ImageUploadData['tmp_name'] as $value){
  573.                                 if($value != '') {
  574.                                     $AnzahlUpload++;
  575.                                 }
  576.                             }
  577.                             $counter 0;
  578.                             if($AnzahlUpload 0) {
  579.                                 while ($counter $AnzahlUpload) {
  580.                                     echo "<br>" $counter;
  581.                                     print_r($ImageUploadData['name']);
  582.                                     $filename strtolower($firma->getKuerzel()) . "_" date("dmYHis"time()) . "_" $ImageUploadData['name'][$counter];
  583.                                     $newBenutzerBild = new Asset\Image();
  584.                                     $newBenutzerBild->setKey($filename);
  585.                                     $newBenutzerBild->setFilename($filename);
  586.                                     $newBenutzerBild->setData(file_get_contents($ImageUploadData['tmp_name'][$counter]));
  587.                                     $newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Mietobjekte')->getId());
  588.                                     $newBenutzerBild->save();
  589.                                     $tmpData = new Hotspotimage();
  590.                                     $tmpData->setImage($newBenutzerBild);
  591.                                     $items[] = $tmpData;
  592.                                     $counter++;
  593.                                 }
  594.                             }
  595.                             if (count($items) > 0) {
  596.                                 $mietobjekt->setBildmaterial(new ImageGallery($items));
  597.                             }
  598.                         } else {
  599.                             $ImageUploadData $_FILES['bildmaterial'];
  600.                             $AnzahlUpload =0;
  601.                             foreach ($ImageUploadData['tmp_name'] as $value){
  602.                                 if($value != '') {
  603.                                     $AnzahlUpload++;
  604.                                 }
  605.                             }
  606.                             $counter 0;
  607.                             if($AnzahlUpload 0) {
  608.                                 while ($counter $AnzahlUpload) {
  609.                                     if ($ImageUploadData['tmp_name'][$counter] != "") {
  610.                                         $filename strtolower($firma->getKuerzel()) . "_" date("dmYHis"time()) . "_" $ImageUploadData['name'][$counter];
  611.                                         $newBenutzerBild = new Asset\Image();
  612.                                         $newBenutzerBild->setKey($filename);
  613.                                         $newBenutzerBild->setFilename($filename);
  614.                                         $newBenutzerBild->setData(file_get_contents($ImageUploadData['tmp_name'][$counter]));
  615.                                         $newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Mietobjekte')->getId());
  616.                                         $newBenutzerBild->save();
  617.                                         $tmpData = new Hotspotimage();
  618.                                         $tmpData->setImage($newBenutzerBild);
  619.                                         $items[] = $tmpData;
  620.                                     }
  621.                                     $counter++;
  622.                                 }
  623.                             }
  624.                             if (count($items) > 0) {
  625.                                 $mietobjekt->setBildmaterial(new ImageGallery($items));
  626.                             } else {
  627.                                 $mietobjekt->setBildmaterial(new ImageGallery(array()));
  628.                             }
  629.                         }
  630.                         $mietobjekt->setBezeichnung($request->get('bezeichnung'));
  631.                         $mietobjekt->setKurzbeschreibung($request->get('kurzbeschreibung'));
  632.                         $mietobjekt->setLangtext($request->get('langtext'));
  633.                         if($request->get('aktive') == 'on'){
  634.                             $mietobjekt->setAktiv(true);
  635.                         }else{
  636.                             $mietobjekt->setAktiv(false);
  637.                         }
  638.                         $mietobjekt->setReihenfolge($request->get('reihenfolge'));
  639.                         $mietobjekt->setPublished(true);
  640.                         $mietobjekt->save();
  641.                         return ['bodyClass' => "main"'action' => '''firma' => $firma];
  642.                     } else {
  643.                         return ['bodyClass' => "main"'action' => 'fehler''firma' => $firma'fehlertext' => 'Der von Ihnen aufgerufene Datensatz existiert nicht, oder gehört nicht zu Ihrem Unternehmen. Bitte benutzen Sie ausschließlich den Link zum bearbeiten der Daten.'];
  644.                     }
  645.                 }
  646.             }
  647.         } else {
  648.             return ['bodyClass' => "main"'action' => $action'firma' => $firma];
  649.         }
  650.     }
  651.     private function classificationstoresnippet($mietobjekt){
  652.         $classificationStore $mietobjekt->getNebenkosten();
  653.         print_r($classificationStore);
  654.         foreach ($classificationStore->getGroups() as $group) {
  655.             var_dump($group->getConfiguration()->getName());
  656.             foreach ($group->getKeys() as $key) {
  657.                 $keyConfiguration $key->getConfiguration();
  658.                 $value $key->getValue();
  659.                 if ($value instanceof \Pimcore\Model\DataObject\Data\QuantityValue) {
  660.                     $value = (string)$value;
  661.                 }
  662. //                        print_r($keyConfiguration);
  663. //                        var_dump([
  664. //                            $keyConfiguration->getId(),
  665. //                            $keyConfiguration->getType(),
  666. //                            $keyConfiguration->getName(),
  667. //                            $keyConfiguration->getTitle(),
  668. //                            $value,
  669. //                            ($key->getFieldDefinition() instanceof QuantityValue),
  670. //                        ]);
  671.             }
  672.         }
  673.     }
  674.     /**
  675.      * @Template
  676.      * @param Request $request
  677.      * @return array
  678.      */
  679.     public function preisberechnungUebersichtAction(Request $request)
  680.     {
  681.         if (!$this->Sicherheitscheck()) {
  682.             return $this->redirect('/login');
  683.         }
  684.         $session $this->requestStack->getSession();
  685.         $usertmp $session->get('benutzer');
  686.         $firma Benutzer::getById($usertmp->getId())->getParent()->getParent();
  687.         $action $request->get("action");
  688.         if ($action != '') {
  689.             if ($action == 'edit'){
  690.                 $preisberechnung Mietobjekt::getById($request->get('datensatzId'));
  691.                 return ['bodyClass' => "main"'action' => $action'firma' => $firma'datensatzID' => $request->get('datensatzId'), 'preisberechnung' => $preisberechnung];
  692.             }
  693.             if ($action == 'save'){
  694.                 $mietobjekt Mietobjekt::getById($request->get('datensatzId'));
  695.                 $var $_POST;
  696.                 if(!array_key_exists('aktiv',$var)){
  697.                     $var['aktiv'] = 0;
  698.                 }
  699.                 $var['aktiv_von'] = new Carbon($var['aktiv_von']  );
  700.                 $var['aktiv_bis'] = new Carbon($var['aktiv_bis']  );
  701.                 $dataitems $mietobjekt->getPreisberechnung();
  702.                 $meinitem $dataitems->get($var['index']);
  703.                 unset($var['index']);
  704.                 unset($var['action']);
  705.                 unset($var['datensatzId']);
  706.                 foreach($var as $key => $value){
  707.                     $setter "set" ucfirst($key);
  708.                     if(is_string($value)) {
  709.                         $meinitem->$setter(str_replace(',''.'$value));  // wir ersetzen (wenn es ein string ist) die fehleingabe komma durch einen Punkt damit die DB sauber gefüllt wird.
  710.                     }else{
  711.                         $meinitem->$setter($value);
  712.                     }
  713.                 }
  714.                 $mietobjekt->save();
  715.                 return ['bodyClass' => "main"'action' => '''firma' => $firma];
  716.             }
  717.             if($action == 'new_preisberechnung'){
  718.                 $mietobjekt Mietobjekt::getById($request->get('datensatzId'));
  719.                 $preisberechnung $mietobjekt->getPreisberechnung();
  720.                 $preisgetter "\\Pimcore\\Model\\DataObject\\Fieldcollection\\Data\\" ucfirst($request->get('preisberechnung_new'));
  721.                 $newitem = new $preisgetter();
  722.                 if($preisberechnung instanceof Fieldcollection){
  723.                     $preisberechnung->add($newitem);
  724.                     $mietobjekt->setPreisberechnung($preisberechnung);
  725.                 } else {
  726.                     $fieldcol = new Fieldcollection();
  727.                     $fieldcol->add($newitem);
  728.                     $mietobjekt->setPreisberechnung($fieldcol);
  729.                 }
  730.                 $mietobjekt->save();
  731.                 return $this->redirect('/preisberechnung?action=edit&datensatzId=' $request->get('datensatzId'));
  732.             }
  733.             if($action == 'delete'){
  734.                 $mietobjekt Mietobjekt::getById($request->get('datensatzId'));
  735.                 $preisberechnung $mietobjekt->getPreisberechnung();
  736.                 $preisberechnung->remove($request->get('index'));
  737.                 $mietobjekt->setPreisberechnung($preisberechnung);
  738.                 $mietobjekt->save();
  739.                 return $this->redirect('/preisberechnung?action=edit&datensatzId=' $request->get('datensatzId'));
  740.             }
  741.         } else {
  742.             // Standartansicht
  743.             return ['bodyClass' => "main"'action' => $action'firma' => $firma];
  744.         }
  745.     }
  746.     /**
  747.      * @Template
  748.      * @param Request $request
  749.      * @return array
  750.      */
  751.     public function stammdatenUebersichtAction(Request $request)
  752.     {
  753.         if (!$this->Sicherheitscheck()) {
  754.             return $this->redirect('/login');
  755.         }
  756.         return ['bodyClass' => "main"];
  757.     }
  758.     /**
  759.      * @Template
  760.      * @param Request $request
  761.      * @return array
  762.      */
  763.     public function einstellungenUebersichtAction(Request $request)
  764.     {
  765.         if (!$this->Sicherheitscheck()) {
  766.             return $this->redirect('/login');
  767.         }
  768.         $activeTab 'uebersicht';
  769.         if ($request->get('activeTab')) {
  770.             $activeTab $request->get('activeTab');
  771.         }
  772.         return ['bodyClass' => "main"'activeTab' => $activeTab];
  773.     }
  774. }