<?php
namespace App\Controller;
use App\Entity\Immobiliers;
use App\Entity\SearchData;
use App\Entity\SearchHomeData;
use App\Entity\Statistiques;
use App\Entity\Videos;
use App\Form\SearchHomeType;
use App\Form\SearchType;
use App\Repository\ImmobiliersRepository;
use App\Repository\StatistiquesRepository;
use App\Repository\VideosRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
#[Route('/videos', name: 'app_videos_')]
class VideosController extends AbstractController
{
#[Route('/home/{page?1}/{nbre?100}', name: 'index')]
public function index(ManagerRegistry $mr, $page, $nbre, Request $request,
VideosRepository $videosRepository, StatistiquesRepository $statistiquesRepository): Response
{
$searchHomeData = new SearchHomeData();
$form = $this->createForm(SearchHomeType::class, $searchHomeData);
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_VIDEO']);
$form = $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$allVideos = $videosRepository->findBySearchHome($searchHomeData, ['ville' => 'ASC']);
if($allVideos > 0)
{
return $this->render('videos/index.html.twig', [
'form' => $form->createView(),
'allVideos' => $allVideos,
'allStatistiques' => $allStatistiques
]);
}
$this->addFlash('danger', 'Aucun élement trouvé. Vérifiez l\'orthographe ou Utilisez les synonymes:' . $searchHomeData);
return $this->render('videos/index.html.twig', [
'form' => $form->createView(),
'allVideos' => $allVideos,
'allStatistiques' => $allStatistiques
]);
}
///////////////////////////
$idUserConnect = $this->getUser();
$session = $request->getSession(); // Equivalent à session_star()
$elementVisite = new Statistiques();
$pageStat = 'ACCUEIL_VIDEOS';
/// $idElementStat = $id;
$nameElementStat = 'PAGE_VIDEOS_INDEX';
$idUserStat = $idUserConnect;
if(($session != null) and ($idUserConnect != null))
{
$visitorIdentityStat = 'Email';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
/// $elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
else
{
if(($session != null) and ($idUserConnect <= 0))
{
$visitorIdentityStat = 'INCONNU';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
/// $elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
}
$em = $mr->getManager();
$em->persist($elementVisite);
$em->flush();
///////////////////
$videosRepo = $mr->getRepository(Videos::class);
$nbVideos = $videosRepo->count([]);
$nbrePage = ceil($nbVideos / $nbre);
$allVideos = $videosRepo->findBy([], ['created_at' => 'DESC'], $nbre, ($page - 1) * $nbre);
return $this->render('videos/index.html.twig', [
'form' => $form->createView(),
'allVideos' => $allVideos,
'isPaginated' => true,
'nbrePage' => $nbrePage,
'page' => $page,
'nbre' => $nbre,
'allStatistiques' => $allStatistiques
]);
}
/////
#[Route('/similaire/{catego}', name: 'similars')]
public function similars($catego, ManagerRegistry $mr, VideosRepository $videosRepository,
StatistiquesRepository $statistiquesRepository, Request $request): Response
{
$searchHomeData = new SearchHomeData();
$catSimilar = $catego;
$form = $this->createForm(SearchHomeType::class, $searchHomeData);
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_VIDEO']);
$form = $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
{
$videosSimilars = $videosRepository->findBySearchHome($searchHomeData, ['name' => 'ASC']);
if($videosSimilars > 0)
{
return $this->render('videos/similars.html.twig', [
'form' => $form->createView(),
'videosSimilars' => $videosSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
else
{
$this->addFlash('danger', 'Aucun élement trouvé. Vérifiez l\'orthographe ou Utilisez les synonymes:' . $searchHomeData);
return $this->render('videos/similars.html.twig', [
'form' => $form->createView(),
'videosSimilars' => $videosSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
}
$videosSimilars = $mr->getRepository(Videos::class)->findBy(['categoriesvideos' => $catego]);
return $this->render('videos/similars.html.twig', [
'form' => $form->createView(),
'videosSimilars' => $videosSimilars,
'catSimilar' => $catSimilar,
'allStatistiques' => $allStatistiques
]);
}
#[Route('/playlist/{idU}/{playLi}/{idV}', name: 'playlist')]
public function playlist($playLi, $idU, $idV, ManagerRegistry $mr, Request $request,
StatistiquesRepository $statistiquesRepository): Response
{
$idU = $idU;
$idV = $idV;
$idUserConnect = $this->getUser();
$session = $request->getSession(); // Equivalent à session_star()
$elementVisite = new Statistiques();
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_VIDEO']);
$pageStat = 'DETAIL_VIDEO';
$idElementStat = $idV;
$nameElementStat = 'NOM_VIDEO';
$idUserStat = $idUserConnect;
/// $sessionConnect = $request->getSession();
if(($session != null) and ($idUserConnect != null))
{
$visitorIdentityStat = 'Email';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
/// $elementVisite->setIdSession($session);
}
else
{
if(($session != null) and ($idUserConnect <= 0))
{
$visitorIdentityStat = 'INCONNU';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
}
$em = $mr->getManager();
$em->persist($elementVisite);
$em->flush();
///////////////////
$videoPlaylists = $mr->getRepository(Videos::class)->findBy(['namePlaylist' => $playLi], ['id' => 'ASC']); //OK
return $this->render('videos/playlist.html.twig', [
'videoPlaylists' => $videoPlaylists,
'idU' => $idU,
'idV' => $idV,
'allStatistiques' => $allStatistiques
]);
}
#[Route('/detail/{slug}/{id}', name: 'details')]
public function details($id, ManagerRegistry $mr, VideosRepository $videosRepository,
StatistiquesRepository $statistiquesRepository, Request $request): Response
{
///////////////////////////
$idUserConnect = $this->getUser();
$session = $request->getSession(); // Equivalent à session_star()
$elementVisite = new Statistiques();
$allStatistiques = $statistiquesRepository->findBy(['page' => 'DETAIL_VIDEO']);
$pageStat = 'DETAIL_VIDEO';
$idElementStat = $id;
$nameElementStat = 'NOM_VIDEO';
$idUserStat = $idUserConnect;
if(($session != null) and ($idUserConnect != null))
{
$visitorIdentityStat = 'Email';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
else
{
if(($session != null) and ($idUserConnect <= 0))
{
$visitorIdentityStat = 'INCONNU';
$elementVisite->setPage($pageStat);
$elementVisite->setElement($nameElementStat);
$elementVisite->setIdElement($idElementStat);
$elementVisite->setUsers($idUserStat);
$elementVisite->setVisitorIdentity($visitorIdentityStat);
}
}
$em = $mr->getManager();
$em->persist($elementVisite);
$em->flush();
///////////////////
$videoProperties = $mr->getRepository(Videos::class)->findOneBy(['id' => $id]);
$videosSimilaires = $videosRepository->findBy([], ['id' => 'DESC']);
return $this->render('videos/details.html.twig', [
'videoProperties' => $videoProperties,
'videosSimilaires' => $videosSimilaires,
'allStatistiques' => $allStatistiques
]);
}
}