<?php
namespace App\Controller;
use App\Helper\Buma;
use Google\Service\AndroidPublisher\Listing;
use Pimcore\Controller\FrontendController;
use Pimcore\File;
use Pimcore\Image;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject\Benutzer;
use Pimcore\Model\DataObject\Classificationstore;
use Pimcore\Model\DataObject\Data\Hotspotimage;
use Pimcore\Model\DataObject\Data\ImageGallery;
use Pimcore\Model\DataObject\Fieldcollection;
use Pimcore\Model\DataObject\Firma;
use Pimcore\Model\DataObject\Mietobjekt;
use Pimcore\Model\DataObject\Module;
use Pimcore\Model\DataObject\Objectbrick;
Use Pimcore\Model\DataObject\Objectbrick\Data\Unterkunft;
use Pimcore\Model\WebsiteSetting;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\RequestStack;
use Carbon\Carbon;
class DefaultController extends FrontendController
{
private $requestStack;
public function __construct(RequestStack $requestStack)
{
$this->requestStack = $requestStack;
}
private function Sicherheitscheck()
{
if ($this->editmode) {
return true;
}
$session = $this->requestStack->getSession();
if ($session->get("benutzer") instanceof Benutzer) {
return true;
} else {
return false;
}
}
/**
* @Template
* @param Request $request
* @return array
*/
public function defaultAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemFirmenUebersichtAction(Request $request, \Knp\Component\Pager\PaginatorInterface $paginator)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
$list = new Firma\Listing();
$paginator = $paginator->paginate(
$list,
$request->get('page', 1),
20
);
return ['bodyClass' => "main", 'paginator' => $paginator, 'paginationVariables' => $paginator->getPaginationData()];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemFirmenInformationenAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
$firmenId = $request->get('id');
$firma = Firma::getById($firmenId);
return ['bodyClass' => "main", 'item' => $firma];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemFirmenNeuAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemFirmenBearbeitenAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function systemFirmenLoeschenAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @Route("/login")
* @param Request $request
* @return array
*/
public function loginAction(Request $request)
{
return ['bodyClass' => "login"];
}
/**
* @Template
* @Route("/login/passwort-reset")
* @param Request $request
* @return array
*/
public function accountPasswortresetAction(Request $request)
{
return ['bodyClass' => "login"];
}
/**
* @Template
* @Route("/login/passwort-reset-update")
* @param Request $request
* @return array
*/
public function accountPasswortresetUpdateAction(Request $request)
{
return ['bodyClass' => "login"];
}
/**
* @Template
* @Route("/login/passwort-reset-update-step2")
* @param Request $request
* @return array
*/
public function accountPasswortresetUpdateStep2Action(Request $request)
{
if ($request->isMethod("POST")) {
// wir setzen den passworttoken, ohne diesen muss der Prozess neu bekonnen werden.
$username = $request->get("username");
$email = $request->get("email");
if ($username == "") {
return $this->redirect("/login/passwort-reset?fehler=Username");
}
if ($email == "") {
return $this->redirect("/login/passwort-reset?fehler=Email");
}
// wir prüfen ob wir den passenden Benutzer haben
$userlist = new Benutzer\Listing();
$userlist->setCondition("username = ? AND email = ?", [$username, $email]);
$userlist->load();
if ($userlist->count() == 1) {
$benutzer = $userlist->current();
$benutzer->setPassworttoken(md5(time()));
$benutzer->save();
return ['bodyClass' => "login", 'username' => $username, 'token' => $benutzer->getPassworttoken()];
} else {
return $this->redirect("/login/passwort-reset?fehler=keinBenutzer");
}
} else {
$username = $request->get("usernamereturn");
$token = $request->get("tokenreturn");
return ['bodyClass' => "login", 'username' => $username, 'token' => $token];
}
}
/**
* @Template
* @Route("/login/passwort-reset-update-step3")
* @param Request $request
* @return array
*/
public function accountPasswortresetUpdateStep3Action(Request $request)
{
$username = $request->get("username");
$pwtoken = $request->get("token");
$pw1 = $request->get("password");
$pw2 = $request->get("password2");
$userlist = new Benutzer\Listing();
$userlist->setCondition("username = ? AND passworttoken = ?", [$username, $pwtoken]);
$userlist->load();
if ($userlist->count() == 0) {
// da pass was nicht, wir löschen den Token und gehen zu Schritt eins
$userlist = new Benutzer\Listing();
$userlist->setCondition("username = ?", [$username]);
$userlist->load();
if ($userlist->count() == 1) {
$aktBenutzer = $userlist->current();
$aktBenutzer->setPassworttoken('');
$aktBenutzer->save();
return $this->redirect("/login/passwort-reset?fehler=User/Tokengeloescht");
}
return $this->redirect("/login/passwort-reset?fehler=User/Token");
}
if ($pw1 == "") {
return $this->redirect("/login/passwort-reset-update-step2?fehler=keinPasswort1&usernamereturn=" . $username . "&tokenreturn=" . $pwtoken);
} else {
if ($pw2 == "") {
return $this->redirect("/login/passwort-reset-update-step2?fehler=keinPasswort2&usernamereturn=" . $username . "&tokenreturn=" . $pwtoken);
} else {
if ($pw1 != $pw2) {
return $this->redirect("/login/passwort-reset-update-step2?fehler=UnterschiedlichePasswoerter&usernamereturn=" . $username . "&tokenreturn=" . $pwtoken);
} else {
// alles OK
}
}
}
if ($request->get("username")) {
$username = $request->get("username");
// HASH ist bumadesk => wird in der Objektklasse definiert
$email = $request->get("username");
$userlist = new Benutzer\Listing();
$userlist->setCondition("username = ? AND passworttoken = ?", [$username, $pwtoken]);
$userlist->load();
if ($userlist->count() == 1) {
// wir können das Passwort neu setzen
$password = md5("bumadesk" . $pw1);
$aktBenutzer = $userlist->current();
$aktBenutzer->setPassword($password);
$aktBenutzer->setPassworttoken('');
$aktBenutzer->save();
//TODO Logging Aktueller Benutzer Passwortänderung erfolgreich
return $this->redirect("/login");
} else {
}
} else {
return $this->redirect("/login?fehler=keinUsername");
}
return $this->redirect("/login");
}
/**
* @Template
* @Route("/account/profil")
* @param Request $request
* @return array
*/
public function accountProfilAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @Route("/account/profil-update")
* @param Request $request
* @return array
*/
public function accountProfilUpdateAction(Request $request)
{
$session = $this->requestStack->getSession();
$usertmp = $session->get('benutzer');
$benutzer = Benutzer::getById($usertmp->getId());
$saveAction = false;
if ($benutzer->getVorname() != $request->get('account_profil_vorname')) {
$benutzer->setVorname($request->get('account_profil_vorname'));
$saveAction = true;
}
if ($benutzer->getNachname() != $request->get('account_profil_nachname')) {
$benutzer->setNachname($request->get('account_profil_nachname'));
$saveAction = true;
}
if ($benutzer->getEmail() != $request->get('account_profil_email')) {
$benutzer->setEmail($request->get('account_profil_email'));
$saveAction = true;
}
if ($benutzer->getSprache() != $request->get('account_profil_sprache')) {
$benutzer->setSprache($request->get('account_profil_sprache'));
$saveAction = true;
}
if ($benutzer->getTelefon() != $request->get('account_profil_telefon')) {
$benutzer->setTelefon($request->get('account_profil_telefon'));
$saveAction = true;
}
if ($benutzer->getAnschrift() != $request->get('account_profil_anschrift')) {
$benutzer->setAnschrift($request->get('account_profil_anschrift'));
$saveAction = true;
}
if ($saveAction) {
//TODO Funktion um die Änderungen zu loggen
$benutzer->save();
$session->set('benutzer', $benutzer);
}
return $this->redirect("/account/profil");
}
/**
* @Template
* @Route("/account/profil-image-update")
* @param Request $request
* @return array
*/
public function accountProfilImageUpdateAction(Request $request)
{
$session = $this->requestStack->getSession();
$usertmp = $session->get('benutzer');
$benutzer = Benutzer::getById($usertmp->getId());
$ImageData = $_FILES['userbild'];
$filename = date("dmYHis", time()) . "_" . $ImageData['name'];
$newBenutzerBild = new Asset();
$newBenutzerBild->setKey($filename);
$newBenutzerBild->setFilename($filename);
$newBenutzerBild->setData(file_get_contents($ImageData['tmp_name']));
$newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Benutzerbilder')->getId());
$newBenutzerBild->save();
$asset = Asset::getById($newBenutzerBild->getId());
if ($asset instanceof Asset && $benutzer instanceof Benutzer) {
$benutzer->setBild($asset);
$benutzer->save();
$session = $this->requestStack->getSession();
$session->set('benutzer', $benutzer);
//TODO Logging Function
} else {
die('fehler');
}
return $this->redirect("/account/profil");
}
/**
* @Template
* @Route("/login/check")
*/
public function loginCheckAction(Request $request)
{
if ($request->get("username")) {
$username = $request->get("username");
// HASH ist bumadesk => wird in der Objektklasse definiert
$password = md5("bumadesk" . $request->get("password"));
$userlist = new Benutzer\Listing();
$userlist->setCondition("username = ? AND password = ?", [$username, $password]);
$userlist->load();
if ($userlist->count() == 1) {
// Hier kommen die Sessionbelegungen
$session = $this->requestStack->getSession();
$session->set('benutzer', $userlist->current());
$session->set('berechtigungen', $userlist->current()->getBerechtigungen());
return $this->redirect("/");
} else {
return $this->redirect("/login?fehler=passwort");
}
} else {
return $this->redirect("/login?fehler=username");
}
}
/**
* @Template
* @Route("/logout")
*/
public function logoutAction(Request $request)
{
$session = $this->requestStack->getSession();
$session->clear();
return $this->redirect("/login");
}
/**
* @Template
* @param Request $request
* @return array
*/
public function kundenUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function benutzerUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function mietobjekteUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
// wir schauen was es alles für Mietobjekte gibt
$session = $this->requestStack->getSession();
$usertmp = $session->get('benutzer');
$firma = Benutzer::getById($usertmp->getId())->getParent()->getParent();
$action = $request->get("action");
if ($action != '') {
if ($action == 'edit') {
$storeData = array();
if($firma->getCustomertyp() != '') {
$list = new Classificationstore\CollectionConfig\Listing();
$list->setCondition('LOWER(name) = ' . strtolower($list->quote($firma->getCustomertyp())));
$list->load();
$colId = $list->getData()[0]->getId();
$db = \Pimcore\Db::get();
$query = 'select groupId from classificationstore_collectionrelations where colId = '.$colId;
$relationList = $db->fetchCol($query);
$groupsList = new Classificationstore\GroupConfig\Listing();
$conditionPart = 'ID in (' . implode(',', $relationList) . ')';
$groupsList->setCondition( $conditionPart );
foreach($groupsList->load() as $item){
$storeData[$item->getId()]['bezeichnung'] = $item->getName();
$itemData = new Classificationstore\KeyGroupRelation\Listing();
$relationParts = '(groupId = ' . $list->quote($item->getId()) . ')';
$itemData->setCondition($relationParts);
foreach($itemData->load() as $value){
$storeData[$item->getId()]['options'][$value->getKeyId()]['bezeichnung'] = $value->getName();
$storeData[$item->getId()]['options'][$value->getKeyId()]['type'] = $value->getType();
}
}
}
$datensatzId = $request->get('datensatzId');
$folderofMietobjekte = $firma->getMietobjekte()->getId();
$mietobjekt = Mietobjekt::getById($datensatzId);
if ($mietobjekt instanceof Mietobjekt) {
if ($mietobjekt->getParentId() == $folderofMietobjekte) {
return ['bodyClass' => "main", 'action' => $action, 'firma' => $firma, 'mietobjekt' => $mietobjekt, 'datensatzID' => $datensatzId, 'storedata' => $storeData];
} else {
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.'];
}
}
}
if ($action == 'add') {
if ($request->get('bezeichnung') != '') {
$bezeichnung = $request->get('bezeichnung');
$key = date("Ymd_His", time()) . "_" . File::getValidFilename($bezeichnung);
$mietobjekt = new Mietobjekt();
$mietobjekt->setKey($key);
$mietobjekt->setBezeichnung($request->get('bezeichnung'));
$mietobjekt->setParentId($firma->getMietobjekte()->getId());
$zusatzdatengetter = "Pimcore\\Model\\DataObject\\Objectbrick\\Data\\" . ucfirst(strtolower($firma->getCustomertyp()));
$zusatzdaten = new $zusatzdatengetter($mietobjekt);
$zusatzdatensetter = "set" . ucfirst(strtolower($firma->getCustomertyp()));
$mietobjekt->getZusatzdaten()->setUnterkunft($zusatzdaten);
$mietobjekt->save();
$storeData = array();
if($firma->getCustomertyp() != '') {
$list = new Classificationstore\CollectionConfig\Listing();
$list->setCondition('LOWER(name) = ' . strtolower($list->quote($firma->getCustomertyp())));
$list->load();
$colId = $list->getData()[0]->getId();
$db = \Pimcore\Db::get();
$query = 'select groupId from classificationstore_collectionrelations where colId = '.$colId;
$relationList = $db->fetchCol($query);
$groupsList = new Classificationstore\GroupConfig\Listing();
$conditionPart = 'ID in (' . implode(',', $relationList) . ')';
$groupsList->setCondition( $conditionPart );
foreach($groupsList->load() as $item){
$storeData[$item->getId()]['bezeichnung'] = $item->getName();
$itemData = new Classificationstore\KeyGroupRelation\Listing();
$relationParts = '(groupId = ' . $list->quote($item->getId()) . ')';
$itemData->setCondition($relationParts);
foreach($itemData->load() as $value){
$storeData[$item->getId()]['options'][$value->getKeyId()]['bezeichnung'] = $value->getName();
$storeData[$item->getId()]['options'][$value->getKeyId()]['type'] = $value->getType();
}
}
}
return ['bodyClass' => "main", 'action' => 'edit', 'mietobjekt' => $mietobjekt, 'datensatzID' => $mietobjekt->getId(), 'storedata' => $storeData];
} else {
return ['bodyClass' => "main", 'action' => 'fehler', 'firma' => $firma, 'fehlertext' => 'Es ist ein fehler aufgetreten. Sie haben keine Bezeichnung eingegeben.'];
}
}
if ($action == 'delete') {
$datensatzId = $request->get('datensatzId');
$mietobjekt = Mietobjekt::getById($datensatzId);
if ($mietobjekt instanceof Mietobjekt) {
$mietobjekt->delete();
return ['bodyClass' => "main", 'action' => '', 'firma' => $firma];
} else {
return ['bodyClass' => "main", 'action' => 'fehler', 'firma' => $firma, 'fehlertext' => 'Es ist ein fehler aufgetreten.'];
}
}
if ($action == 'save') {
//prüfen ob die ID auch zur Firma passt !!!
$items = array();
$datensatzId = $request->get('datensatzId');
$folderofMietobjekte = $firma->getMietobjekte()->getId();
$mietobjekt = Mietobjekt::getById($datensatzId);
$mietobjekt->setNebenkosten(new Classificationstore());
$mietobjekt->save();
$activeGroups = [];
$groupCollectionMapping = [];
foreach ($_POST as $key => $value) {
// Verwende einen regulären Ausdruck, um die gewünschten Variablennamen zu überprüfen
if (preg_match('/^classificationstore_\d+_\d+$/', $key)) {
if($value != null) {
$parts = explode('_',$key);
$groupId = $parts[1];
$keyId = $parts[2];
// Aktive Gruppen und Mappings festlegen
$activeGroups[$groupId] = true;
$groupCollectionMapping[$groupId] = 1; // oder ein anderer Wert, falls benötigt
// Werte setzen, sofern nicht leer
$mietobjekt->getNebenkosten()->setLocalizedKeyValue($groupId, $keyId, str_replace(",",".",$value));
}
}
if (preg_match('/^zusatzdaten-[a-zA-Z]+-[a-zA-Z_]+$/', $key)) {
if($value != null) {
$partszusatzdaten = explode('-',$key);
print_r($partszusatzdaten);
$getter1 = "get" .ucfirst($partszusatzdaten[0]);
$getter2 = "get" .ucfirst($partszusatzdaten[1]);
$setter = "set" . ucfirst($partszusatzdaten[2]);
$mietobjekt->$getter1()->$getter2()->$setter($value);
}
}
}
// Aktive Gruppen und Mappings festlegen
$mietobjekt->getNebenkosten()->setFieldname('Nebenkosten');
$mietobjekt->getNebenkosten()->setActiveGroups($activeGroups);
$mietobjekt->getNebenkosten()->setGroupCollectionMappings($groupCollectionMapping);
// Objekt speichern
$mietobjekt->save();
if ($mietobjekt instanceof Mietobjekt) {
if ($mietobjekt->getParentId() == $folderofMietobjekte) {
// wir speichern
//wir schauen mal wieviel Bilder aktuell gespeichert waren
$oldBildAnzahl = count($mietobjekt->getBildmaterial()->getItems());
if ($request->get('old_bildmaterial')) {
if (count($request->get('old_bildmaterial')) <= $oldBildAnzahl) {
// es werden Bilder gelöscht
$dataImageGallery = $mietobjekt->getBildmaterial()->getItems();
foreach ($request->get('old_bildmaterial') as $bildmaterial) {
$items[] = $dataImageGallery[$bildmaterial - 1];
}
}
// jetzt fügen wir die neuen Bilder hinzu sofern es welche gibt
$ImageUploadData = $_FILES['bildmaterial'];
$AnzahlUpload =0;
foreach ($ImageUploadData['tmp_name'] as $value){
if($value != '') {
$AnzahlUpload++;
}
}
$counter = 0;
if($AnzahlUpload > 0) {
while ($counter < $AnzahlUpload) {
echo "<br>" . $counter;
print_r($ImageUploadData['name']);
$filename = strtolower($firma->getKuerzel()) . "_" . date("dmYHis", time()) . "_" . $ImageUploadData['name'][$counter];
$newBenutzerBild = new Asset\Image();
$newBenutzerBild->setKey($filename);
$newBenutzerBild->setFilename($filename);
$newBenutzerBild->setData(file_get_contents($ImageUploadData['tmp_name'][$counter]));
$newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Mietobjekte')->getId());
$newBenutzerBild->save();
$tmpData = new Hotspotimage();
$tmpData->setImage($newBenutzerBild);
$items[] = $tmpData;
$counter++;
}
}
if (count($items) > 0) {
$mietobjekt->setBildmaterial(new ImageGallery($items));
}
} else {
$ImageUploadData = $_FILES['bildmaterial'];
$AnzahlUpload =0;
foreach ($ImageUploadData['tmp_name'] as $value){
if($value != '') {
$AnzahlUpload++;
}
}
$counter = 0;
if($AnzahlUpload > 0) {
while ($counter < $AnzahlUpload) {
if ($ImageUploadData['tmp_name'][$counter] != "") {
$filename = strtolower($firma->getKuerzel()) . "_" . date("dmYHis", time()) . "_" . $ImageUploadData['name'][$counter];
$newBenutzerBild = new Asset\Image();
$newBenutzerBild->setKey($filename);
$newBenutzerBild->setFilename($filename);
$newBenutzerBild->setData(file_get_contents($ImageUploadData['tmp_name'][$counter]));
$newBenutzerBild->setParentId(\Pimcore\Config::getWebsiteConfig()->get('Mietobjekte')->getId());
$newBenutzerBild->save();
$tmpData = new Hotspotimage();
$tmpData->setImage($newBenutzerBild);
$items[] = $tmpData;
}
$counter++;
}
}
if (count($items) > 0) {
$mietobjekt->setBildmaterial(new ImageGallery($items));
} else {
$mietobjekt->setBildmaterial(new ImageGallery(array()));
}
}
$mietobjekt->setBezeichnung($request->get('bezeichnung'));
$mietobjekt->setKurzbeschreibung($request->get('kurzbeschreibung'));
$mietobjekt->setLangtext($request->get('langtext'));
if($request->get('aktive') == 'on'){
$mietobjekt->setAktiv(true);
}else{
$mietobjekt->setAktiv(false);
}
$mietobjekt->setReihenfolge($request->get('reihenfolge'));
$mietobjekt->setPublished(true);
$mietobjekt->save();
return ['bodyClass' => "main", 'action' => '', 'firma' => $firma];
} else {
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.'];
}
}
}
} else {
return ['bodyClass' => "main", 'action' => $action, 'firma' => $firma];
}
}
private function classificationstoresnippet($mietobjekt){
$classificationStore = $mietobjekt->getNebenkosten();
print_r($classificationStore);
foreach ($classificationStore->getGroups() as $group) {
var_dump($group->getConfiguration()->getName());
foreach ($group->getKeys() as $key) {
$keyConfiguration = $key->getConfiguration();
$value = $key->getValue();
if ($value instanceof \Pimcore\Model\DataObject\Data\QuantityValue) {
$value = (string)$value;
}
// print_r($keyConfiguration);
// var_dump([
// $keyConfiguration->getId(),
// $keyConfiguration->getType(),
// $keyConfiguration->getName(),
// $keyConfiguration->getTitle(),
// $value,
// ($key->getFieldDefinition() instanceof QuantityValue),
// ]);
}
}
}
/**
* @Template
* @param Request $request
* @return array
*/
public function preisberechnungUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
$session = $this->requestStack->getSession();
$usertmp = $session->get('benutzer');
$firma = Benutzer::getById($usertmp->getId())->getParent()->getParent();
$action = $request->get("action");
if ($action != '') {
if ($action == 'edit'){
$preisberechnung = Mietobjekt::getById($request->get('datensatzId'));
return ['bodyClass' => "main", 'action' => $action, 'firma' => $firma, 'datensatzID' => $request->get('datensatzId'), 'preisberechnung' => $preisberechnung];
}
if ($action == 'save'){
$mietobjekt = Mietobjekt::getById($request->get('datensatzId'));
$var = $_POST;
if(!array_key_exists('aktiv',$var)){
$var['aktiv'] = 0;
}
$var['aktiv_von'] = new Carbon($var['aktiv_von'] );
$var['aktiv_bis'] = new Carbon($var['aktiv_bis'] );
$dataitems = $mietobjekt->getPreisberechnung();
$meinitem = $dataitems->get($var['index']);
unset($var['index']);
unset($var['action']);
unset($var['datensatzId']);
foreach($var as $key => $value){
$setter = "set" . ucfirst($key);
if(is_string($value)) {
$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.
}else{
$meinitem->$setter($value);
}
}
$mietobjekt->save();
return ['bodyClass' => "main", 'action' => '', 'firma' => $firma];
}
if($action == 'new_preisberechnung'){
$mietobjekt = Mietobjekt::getById($request->get('datensatzId'));
$preisberechnung = $mietobjekt->getPreisberechnung();
$preisgetter = "\\Pimcore\\Model\\DataObject\\Fieldcollection\\Data\\" . ucfirst($request->get('preisberechnung_new'));
$newitem = new $preisgetter();
if($preisberechnung instanceof Fieldcollection){
$preisberechnung->add($newitem);
$mietobjekt->setPreisberechnung($preisberechnung);
} else {
$fieldcol = new Fieldcollection();
$fieldcol->add($newitem);
$mietobjekt->setPreisberechnung($fieldcol);
}
$mietobjekt->save();
return $this->redirect('/preisberechnung?action=edit&datensatzId=' . $request->get('datensatzId'));
}
if($action == 'delete'){
$mietobjekt = Mietobjekt::getById($request->get('datensatzId'));
$preisberechnung = $mietobjekt->getPreisberechnung();
$preisberechnung->remove($request->get('index'));
$mietobjekt->setPreisberechnung($preisberechnung);
$mietobjekt->save();
return $this->redirect('/preisberechnung?action=edit&datensatzId=' . $request->get('datensatzId'));
}
} else {
// Standartansicht
return ['bodyClass' => "main", 'action' => $action, 'firma' => $firma];
}
}
/**
* @Template
* @param Request $request
* @return array
*/
public function stammdatenUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
return ['bodyClass' => "main"];
}
/**
* @Template
* @param Request $request
* @return array
*/
public function einstellungenUebersichtAction(Request $request)
{
if (!$this->Sicherheitscheck()) {
return $this->redirect('/login');
}
$activeTab = 'uebersicht';
if ($request->get('activeTab')) {
$activeTab = $request->get('activeTab');
}
return ['bodyClass' => "main", 'activeTab' => $activeTab];
}
}