<?php
namespace App\Controller;
use App\Entity\Startlink;
use App\Helpers\Mysql\MysqlStartlink;
use App\Helpers\Odbc\OdbcKundenstamm;
use App\Helpers\Storage\StorageHelper;
use App\Repository\CategoryRepository;
use App\Repository\ColourRepository;
use App\Repository\ConnectionRepository;
use App\Repository\DuplexprintingRepository;
use App\Repository\FieldofuseRepository;
use App\Repository\InkRepository;
use App\Repository\ManufacturerRepository;
use App\Repository\ModelRepository;
use App\Repository\OperatingSystemRepository;
use App\Repository\PapersizeRepository;
use App\Repository\PaperstockRepository;
use App\Repository\PfunctionsRepository;
use App\Repository\PrinterseriesRepository;
use App\Repository\PrinterspeedRepository;
use App\Repository\ProductRepository;
use App\Repository\ResolutionsRepository;
use App\Repository\StartlinkRepository;
use App\Service\BasketService;
use App\Service\MailService;
use App\Service\SessionService;
use ContainerYXH9NkN\getDebug_Security_Firewall_Authenticator_MainService;
use mysql_xdevapi\Schema;
use Symfony\Bridge\Doctrine\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class HomeController extends BaseController
{
/**
* @Route("/", name="home")
*/
public function home(SessionService $sessionService, ProductRepository $productRepository, Request $request,MysqlStartlink $mysqlStartlink): Response
{
//MailService::send('michael.reymann@bendata.de', 'test terra', 'test_terra bodd');
$products = $productRepository->findAll();
$user = $sessionService->getLoggedUser();
$kundenstamm = new OdbcKundenstamm();
$loggedIn = $user !== null;
if ($loggedIn) {
$kndstammData = $kundenstamm->getUserFormatted($user->getCustCode());
$kndgr = $kndstammData->getKGR();
} else $kndgr = "1";
$wochentag = date("w", time());
$startBild = $mysqlStartlink->findOneWithRawSql($wochentag,$kndgr);
if ($startBild !== null) {
$start = StorageHelper::getUploadsURLPath($startBild->getBildname());
} else {
$start = StorageHelper::getUploadsURLPath("Startbild_2025.jpg");
}
if (! file_exists(StorageHelper::getUploadsFullPath($start))) {
$start = StorageHelper::getUploadsURLPath("Startbild_2025.jpg");
}
return $this->baseRender('base.html.twig',
[
"products" => [],
"start" => $start,
]
);
}
/**
* @Route("/save-entity", name="saveeentity")
*/
public function saveEntity(SessionService $sessionService, MysqlStartlink $mysqlStartlink): Response
{
$startlink = new Startlink();
$startlink->setLink("teestlink" . rand(1,100));
$startlink->setKndgr(rand(1,99));
$startlink->setAktiv(0);
$startlink->setBildname("testbildname" . rand(1,1000));
$startlink->setRefkey("key" .rand(1,100));
$mysqlStartlink->add($startlink, true);
$data = $mysqlStartlink->findLastAppearance();
//var_dump($data->getId());
//var_dump($data->getLink());
//var_dump($data->getKndgr());
//var_dump($data->getBildname());
//var_dump($data->getAktiv());
// Hier laden
echo "Daten vor dem Speichern: <br>";
$startlink = $mysqlStartlink->findWithRawSql(1);
echo "id: " . $startlink->getId() . "<br>";
echo "link: " . $startlink->getLink() . "<br>";
// speichern
// Änderungen machen um diese später zu sehen
$startlink->setLink("testlink" . rand(1,100));
$mysqlStartlink->add($startlink, true);
$startlink = $mysqlStartlink->findWithRawSql(1);
echo "Daten nach Speichern: <br>";
echo "id: " . $startlink->getId() . "<br>";
echo "link: " . $startlink->getLink() . "<br>";
exit();
return $this->baseRender('base.html.twig',
[
"products" => []
]
);
}
/**
* @Route("/shop", name="shop")
*/
public function shop(SessionService $sessionService, ProductRepository $productRepository, Request $request): Response
{
$products = $productRepository->findAll();
return $this->baseRender('home/index.html.twig',
[
"products" => $products
]
);
}
/**
* @Route("/product/{id}", name="product", methods={"GET"})
*/
public function product(int $id, SessionService $sessionService, ProductRepository $productRepository, Request $request, BasketService $basketService): Response
{
$product = $productRepository->findOneBy(["id" => $id]);
return $this->baseRender('home/product.html.twig',
[
"product" => $product,
"basket" => $basketService->getBasketData()
]
);
}
/**
* @Route("/product/add/{id}", name="product_add", methods={"POST"})
*/
public function productAdd(int $id, SessionService $sessionService, Request $request): Response
{
$user = $sessionService->getLoggedUser();
$number = $request->get("number");
$sessionService->setSessionBasket($id, $number);
var_dump($sessionService->getSessionVar("basket"));
$loggedIn = $user !== null;
return $this->json(["status" => $id]);
}
/**
* @Route("/basket", name="basket", methods={"GET"})
*/
public function basket(SessionService $sessionService, BasketService $basketService): Response
{
$basket = $basketService->getBasketData();
return $this->baseRender('home/basket.html.twig',
[
"sum" => $basket["sum"],
"products" => $basket["products"]
]
);
}
/**
* @Route("/sum", name="sum", methods={"GET"})
*/
public function sum(SessionService $sessionService, BasketService $basketService): Response
{
$user = $sessionService->getLoggedUser();
return $this->json($basketService->getBasketData()["sum"]);
}
/**
* @Route("/basket/remove/{id}", name="basket_remove", methods={"POST"})
*/
public function basketRemove($id, SessionService $sessionService, BasketService $basketService): Response
{
$user = $sessionService->getLoggedUser();
$loggedIn = $user !== null;
$basket = $basketService->removeItem($id);
return $this->json(
[
"flash" => $sessionService->getSessionFlash(),
"logged_in" => $loggedIn,
"user" => $user,
"sum" => $basket["sum"],
"products" => $basket["products"]
]
);
}
/**
* @Route("/allproducts", name="all_products", methods={"GET"})
*/
public function allProducts(SessionService $sessionService, ProductRepository $productRepository): Response
{
$user = $sessionService->getLoggedUser();
$products = $productRepository->findAll();;
return $this->json(
[
"products" => $products
]
);
}
/**
* @Route("/basket/addone/{id}", name="basket_add", methods={"POST"})
*/
public function basketAddOne($id, SessionService $sessionService, BasketService $basketService): Response
{
$user = $sessionService->getLoggedUser();
$loggedIn = $user !== null;
$basket = $basketService->addItem($id);
return $this->json(
[
"flash" => $sessionService->getSessionFlash(),
"logged_in" => $loggedIn,
"user" => $user,
"sum" => $basket["sum"],
"products" => $basket["products"]
]
);
}
/**
* @Route("/kontakt", name="kontakt")
*/
public function kontakt(SessionService $sessionService): Response
{
return $this->baseRender('content/kontakt.html.twig',);
}
/**
* @Route("/ueber-bendata", name="ueber")
*/
public function about(SessionService $sessionService): Response
{
return $this->baseRender('content/ueber.html.twig',);
}
/**
* @param CategoryRepository $categoryRepository
* @return Response
*/
public function ListCategory(CategoryRepository $categoryRepository): Response
{
$categories = $categoryRepository->findAll();
return $this->baseRender('home/includes/categories.html.twig', [
'categories' => $categories,
'options' => [
'name' => 'category',
'title' => 'Category',
]]);
}
/**
* @param ColourRepository $colourRepository
* @return Response
*/
public function ListColour(ColourRepository $colourRepository): Response
{
$elements = $colourRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'colour',
'title' => 'Colour',
]]);
}
/**
* @param ConnectionRepository $connectionRepository
* @return Response
*/
public function ListConnection(ConnectionRepository $connectionRepository): Response
{
$elements = $connectionRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'connection',
'title' => 'Connection',
]]);
}
/**
* @param DuplexprintingRepository $duplexprintingRepository
* @return Response
*/
public function ListDuplexprinting(DuplexprintingRepository $duplexprintingRepository): Response
{
$elements = $duplexprintingRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'duplexprinting',
'title' => 'Duplex Printing',
]]);
}
/**
* @param FieldofuseRepository $fieldofuseRepository
* @return Response
*/
public function ListFielofuse(FieldofuseRepository $fieldofuseRepository): Response
{
$elements = $fieldofuseRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'fieldofuse',
'title' => 'Field of use',
]]);
}
/**
* @param InkRepository $inkRepository
* @return Response
*/
public function ListInk(InkRepository $inkRepository): Response
{
$elements = $inkRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'ink',
'title' => 'Ink',
]]);
}
/**
* @param ManufacturerRepository $manufacturerRepository
* @return Response
*/
public function ListManufacturer(ManufacturerRepository $manufacturerRepository): Response
{
$elements = $manufacturerRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'manufacturer',
'title' => 'Manufacturer',
]]);
}
/**
* @param ModelRepository $modelRepository
* @return Response
*/
public function ListModel(ModelRepository $modelRepository): Response
{
$elements = $modelRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'model',
'title' => 'Printer Model',
]]);
}
/**
* @param OperatingSystemRepository $operatingSystemRepository
* @return Response
*/
public function ListOperatingSystem(OperatingSystemRepository $operatingSystemRepository): Response
{
$elements = $operatingSystemRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'operatingsystem',
'title' => 'Operating System',
]]);
}
/**
* @param PapersizeRepository $papersizeRepository
* @return Response
*/
public function ListPapersize(PapersizeRepository $papersizeRepository): Response
{
$elements = $papersizeRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'size',
'title' => 'Paper Size',
]]);
}
/**
* @param PaperstockRepository $paperstockRepository
* @return Response
*/
public function ListPaperstock(PaperstockRepository $paperstockRepository): Response
{
$elements = $paperstockRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'stock',
'title' => 'Paper Stock',
]]);
}
/**
* @param PfunctionsRepository $pfunctionsRepository
* @return Response
*/
public function ListPfunctions(PfunctionsRepository $pfunctionsRepository): Response
{
$elements = $pfunctionsRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'functions',
'title' => 'Functions',
]]);
}
/**
* @param PrinterseriesRepository $printerseriesRepository
* @return Response
*/
public function ListPrinterseries(PrinterseriesRepository $printerseriesRepository): Response
{
$elements = $printerseriesRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'series',
'title' => 'Printer Series',
]]);
}
/**
* @param PrinterspeedRepository $printerspeedRepository
* @return Response
*/
public function ListPrinterspeed(PrinterspeedRepository $printerspeedRepository): Response
{
$elements = $printerspeedRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'speed',
'title' => 'Print speed',
]]);
}
/**
* @param ResolutionsRepository $resolutionsRepository
* @return Response
*/
public function ListResolutions(ResolutionsRepository $resolutionsRepository): Response
{
$elements = $resolutionsRepository->findAll();
return $this->baseRender('home/includes/elements.html.twig', [
'elements' => $elements,
'options' => [
'name' => 'resolution',
'title' => 'Resolution',
]]);
}
}