<?php
/**
* Created by Elements.at New Media Solutions GmbH
*
*/
namespace App\Controller;
use App\Twig\ConfigHelper;
use Pimcore\Model\DataObject\Contact;
use Pimcore\Model\DataObject\Location;
use Pimcore\Model\DataObject\SiteConfig;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ContactController extends AbstractController
{
public function __construct(private ConfigHelper $configHelper)
{
}
/**
*
* @param Request $request
*
* @return Response
*/
public function overviewAction(Request $request): Response
{
$siteConfig = $this->configHelper->getSiteConfig();
$resort = $this->document->getProperty('resort');
$subResort = $this->document->getProperty('subResort');
$contacts = new Contact\Listing();
$contacts->addConditionParam("name != '' AND firstname != '' AND (notShow IS NULL OR notShow = 0)");
$contacts->addConditionParam('config LIKE :config', ['config' => '%' . $siteConfig->getId() . '%']);
if($resort != null){
$contacts->addConditionParam("resorts LIKE :resort", ['resort' => '%,' . $resort . ',%']);
}
if($subResort != null){
$contacts->addConditionParam("subResorts LIKE :subResort OR subResorts IS NULL OR subResorts = ''", ['subResort' => '%,' . $subResort . ',%']);
}
if ($request->get('q')) {
$contacts->addConditionParam('name LIKE :q OR firstname LIKE :q or sellArea LIKE :q OR position LIKE :q OR department__id IN
(SELECT o_id FROM object_localized_Departments_' . $request->getLocale() . ' WHERE name LIKE :q)', ['q' => '%' . $request->get('q') . '%']);
}
$contacts->setOrderKey(['sorter', 'name']);
$contacts->setOrder(['ASC', 'ASC']);
$returnArray = [
'contactPersons' => $contacts,
];
if ($request->isXmlHttpRequest() && $request->get('ajax')) {
return $this->json([
'success' => true,
'html' => $this->render('contact/includes/contact-content.html.twig', $returnArray)->getContent(),
]);
}
return $this->renderTemplate('contact/overview.html.twig', $returnArray);
}
}