<?php
namespace App\Controller;
use App\DataMapper\Product\ProductListingDataMapper;
use App\Model\Product\Category;
use Knp\Component\Pager\PaginatorInterface;
use Pimcore\Controller\FrontendController;
use Pimcore\Model\Asset;
use Pimcore\Model\DataObject;
use Pimcore\Model\DataObject\ProductLine;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends FrontendController
{
/**
* @Route ("/testing-url", name="testing_url")
* @return void
*/
public function test(Request $request, PaginatorInterface $paginator){
/*$test = Product::getById(8389);
dd($test->getClass()->getFieldDefinition("shoeForm"));
$paginator = (new ProductRepository())->paginate($request, $paginator);
dd($paginator->getItems());
*/
$productLines = new DataObject\ProductLine\Listing();
foreach($productLines as $productLine) {
$pages[] = [
'label' => $productLine->getName(),
'url' => '/' . $request->getLocale() . '/products/'.$productLine->getKey().'~l' . $productLine->getId()
];
}
dd($productLines);
$categories = Category::getByPath('/Categories/products/')->getChildren();
foreach($categories as $category){
}
dd($pages);
dd(Category::getByPath('/Categories/products/')->getChildren());
dd(\App\Model\Product\Product::getById(10939)->getProductCategories());
dd(ProductListingDataMapper::list([...$paginator->getItems()])->all($request));
}
/**
* @Route ("/{_locale}/konformitaetserklaerungen", name="find_conformity_declaration")
* @param Request $request
*/
public function findConformityDeclaration(Request $request){
$term = $request->get('term');
// remove spaces and special characters from $term
$term = preg_replace('/[^A-Za-z0-9]/', '', $term);
$wrongTerm = false;
$results = [];
if(strlen($term) >= 9){
$articleID = substr($term, 0, 6);
$quality = substr($term, 6, 3);
// get folder "CEs"
$folder = Asset::getByPath('/Assets/Konformitaetserklaerungen');
if ($folder && $folder->getType() == 'folder') {
$children = $folder->getChildren();
$specificResults = [];
foreach ($children as $asset) {
if ($asset->getType() == 'document') {
// Extract articleID and quality from the document name
$filename = $asset->getFilename();
// Match different patterns of filenames
if (preg_match('/^CE (\d{4}) (\d{3})/', $filename, $matches)) {
$docArticleID = $matches[1]; // Add leading zeros to match the format
$docQuality = $matches[2];
// Check if articleID and quality match
if (substr($articleID, 0, 4) === $docArticleID && $quality === $docQuality) {
$results[] = [
'label' => $filename,
'value' => $asset->getFullPath()
];
}
} elseif (preg_match('/^CE (\d{5}) (\d{3})/', $filename, $matches)) {
$docArticleID = $matches[1];
$docQuality = $matches[2];
// Check if articleID and quality match
if (substr($articleID, 0, 5) === $docArticleID && $quality === $docQuality) {
$specificResults[] = [
'label' => $filename,
'value' => $asset->getFullPath()
];
}
}
}
// Prefer specific results if available
if (!empty($specificResults)) {
$results = $specificResults;
}
}
}
}else{
$wrongTerm = true;
}
return $this->render('conformity_declaration/index.html.twig', [
'results' => $results,
'wrongTerm' => $wrongTerm
]);
}
/**
* @param Request $request
* @return Response
*/
public function defaultAction(Request $request): Response
{
return $this->render('default/default.html.twig');
}
/**
* @param Request $request
* @param int $code
* @return Response
*/
public function errorAction(Request $request, int $code = 404): Response
{
return $this->render('Exception/error.html.twig', [
'code' => $code
]);
}
}