<?php
namespace App\Utils\Uniqskills;
use App\Entity\Gos\PortalSettings;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Event\RequestEvent;
class DomainListener
{
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function domainListener(RequestEvent $event)
{
$request = $event->getRequest();
$domain = $request->getHttpHost();
$portalSettings = $this->em->getRepository(PortalSettings::class)->findOneByUniqskillsDomain($domain);
if (empty($portalSettings))
{
$portalSettings = $this->em->getRepository(PortalSettings::class)->findDefaultForUniqskills();
$schema = $_ENV['USING_HTTPS'] ? 'https://' : 'http://';
$url = $schema . $portalSettings->getDomain();
$request->getSession()->set('portalSettingsHash', $portalSettings->getHash());
$event->setResponse(new RedirectResponse($url));
}
$request->getSession()->set('portalSettingsHash', $portalSettings->getHash());
$request->getSession()->set('domain', $portalSettings->getId());
}
public function getRequestSource(Request $request)
{
if ($request->attributes->get('source', false))
{
$source = $request->attributes->get('source');
$request->getSession()->set('source', $source);
return $source;
}
$referer = Request::create($request->headers->get('referer'));
if ($referer->attributes->get('source', false))
{
$source = $referer->attributes->get('source');
$request->getSession()->set('source', $source);
return $source;
}
if ($request->getSession()->get('source', false))
{
return $request->getSession()->get('source');
}
return 'gos';
}
public function checkCountryCode(Request $request): void
{
$fixCode = $request->get('fixCountryCode');
if (!is_null($fixCode) && strlen($fixCode) == 2)
{
$fixCode = strtoupper($fixCode);
$request->getSession()->set('myCountryCode', $fixCode);
$request->getSession()->set('fixCountryCode', $fixCode);
}
}
}