<?php
namespace App\Controller\GestionComerciale;
use App\Entity\GestionComerciale\Activite;
use App\Entity\GestionComerciale\Alerte;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class AlerteController extends AbstractController
{
/**
* @Route("/activite-page/{id}", name="dtc_activite_page")
*/
public function activitePageAction(Request $request, Activite $activite, EntityManagerInterface $em)
{
$repo_activite = $em->getRepository(Activite::class);
$activite->setTimestamp(new \Datetime());
$valide = true;
$raz = false;
$em->persist($activite);
$em->flush();
$em->refresh($activite);
$invites = null;
if (is_object($activite->getDateFin())) {
$valide = false;
//Si personne n'est venu sur la page on raz de la dateFin
$invites = $repo_activite->getUtilisateursPage($activite);
if (count($invites) == 0) {
$valide = true;
$activite->setDateFin(null);
$em->persist($activite);
$em->flush();
$em->refresh($activite);
$raz = true;
}
}
// $invites = $repo_activite->findBy(array("objet"=>$activite->getObjet(),"action"=>$activite->getAction(),"idObjet"=>$activite->getIdObjet()));
if (is_null($invites)) {
$invites = $repo_activite->getUtilisateursPage($activite);
}
$total_utilisateurs = count($invites);
$rendu = $this->renderView('GestionComerciale/Activite/utilisateurs.html.twig', ['invites' => $invites]);
return new JsonResponse(['raz' => $raz, 'valide' => $valide, 'rendu' => $rendu, 'totalUtilisateurs' => $total_utilisateurs], 200, ['Content-Type' => 'application/json']);
}
/**
* @Route("/alerte/{type}/{id}", name="dtc_alerte")
*/
public function alerteAction(Request $request, EntityManagerInterface $em)
{
//var_dump('test');
$user = $this->getUser();
// $currentRoute = dirname($_SERVER['SERVER_PROTOCOL']) . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// dump($currentRoute);
$currentRoute = $_SERVER['REQUEST_URI'];
//echo "toto".$currentRoute;
$route = $request->request->get('route');
$repo_activite = $em->getRepository(Activite::class);
$acti = $repo_activite->findOneBy([
'url' => $currentRoute,
]);
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'url' => $currentRoute,
'supprime' => false,
]);
$onglet = $request->request->get('onglet');
if (is_object($aler) && $aler->getSupprime() == false) {
$lu = $aler->getLu();
$refus = $aler->getRefus();
$quitter = $aler->getQuitter();
$nomEmetteur = $aler->getEmetteur()->getNom();
$prenomEmetteur = $aler->getEmetteur()->getPrenom();
$nomRecepteur = $aler->getRecepteur()->getNom();
$prenomRecepteur = $aler->getRecepteur()->getPrenom();
$skypeRecepteur = $aler->getRecepteur()->getSkype();
$telRecepteur = $aler->getRecepteur()->getTelephone();
} else {
$lu = "Null";
$refus = "Null";
$quitter = false;
$nomEmetteur = "null";
$prenomEmetteur = "null";
$nomRecepteur = "null";
$prenomRecepteur = "null";
$telRecepteur = null;
$skypeRecepteur = null;
}
if (is_object($acti)) {
$timestampactivite = $acti->getTimestamp();
$timestampactuelle = new \DateTime();
$time = $timestampactuelle->diff($timestampactivite);
if ($acti->getUtilisateur() == $user) {
$acti->setTimestamp(new \DateTime());
$em->persist($acti);
$em->flush();
if ($lu == false) {
$aler->setLu(true);
$em->persist($aler);
$em->flush();
$lock = 3;
return new JsonResponse(
[
'valide' => '0',
'url' => $currentRoute,
'lu' => $lu,
'lock' => $lock,
'refus' => $refus,
'quitter' => $quitter,
'nomEmetteur' => $nomEmetteur,
'prenomEmetteur' => $prenomEmetteur,
'nomRecepteur' => $nomRecepteur,
'prenomRecepteur' => $prenomRecepteur,
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
} else {
$lock = 3;
return new JsonResponse(
[
'valide' => '0',
'url' => $currentRoute,
'lu' => $lu,
'lock' => $lock,
'refus' => $refus,
'quitter' => $quitter,
'nomEmetteur' => $nomEmetteur,
'prenomEmetteur' => $prenomEmetteur,
'nomRecepteur' => $nomRecepteur,
'prenomRecepteur' => $prenomRecepteur,
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
}
}
if ($time->format('%s') >= 15 || $time->format('%i') >= 1 || $time->format('%h') >= 1 || $time->format('%d') >= 1 || $time->format('%m') >= 1 || $time->format(
'%y'
) >= 1 && $acti->getUtilisateur() != $user) {
if (is_object($aler) && $aler->getSupprime() == false) {
if ($aler->getEmetteur() == $user) {
$aler->setSupprime(true);
$em->persist($aler);
$em->flush();
$lock = 2;
return new JsonResponse(
[
'valide' => '0',
'url' => $currentRoute,
'lock' => $lock,
'titre' => 'Un utilisateur est dejà sur cette page ',
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
} else {
$lock = 4;
return new JsonResponse(
[
'valide' => '0',
'url' => $currentRoute,
'lu' => $lu,
'lock' => $lock,
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'skypeRecepteur' => $skypeRecepteur,
'telRecepteur' => $telRecepteur,
]
);
}
} else {
$lock = 4;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock]);
}
$acti->setTimestamp(new \DateTime());
$acti->setUtilisateur($user);
$em->persist($acti);
$em->flush();
} else {
if ($acti->getUtilisateur() != $user) {
if (is_object($aler)) {
$refus = $aler->getRefus();
$quitter = $aler->getQuitter();
if ($refus == 2) {
$acti->setUtilisateur($user);
$aler->setSupprime(true);
$em->persist($acti);
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(
[
'valide' => '0',
'url' => $acti->getUrl(),
'lock' => $lock,
'refus' => $refus,
'quitter' => $aler->getQuitter(),
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
}
if ($quitter == true) {
$aler->setRefus(1);
$aler->setQuitter(false);
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(
[
'valide' => '0',
'url' => $acti->getUrl(),
'lock' => $lock,
'refus' => $refus,
'quitter' => $aler->getQuitter(),
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
} else {
$aler->setTimestamp(new \DateTime());
$aler->setEmetteur($user);
$aler->setSupprime(false);
$aler->setQuitter(false);
$aler->setRecepteur($acti->getUtilisateur());
$aler->setURL($acti->getUrl());
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(
[
'valide' => '0',
'url' => $acti->getUrl(),
'lock' => $lock,
'refus' => $refus,
'quitter' => $quitter,
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
}
} else {
$aler = new Alerte();
$aler->setEmetteur($user);
$aler->setRecepteur($acti->getUtilisateur());
$aler->setRoute($route);
$aler->setLu(false);
$aler->setOnglet($onglet);
$aler->setSupprime(false);
$aler->setRefus(0);
$aler->setURL($acti->getUrl());
$em->persist($aler);
$em->flush();
$lock = 1;
return new JsonResponse(
[
'valide' => '0',
'url' => $acti->getUrl(),
'onglet' => $onglet,
'lock' => $lock,
'quitter' => $aler->getQuitter(),
'supprime' => $aler->getSupprime(),
'nomEmetteur' => $aler->getEmetteur()->getNom(),
'prenomEmetteur' => $aler->getEmetteur()->getPrenom(),
'nomRecepteur' => $aler->getRecepteur()->getNom(),
'prenomRecepteur' => $aler->getRecepteur()->getPrenom(),
'telRecepteur' => $aler->getRecepteur()->getTelephone(),
'skypeRecepteur' => $aler->getRecepteur()->getSkype(),
]
);
}
} else {
$lock = 4;
return new JsonResponse(
[
'valide' => '0',
'url' => $currentRoute,
'lu' => $lu,
'lock' => $lock,
'refus' => $refus,
'quitter' => $quitter,
'supprime' =>
"null",
'nomEmetteur' => $nomEmetteur,
'prenomEmetteur' => $prenomEmetteur,
'nomRecepteur' => $nomRecepteur,
'prenomRecepteur' => $prenomRecepteur,
'telRecepteur' => $telRecepteur,
'skypeRecepteur' => $skypeRecepteur,
]
);
}
}
} else {
$test = strstr($currentRoute, '/notif', true);
$acti = new Activite;
$acti->setUtilisateur($user);
$acti->setURL($currentRoute);
$em->persist($acti);
$em->flush();
$lock = 4;
return new JsonResponse(['valide' => '0', 'url' => $currentRoute, 'lu' => $lu, 'lock' => $lock, 'route' => $route]);
}
}
/**
* @Route("/alerte/refus/{type}/{id}", name="dtc_alerte_refus")
*/
public function alerteRefusAction(Request $request, EntityManagerInterface $em)
{
$currentRoute = dirname($_SERVER['SERVER_PROTOCOL'])."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = str_replace("refus/", "", $currentRoute);
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'url' => $url,
'supprime' => false,
]);
if (is_object($aler)) {
$aler->setRefus(1);
$em->persist($aler);
$em->flush();
return new JsonResponse(['valide' => '0', 'refus' => 1, 'url' => $url]);
} else {
return new JsonResponse(['valide' => '0', 'refus' => 0, 'url' => $url]);
}
}
/**
* @Route("/alerte/quitter/{type}/{id}", name="dtc_alerte_quitter")
*/
public function alerteQuitterAction(Request $request, EntityManagerInterface $em)
{
$currentRoute = dirname($_SERVER['SERVER_PROTOCOL'])."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = str_replace("quitter/", "", $currentRoute);
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'url' => $url,
'supprime' => false,
]);
if (is_object($aler)) {
$aler->setQuitter(true);
$em->persist($aler);
$em->flush();
return new JsonResponse(['valide' => '0', 'quitter' => true, 'url' => $url]);
} else {
return new JsonResponse(['valide' => '0', 'quitter' => false, 'url' => $url]);
}
}
/**
* @Route("/alerte/accord/{type}/{id}", name="dtc_alerte_accord")
*/
public function alerteAccordAction(Request $request, EntityManagerInterface $em)
{
$currentRoute = dirname($_SERVER['SERVER_PROTOCOL'])."://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = str_replace("accord/", "", $currentRoute);
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'url' => $url,
'supprime' => false,
]);
if (is_object($aler)) {
$aler->setRefus(2);
$aler->setNotif(1);
$em->persist($aler);
$em->flush();
return new JsonResponse(['valide' => '0', 'refus' => 2, 'url' => $url, 'titre' => "test"]);
} else {
return new JsonResponse(['valide' => '0', 'refus' => 0, 'url' => $url, 'titre' => "lalalalala"]);
}
}
/**
* @Route("/alerte_notif", name="dtc_alerte_notif")
*/
public function alerteNotifAction(Request $request, EntityManagerInterface $em)
{
$user = $this->getUser();
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'emetteur' => $user,
'supprime' => false,
'notif' => true,
'quitter' => true,
]);
$aler2 = $repo_alerte->findOneBy([
'emetteur' => $user,
'supprime' => false,
]);
if (is_object($aler)) {
$test = $aler->getUrl();
$test = str_replace("164.177.114.40", "", $test);
$test = str_replace("192.168.1.6", "", $test);
$test = preg_replace('/[^0-9]/', '', $test);
//164.177.114.40
//192.168.1.6
$onglet = $aler->getOnglet();
$nomRecepteur = $aler->getRecepteur()->getNom();
$prenomRecepteur = $aler->getRecepteur()->getPrenom();
return new Response(
json_encode(
[
'valide' => '0',
'notif' => 1,
'user' => $user->getId(),
'route' => $aler->getRoute(),
'id' => $test,
'onglet' => $onglet,
"nomRecepteur" => $nomRecepteur,
"prenomRecepteur" => $prenomRecepteur,
]
),
200,
['Content-Type' => 'application/json']
);
}
if (is_object($aler2)) {
$repo_activite = $em->getRepository(Activite::class);
$acti = $repo_activite->findOneBy([
'url' => $aler2->getUrl(),
]);
if (is_object($acti)) {
$timestampactivite = $acti->getTimestamp();
$timestampactuelle = new \DateTime();
$time = $timestampactuelle->diff($timestampactivite);
$nomRecepteur = $aler2->getRecepteur()->getNom();
$prenomRecepteur = $aler2->getRecepteur()->getPrenom();
$onglet = $aler2->getOnglet();
$test = preg_replace('/[^0-9]/', '', $aler2->getUrl());
$nomRecepteur = $aler2->getRecepteur()->getNom();
$prenomRecepteur = $aler2->getRecepteur()->getPrenom();
if ($time->format('%s') >= 15 || $time->format('%i') >= 1 || $time->format('%h') >= 1 || $time->format('%d') >= 1 || $time->format('%m') >= 1 || $time->format(
'%y'
) >= 1 && $acti->getUtilisateur() != $user) {
return new JsonResponse(
[
'valide' => '0',
'notif' => 1,
'user' => $user->getId(),
'route' => $aler2->getRoute(),
'id' => $test,
'onglet' => $onglet,
"nomRecepteur" => $nomRecepteur,
"prenomRecepteur" => $prenomRecepteur,
]
);
} else {
return new JsonResponse(
[
'valide' => '0',
'notif' => 0,
'user' => $user->getId(),
'route' => $aler2->getRoute(),
'id' => $test,
'onglet' => $onglet,
"nomRecepteur" => $nomRecepteur,
"prenomRecepteur" => $prenomRecepteur,
]
);
}
}
} else {
return new JsonResponse(['valide' => '0', 'notif' => 0, 'user' => $user->getId()]);
}
}
/**
* @Route("/alerte_notif/refus", name="dtc_alerte_notif_refus")
*/
public function alerteNotifRefusAction(Request $request, EntityManagerInterface $em)
{
$user = $this->getUser();
$repo_alerte = $em->getRepository(Alerte::class);
$aler = $repo_alerte->findOneBy([
'emetteur' => $user,
'supprime' => false,
'notif' => true,
'quitter' => true,
]);
$aler2 = $repo_alerte->findOneBy([
'emetteur' => $user,
'supprime' => false,
]);
if (is_object($aler)) {
$aler->setNotif(0);
$aler->setSupprime(1);
$em->persist($aler);
$em->flush();
return new JsonResponse(['valide' => '0', 'notif' => 0, 'user' => $user->getId()]);
}
if (is_object($aler2)) {
$repo_activite = $em->getRepository(Activite::class);
$acti = $repo_activite->findOneBy([
'url' => $aler2->getUrl(),
]);
if (is_object($acti)) {
$aler2->setNotif(0);
$aler2->setSupprime(1);
$em->persist($aler2);
$em->flush();
return new JsonResponse(['valide' => '0', 'notif' => 0, 'user' => $user->getId()]);
} else {
return new JsonResponse(['valide' => '0', 'notif' => 1, 'user' => $user->getId()]);
}
} else {
return new JsonResponse(['valide' => '0', 'notif' => 1, 'user' => $user->getId()]);
}
}
}