<?php
namespace App\Core\Controller\Web;
use App\Core\Controller\Api\HomepageApiController;
use App\Core\Entity\Categoria;
use App\Core\Entity\Curso;
use App\Core\Entity\User;
use App\Core\Repository\CategoriaRepository;
use App\Core\Repository\CursoRepository;
use App\Core\Repository\RecordatorioAgendaRepository;
use App\Repository\TareasCursoRepository;
use Knp\Component\Pager\PaginatorInterface;
use Lexik\Bundle\JWTAuthenticationBundle\Encoder\JWTEncoderInterface;
use Lexik\Bundle\JWTAuthenticationBundle\Services\JWSProvider\JWSProviderInterface;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mercure\PublisherInterface;
use Symfony\Component\Mercure\Update;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\Serializer\SerializerInterface;
class HomepageController extends AbstractController
{
#[Route('/', name: 'app_homepage')]
function homepage(Request $request, JWTEncoderInterface $JWTEncoder, AuthenticationUtils $authenticationUtils, UrlGeneratorInterface $urlGenerator) {
//Me aseguro que el login sea en https en el servidor...
$strHostName = $request->getHttpHost();
if ($_ENV['APP_ENV'] === 'prod') {
$tieneWWW = strpos($strHostName, 'www');
if ($tieneWWW === false) {
$strURL = "www.{$strHostName}";
return new RedirectResponse("https://{$strURL}");
}
if (!$request->isSecure()) {
$strURL = "https://{$strHostName}";
return new RedirectResponse("{$strURL}");
}
}
else if ($_ENV['APP_ENV'] === 'test') {
if (!$request->isSecure()) {
$strURL = "https://{$strHostName}";
return new RedirectResponse("{$strURL}");
}
}
if ($this->getUser()) {
$redirectResponse = new RedirectResponse($urlGenerator->generate('app_perfil'));
$uat = [
'id' => $this->getUser()->getId(),
'idMaestro' => ($this->getUser()->getMaestro()) ? $this->getUser()->getMaestro()->getId() : 0,
'idEstudiante' => ($this->getUser()->getEstudiante()) ? $this->getUser()->getEstudiante()->getId() : 0,
'autorizado' => true];
$redirectResponse->headers->setCookie(Cookie::create('UAT',$JWTEncoder->encode($uat)));
return $redirectResponse;
}
return $this->render('homepage/homepage.html.twig');
}
/*
* #[Route('/.well-known/assetlinks.json', name: 'app_wellknown_assetlinks')]
*/
/*
function wellKnownAssetsLinks(Request $request): JsonResponse
{
$asset_link_json = [[
"relation" => ["delegate_permission/common.handle_all_urls"],
"target" => [
"namespace"=> "android_app",
"package_name"=> "com.koleyo.koleyo",
"sha256_cert_fingerprints" => [""]
]
]];
return new JsonResponse($asset_link_json);
}
*/
#[Route('/cursos', name: 'app_homepage_cursos')]
function cursosDisponibles(PaginatorInterface $paginator, CursoRepository $cursoRepository, CategoriaRepository $categoriaRepository, Request $request) {
$datos = HomepageApiController::obtenerCursos($paginator, $cursoRepository, $categoriaRepository, $request, $this->getUser());
return $this->render('homepage/cursos.html.twig', $datos);
}
}