<?php
namespace App\Controller;
use App\Entity\Accueil;
use App\Entity\User;
use UserEntity\Stacks;
use App\Entity\StackTransit;
use App\Entity\StackZones;
use App\Entity\StackCategories;
use App\Entity\StackSequences;
use App\Entity\StackTimer;
use App\Entity\Commentaires;
use App\Entity\Statistiques;
use App\Repository\AccueilRepository;
use App\Repository\UserRepository;
use App\Repository\StacksRepository;
use App\Repository\StackTransitRepository;
use App\Repository\StackZonesRepository;
use App\Repository\StackCategoriesRepository;
use App\Repository\StackSequencesRepository;
use App\Repository\StackTimerRepository;
use App\Repository\CommentairesRepository;
use App\Repository\StatistiquesRepository;
use App\Form\AccueilType;
use App\Form\StackTimerType;
use App\Form\StacksType;
use App\Form\StacksEditType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\String\Slugger\SluggerInterface;
use Symfony\Component\Security\Core\Security;
use Doctrine\Common\Collections\ArrayCollection;
class ImmemoryController extends AbstractController
{
public $parPage = 5;
private $stacksRepo;
public function __construct(StatistiquesRepository $statRepo, CommentairesRepository $commRep, StackCategoriesRepository $catRep, StackSequencesRepository $seqRep, StackZonesRepository $stackZoneRepo, StacksRepository $stacksRepo, AccueilRepository $accRepo, SluggerInterface $slugger, EntityManagerInterface $em)
{
$this->statRepo = $statRepo;
$this->commRep = $commRep;
$this->catRep = $catRep;
$this->seqRep = $seqRep;
$this->stackZoneRepo = $stackZoneRepo;
$this->stacksRepo = $stacksRepo;
$this->accRepo = $accRepo;
$this->slugger = $slugger;
$this->em = $em;
}
/**
* @Route("/", name="immemory_index")
*/
public function index(): Response
{
//dump(phpinfo());
return $this->render('immemory/index.html.twig', [
'controller_name' => 'immemory_index',
'projet' => 1,
'accueil' => $this->accRepo->find(1),
]);
}
// -------------------------------- tableau de bord
/**
* @Route("/visiteur/", name="visiteur_index")
*/
public function indexM(): Response
{
return $this->render('content/membre/membre.html.twig', [
//return $this->render('membre/index.html.twig', [
'controller_name' => 'visiteur_index',
]);
}
/**
* @Route("/visiteur/listeCards", name="visiteur_stacks_index")
*/
public function visiteur_stacks_index(Request $request, Security $security): Response
{
// recupère le user
$user = $this->get('security.token_storage')->getToken()->getUser();
// recupere les categories
$categories = $this->catRep->findAll();
$sequences = $this->seqRep->findAllOrder();
if ( is_object($user) ){
if ( $user->getRoles()[0] == "ROLE_USER" ){
$immemory = $this->stacksRepo->listeMembre("Duplication");
}
else {
$immemory = $this->stacksRepo->findAll();
}
}
else {
$immemory = $this->stacksRepo->listeMembre("Duplication");
}
// gestion des pages
$parPage = $this->parPage;
$pages = ceil(count($immemory)/$this->parPage);
$pageTemp = $request->request->get("page");
if(!isset($pageTemp)){
$page = $request->query->get("page");
} else {
$page = $pageTemp;
}
if(isset($page)) {
$page = $page;
} else {
$page = 1;
}
// gestion de la liste
if ( is_object($user) ){
if ( $user->getRoles()[0] == "ROLE_USER" ){
$stacks = $this->stacksRepo->listeMembreUser((($page-1)*$parPage));
}
else{
$stacks = $this->stacksRepo->pageResultImmemory((($page-1)*$parPage));
}
} else {
$stacks = $this->stacksRepo->listeMembreUser((($page-1)*$parPage));
}
return $this->render('content/structure/index.html.twig', [
'controller_name' => 'webSite_stacks_index',
'immemory' => $immemory,
'categories' => $categories,
'sequences' => $sequences,
'pages' => $pages,
'currentPage' => $page,
'path' => $page,
'stacks' => $stacks,
'recherche' => '0',
]);
}
/**
* @Route("/visiteur/listeCards/{seq}/page/{page}", name="visiteur_stacks_sequence")
*/
public function visiteur_stacks_sequence(Request $request, $seq, $page, Security $security): Response
{
// recupère le user
$user = $this->get('security.token_storage')->getToken()->getUser();
// recupere les categories
$categories = $this->catRep->findAll();
$sequences = $this->seqRep->findAll();
if (isset($seq))
{
$idSeq = $this->seqRep->findName($seq);
$stacks = $this->stacksRepo->findListSeq($idSeq[0]->getId(), 0);
}
$parPage = $this->parPage;
$pages = ceil(count($stacks)/$parPage);
// recup requete
if($page > 0)
{
$pageAct = ($page*$this->parPage) - $this->parPage;
}
else
{
$pageAct = 0;
}
// gestion de la liste
if ( is_object($user) ){
if ( $user->getRoles()[0] == "ROLE_USER" ){
$stacks = $this->stacksRepo->membrefindListSeq($idSeq[0]->getId(), (($page-1)*$parPage));
}
else{
$stacks = $this->stacksRepo->findListSeq($idSeq[0]->getId(), $pageAct);
}
} else {
$stacks = $this->stacksRepo->membrefindListSeq($idSeq[0]->getId(), (($page-1)*$parPage));
}
return $this->render('content/structure/index.html.twig', [
'controller_name' => 'webSite_stacks_sequence',
'immemory' => $stacks,
'categories' => $categories,
'sequences' => $sequences,
'pages' => $pages,
'currentPage' => $page,
'seq' => $seq,
'stacks' => $stacks,
'index' => $seq,
'recherche' => '0',
]);
}
/**
* @Route("/visiteur/listeCards/page/{page}", name="visiteur_stacks_structure_page")
*/
public function visiteur_stacks_structure_page(Request $request, $page, Security $security): Response
{
// recupère le user
$user = $this->get('security.token_storage')->getToken()->getUser();
// recupere les categories
$categories = $this->catRep->findAll();
$sequences = $this->seqRep->findAllOrder();
if ( is_object($user) ){
if ( $user->getRoles()[0] == "ROLE_USER" ){
$immemory = $this->stacksRepo->listeMembre("Duplication");
}
else {
$immemory = $this->stacksRepo->findAll();
}
} else {
$immemory = $this->stacksRepo->listeMembre("Duplication");
}
// gestion des pages
$parPage = $this->parPage;
$pages = ceil(count($immemory)/$parPage);
// recup requete
if($page > 0) {
$pageAct = ($page*$this->parPage)-$this->parPage;
} else {
$pageAct = 0;
}
// gestion de la liste
if ( is_object($user) ){
if ( $user->getRoles()[0] == "ROLE_USER" ){
$stacks = $this->stacksRepo->membrePageResultImmemory($pageAct);
}
else{
$stacks = $this->stacksRepo->pageResultImmemory($pageAct);
}
} else {
$stacks = $this->stacksRepo->membrePageResultImmemory($pageAct);
}
return $this->render('content/structure/index.html.twig', [
'controller_name' => "webSite_stacks_structure_page",
'immemory' => $immemory,
'categories' => $categories,
'sequences' => $sequences,
'pages' => $pages,
'currentPage' => $page,
'path' => "webSite_stacks_structure_page",
'stacks' => $stacks,
'recherche' => '0',
]);
}
/**
* @Route("/visiteur/listeCards/recherche/{page}/{search}", name="visiteur_stacks_sequence_recherche")
*/
public function visiteur_stacks_sequence_recherche(Request $request, $page, $search): Response
{
$url = $this->get('session')->get('test');
// recup requete
$recherche = $search;
if ($recherche == "0"){
$search = $request->request->get("recherche");
} else {
$search = $recherche;
}
//dump($search);
// recupere les categories
$categories = $this->catRep->findAll();
$sequences = $this->seqRep->findAll();
$stacks = $this->stacksRepo->findAll();
// va chercher les resultats dans cat seq et cards
$resultCat = $this->catRep->searchCat($search);
// si resultat dans seq
if ( $resultCat ) {
// stocke les id seq dans le tableau
$arrCat = [];
for ($i=0; $i<count($resultCat); $i++)
{
array_push($arrCat, $resultCat[$i]->getId());
}
}
// recup les resultats des seq
$resultSeq = $this->seqRep->findName($search);
// si resultat dans seq
if ( $resultSeq ) {
// stocke les id seq dans le tableau
$arrSeq = [];
for ($i=0; $i<count($resultSeq); $i++)
{
array_push($arrSeq, $resultSeq[$i]->getId());
}
}
// recup les resultats dans les cards
if ( count($resultCat) > 0 && count($resultSeq) > 0 ){
$result = $this->stacksRepo->findListSearchPCatSeq($search, $resultCat, $resultSeq);
}
else if ( count($resultCat) > 0 && count($resultSeq) == 0 ){
$result = $this->stacksRepo->findListSearchPCat($search, $resultCat);
}
else if ( count($resultSeq) > 0 ){
$result = $this->stacksRepo->findListSearchPSeq($search, $resultSeq);
}
else {
$result = $this->stacksRepo->findListSearch($search);
}
$pages = ceil(count($result)/$this->parPage);
if(!isset($page)){ $page = 1; }
// recup requete
if($page > 0)
{
$pageAct = ($page*$this->parPage)-$this->parPage;
}
else
{
$pageAct = 0;
}
return $this->render('content/structure/index.html.twig', [
'controller_name' => "webSite_stacks_sequence_recherche",
'categories' => $categories,
'sequences' => $sequences,
'stacks' => $result,
'immemory' => $result,
'pages' => $pages,
'currentPage' => $page,
'search' => $search,
'seq' => "recherche",
'search' => $search,
'recherche' => $recherche,
]);
}
/**
* @Route("/visiteur/listeCards/{id}_{recherche}", name="visiteur_stacks_show", methods={"GET"})
*/
public function visiteur_stacks_show($id, $recherche): Response
{
$stack = $this->stacksRepo->find($id);
$url = $this->get('session')->get('test');
if ( $stack->getNavH() !== null ){
$stackH = $this->stacksRepo->find($stack->getNavH());
}
else{
$stackH = 0;
}
if ( $stack->getNavG() !== null ){
$stackG = $this->stacksRepo->find($stack->getNavG());
}
else{
$stackG = 0;
}
if ( $stack->getNavD() !== null ){
$stackD = $this->stacksRepo->find($stack->getNavD());
}
else{
$stackD = 0;
}
if ( $stack->getNavBG() !== null ){
$stackBG = $this->stacksRepo->find($stack->getNavBG());
}
else{
$stackBG = 0;
}
if ( count($stack->getTimers()) > 0){
$stackTimer = $this->stacksRepo->find($stack->getTimers()[0]->getId());
}
else{
$stackTimer = $stackH;
}
$stackZones = [];
if ( count($stack->getZones()) > 0){
for ($i=0; $i<count($stack->getZones()); $i++){
if ($stack->getZones()[$i]->getRollover() != null){
$stackZones[] = $this->stacksRepo->find($stack->getZones()[$i]->getRollover());
}
else{
$stackZones[] = $this->stacksRepo->find($stack->getZones()[$i]->getDestination());
}
}
}
else{
$stackZones = $stackH;
}
return $this->render('content/structure/show.html.twig', [
'controller_name' => 'webSite_stacks_show',
'stack' => $stack,
'urlBack' => $url,
'recherche' => $recherche,
'stackH' => $stackH,
'stackG' => $stackG,
'stackD' => $stackD,
'stackBG' => $stackBG,
'stackTimer' => $stackTimer,
'stackZones' => $stackZones,
]);
}
// -------------------------------- projo900bif
public function mouche($action, $id)
{
$stat = new Statistiques();
$macard = $this->stacksRepo->find($id);
$stat->setIp($_SERVER['REMOTE_ADDR']);
$stat->setOs($_SERVER['HTTP_USER_AGENT']);
$stat->setAction($action);
$stat->setCard($macard);
$stat->setDateCrea(new \DateTime());
$this->em->persist($stat);
$this->em->flush();
}
}