<?php
namespace App\Controller\Front;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Manager\InfoManager;
use App\Manager\LegalCookiePolicyManager;
use App\Manager\LegalFinancingManager;
use App\Manager\LegalInformationManager;
use App\Manager\LegalPrivacyPolicyManager;
use App\Manager\LegalTermConditionManager;
use App\Manager\LegalUseConditionManager;
use App\Manager\ConductaProveedorManager;
class LegalController extends AbstractController
{
protected array $locals = [];
public function __construct(private InfoManager $info_mgr)
{
$this->locals['menu_active'] = '';
}
#[Route(path: '/condiciones-de-uso/', name: 'terms_of_use', methods: ['GET'])]
#[Template('front/legal/terms_use.html.twig')]
public function termsUseAction(Request $request, LegalUseConditionManager $lucmgr): array
{
$this->locals['home'] = $lucmgr->find(1);
return $this->locals;
}
#[Route(path: '/terminos-y-condiciones/', name: 'terms_conditions', methods: ['GET'])]
#[Template('front/legal/terms_conditions.html.twig')]
public function termsConditionsAction(Request $request, LegalTermConditionManager $ltcmgr): array
{
$this->locals['home'] = $ltcmgr->find(1);
return $this->locals;
}
#[Route(path: '/politicas-de-cookies/', name: 'cookie_policies', methods: ['GET'])]
#[Template('front/legal/cookie_policies.html.twig')]
public function cookiePoliciesAction(Request $request, LegalCookiePolicyManager $lcpmgr): array
{
$this->locals['home'] = $lcpmgr->find(1);
return $this->locals;
}
#[Route(path: '/informacion-legal/', name: 'legal_information', methods: ['GET'])]
#[Template('front/legal/legal_information.html.twig')]
public function legalInformationAction(Request $request, LegalInformationManager $limgr): array
{
$this->locals['home'] = $limgr->find(1);
return $this->locals;
}
#[Route(path: '/politicas-de-privacidad/', name: 'privacy_policies', methods: ['GET'])]
#[Template('front/legal/privacy_policies.html.twig')]
public function privacyPoliciesAction(Request $request, LegalPrivacyPolicyManager $lppmgr): array
{
$this->locals['home'] = $lppmgr->find(1);
return $this->locals;
}
#[Route(path: '/legal-financiamiento/', name: 'legal_financing', methods: ['GET'])]
#[Template('front/legal/legal_financing.html.twig')]
public function legalFinancingAction(Request $request, LegalFinancingManager $lfmgr): array
{
if (!$this->checkIfActive('legal_financing')) {
throw $this->createNotFoundException('No encontrado');
}
$this->locals['home'] = $lfmgr->find(1);
return $this->locals;
}
#[Route(path: '/codigo-de-conducta-proveedores/', name: 'suppliers_code', methods: ['GET'])]
#[Template('front/legal/suppliers_code.html.twig')]
public function supplierCodeAction(Request $request, ConductaProveedorManager $lppmgr): array
{
$info = $this->info_mgr->find(1);
if (!$info->isLinkSupplierCodeShow()) {
throw $this->createNotFoundException('No encontrado');
}
$this->locals['home'] = $lppmgr->find(1);
return $this->locals;
}
protected function checkIfActive($route): bool
{
$info = $this->info_mgr->find(1);
$items = $info->getFooterLegalLinks();
$result = array_filter($items, fn($e) => $e['show'] && $route == $e['page']);
return count((array) $result) > 0;
}
}