<?php
namespace App\Controller;
use DateTime;
use App\Entity\User;
use App\Entity\Alert;
use App\Entity\Actor;
use App\Entity\Pcode;
use App\Entity\Person;
use App\Entity\Cluster;
use App\Entity\Project;
use App\Entity\ProjectDetail;
use App\Entity\AlertDetail;
use App\Entity\MovementDetail;
use SimpleXMLElement;
use GuzzleHttp\Client;
use App\Event\AppEvents;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Builder;
use App\AppTools\AppUtils;
use App\Entity\Idps;
use App\Entity\VodacomCToB;
use App\Mercure\JwtProvider;
use Lcobucci\JWT\Signer\Key;
use App\Event\PlatformEvents;
use App\Event\MessagePostEvent;
//Conversion JSON
use Lcobucci\JWT\ValidationData;
use Lcobucci\JWT\Parsing\Decoder;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Symfony\Component\Mercure\Update;
use App\Service\MercureCookieGenerator;
use Doctrine\ORM\EntityManagerInterface;
use GuzzleHttp\Exception\GuzzleException;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mercure\PublisherInterface;
use Symfony\Component\Validator\Constraints\Json;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\EventDispatcher\GenericEvent;
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Routing\Annotation\Route;
//use Lcobucci\JWT\Signer\Rsa\Sha256;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface as EventDispatcherEvent;
class CoreController extends AbstractController
{
private $serializer;
private $appUtils;
private $em;
public function __construct(SerializerInterface $serializer, EntityManagerInterface $em, AppUtils $appUtils)
{
$this->serialize = $serializer;
$this->appUtils = $appUtils;
$this->em = $em;
}
public function index(Request $request)
{
//$em = $this->em->getManager();
//#[Route('/cd', name: 'app_drc', methods: ['GET', 'POST'])]
//$numberAlerts = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberAlerts = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cd')[0]["alertSignalE"]);
$numberAlertEvaluE = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cd')[0]["alertEvaluE"]);
//$numberAlertEvaluE = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1', 'isDeleted' => '0'))));
$numberActor = $this->_convertUnit(count($this->em->getRepository(Actor::class)->findAllOperationnel()));
$numberPersMoved = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(1)); // 1 = population déplacé
$numberPersReturn = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(2)); // 2 = population Retourné
$numberPersMovedAr = $this->em->getRepository(Idps::class)->findDeplaced()[0]; // 1 = population déplacé
$numberPersReturnAr = $this->em->getRepository(Idps::class)->findReturn()[0]; // 2 = population Retourné
$numberPersMovedFx = $numberPersMovedAr->getPerson();
$numberPersReturnFx = $numberPersReturnAr->getPerson();
// dump($numberPersMovedFx);
// dump($numberPersReturnFx);
$allProvinces = $this->em->getRepository(Pcode::class)->getAllProvinces([]);
$allByProvinces = $this->em->getRepository(Pcode::class)->getAllByProvinces([]);
return $this->render('core/home.html.twig', [
'controller_name' => 'CoreController', 'adminID' => 'CD', 'numberAlerts' => $numberAlerts, 'numberAlertEvaluE' => $numberAlertEvaluE, 'numberPersMoved' => $numberPersMoved, 'numberPersReturn' => $numberPersReturn, 'numberActor' => $numberActor, 'allProvinces' => $allProvinces, 'allByProvinces' => $allByProvinces,
'numberPersReturnFx' => $numberPersReturnFx, 'numberPersMovedFx'=>$numberPersMovedFx, 'numberPersMovedAr' => $numberPersMovedAr, 'numberPersReturnAr' =>$numberPersReturnAr
]);
}
public function index2(Request $request)
{
//$em = $this->em->getManager();
//$numberAlerts = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberAlerts = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('africa')[0]["alertSignalE"]);
$numberAlertEvaluE = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('africa')[0]["alertEvaluE"]);
$numberNonAlertEvaluE = $this->_convertUnit(($this->em->getRepository(Pcode::class)->alertStatut('africa')[0]["alertSignalE"])-($this->em->getRepository(Pcode::class)->alertStatut('africa')[0]["alertEvaluE"]));
//$numberActor = $this->_convertUnit(count($this->em->getRepository(Actor::class)->findAllOperationnel()));
//$numberPersMoved = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(1)); // 1 = population déplacé
//$numberPersReturn = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(2)); // 2 = population Retourné
//$numberPersMovedAr = $this->em->getRepository(Idps::class)->findDeplaced()[0]; // 1 = population déplacé
//$numberPersReturnAr = $this->em->getRepository(Idps::class)->findReturn()[0]; // 2 = population Retourné
$allPays = $this->em->getRepository(Pcode::class)->getAllPays();
$allByPays = $this->em->getRepository(Pcode::class)->getAllByPays();
return $this->render('core/homepage.html.twig', [
'controller_name' => 'CoreController', 'numberAlerts' => $numberAlerts, 'numberAlertEvaluE' => $numberAlertEvaluE, 'numberNonAlertEvaluE' => $numberNonAlertEvaluE,'allProvinces' => $allPays, 'allByProvinces' => $allByPays
]);
}
/**
* @Route("/cd", name="app_drc", methods={"GET","POST"})
*/
public function accDRC(Request $request)
{
//$em = $this->em->getManager();
//#[Route('/cd', name: 'app_drc', methods: ['GET', 'POST'])]
//$numberAlerts = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberAlerts = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cd')[0]["alertSignalE"]);
$numberAlertEvaluE = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cd')[0]["alertEvaluE"]);
//$numberAlertEvaluE = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1', 'isDeleted' => '0'))));
$numberActor = $this->_convertUnit(count($this->em->getRepository(Actor::class)->findAllOperationnel()));
$numberPersMoved = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(1)); // 1 = population déplacé
$numberPersReturn = $this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(2)); // 2 = population Retourné
$numberPersMovedAr = $this->em->getRepository(Idps::class)->findDeplaced()[0]; // 1 = population déplacé
$numberPersReturnAr = $this->em->getRepository(Idps::class)->findReturn()[0]; // 2 = population Retourné
$numberPersMovedFx = $numberPersMovedAr->getPerson();
$numberPersReturnFx = $numberPersReturnAr->getPerson();
// dump($numberPersMovedFx);
// dump($numberPersReturnFx);
$allProvinces = $this->em->getRepository(Pcode::class)->getAllProvinces([]);
$allByProvinces = $this->em->getRepository(Pcode::class)->getAllByProvinces([]);
return $this->render('core/home.html.twig', [
'controller_name' => 'CoreController', 'adminID' => 'CD', 'numberAlerts' => $numberAlerts, 'numberAlertEvaluE' => $numberAlertEvaluE, 'numberPersMoved' => $numberPersMoved, 'numberPersReturn' => $numberPersReturn, 'numberActor' => $numberActor, 'allProvinces' => $allProvinces, 'allByProvinces' => $allByProvinces,
'numberPersReturnFx' => $numberPersReturnFx, 'numberPersMovedFx'=>$numberPersMovedFx, 'numberPersMovedAr' => $numberPersMovedAr, 'numberPersReturnAr' =>$numberPersReturnAr
]);
}
/**
* @Route("/cf", name="app_cf", methods={"GET","POST"})
*/
public function accCAR(Request $request)
{
//$em = $this->em->getManager();
//#[Route('/cf', name: 'app_car', methods: ['GET', 'POST'])]
//$numberAlerts = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberAlerts = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cf')[0]["alertSignalE"]);
$numberAlertEvaluE = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('cf')[0]["alertEvaluE"]);
//$numberAlertEvaluE = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberActor = $this->_convertUnit(count($this->em->getRepository(Actor::class)->findAllOperationnel()));
$numberPersMoved = 0;//$this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(1)); // 1 = population déplacé
$numberPersReturn = 0;//$this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(2)); // 2 = population Retourné
$numberPersMovedAr = $this->em->getRepository(Idps::class)->findDeplaced()[0]; // 1 = population déplacé
$numberPersReturnAr = $this->em->getRepository(Idps::class)->findReturn()[0]; // 2 = population Retourné
$numberPersMovedFx = 0;//$numberPersMovedAr->getPerson();
$numberPersReturnFx = 0;//$numberPersReturnAr->getPerson();
// dump($numberPersMovedFx);
// dump($numberPersReturnFx);
$allProvinces = $this->em->getRepository(Pcode::class)->getAllProvinces([]);
$allByProvinces = $this->em->getRepository(Pcode::class)->getAllByProvinces([]);
return $this->render('core/home.html.twig', [
'controller_name' => 'CoreController', 'adminID' => 'CF', 'numberAlerts' => $numberAlerts, 'numberAlertEvaluE' => $numberAlertEvaluE, 'numberPersMoved' => $numberPersMoved, 'numberPersReturn' => $numberPersReturn, 'numberActor' => $numberActor, 'allProvinces' => $allProvinces, 'allByProvinces' => $allByProvinces,
'numberPersReturnFx' => $numberPersReturnFx, 'numberPersMovedFx'=>$numberPersMovedFx, 'numberPersMovedAr' => $numberPersMovedAr, 'numberPersReturnAr' =>$numberPersReturnAr
]);
}
/**
* @Route("/bf", name="app_bur", methods={"GET","POST"})
*/
public function accBNF(Request $request)
{
//$em = $this->em->getManager();
//$numberAlerts = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberAlerts = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('bf')[0]["alertSignalE"]);
$numberAlertEvaluE = $this->_convertUnit($this->em->getRepository(Pcode::class)->alertStatut('bf')[0]["alertEvaluE"]);
//$numberAlertEvaluE = $this->_convertUnit(count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1'))));
$numberActor = $this->_convertUnit(count($this->em->getRepository(Actor::class)->findAllOperationnel()));
$numberPersMoved = 0;//$this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(1)); // 1 = population déplacé
$numberPersReturn = 0;//$this->_convertUnit($this->em->getRepository(MovementDetail::class)->findAllPersons(2)); // 2 = population Retourné
$numberPersMovedAr = 0;//$this->em->getRepository(Idps::class)->findDeplaced()[0]; // 1 = population déplacé
$numberPersReturnAr = 0;//$this->em->getRepository(Idps::class)->findReturn()[0]; // 2 = population Retourné
$numberPersMovedFx = $numberPersMovedAr->getPerson();
$numberPersReturnFx = $numberPersReturnAr->getPerson();
// dump($numberPersMovedFx);
// dump($numberPersReturnFx);
$allProvinces = $this->em->getRepository(Pcode::class)->getAllProvinces([]);
$allByProvinces = $this->em->getRepository(Pcode::class)->getAllByProvinces([]);
return $this->render('core/home.html.twig', [
'controller_name' => 'CoreController', 'adminID' => 'BF', 'numberAlerts' => $numberAlerts, 'numberAlertEvaluE' => $numberAlertEvaluE, 'numberPersMoved' => $numberPersMoved, 'numberPersReturn' => $numberPersReturn, 'numberActor' => $numberActor, 'allProvinces' => $allProvinces, 'allByProvinces' => $allByProvinces,
'numberPersReturnFx' => $numberPersReturnFx, 'numberPersMovedFx'=>$numberPersMovedFx, 'numberPersMovedAr' => $numberPersMovedAr, 'numberPersReturnAr' =>$numberPersReturnAr
]);
}
public function dashboardAction(Request $request){
// $em = $this->em->getManager();
if ($request->isXmlHttpRequest()) {
$data = $request->attributes->get('data');
$admin0 = $request->attributes->get('admin_id');
if ($data == 'data') {
$type="dps";
$allByArea = $this->em->getRepository(Pcode::class)->getAllByProvinces($admin0);
$numberAlerts = count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1', 'isDeleted' => '0')));
$numberActors = count($this->em->getRepository(Actor::class)->findAllOperationnel());
$numberPersMoved = $this->em->getRepository(MovementDetail::class)->findAllPersons(1); // 1 = population déplacé
$numberPersReturn = $this->em->getRepository(MovementDetail::class)->findAllPersons(2); // 2 = population Retourné
$numberPersCible = $this->em->getRepository(ProjectDetail::class)->allpersCibles();
$list = [];
if ($allByArea) {
foreach($allByArea as $data) {
$list [] = [
'area' =>
'<div class="media align-items-center position-relative">' .
'<div class="media-body ml-0">' .
'<h6 class="mb-1 font-weight-semi-bold"><a class="text-dark stretched-link" href="#!">' . $data['label'] . '</a></h6>' .
'</div>' .
'</div>'
,
'alertes' => $data['nbrAlert']. //$this->_convertUnit((is_numeric($data['nbrAlert'])) ? $data['nbrAlert'] : 0)
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrAlert'], $numberAlerts). '%;" aria-valuenow="' . $this->_pourcent($data['nbrAlert'], $numberAlerts). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrAlert'], $numberAlerts) . '%</div>' .
'</div>'
,
'pDeplacee' => $this->_convertUnit((is_numeric($data['nbrPersMoved'])) ? $data['nbrPersMoved'] : 0) .
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrPersMoved'], $numberPersMoved). '%;" aria-valuenow="' . $this->_pourcent($data['nbrPersMoved'], $numberPersMoved). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrPersMoved'], $numberPersMoved) . '%</div>' .
'</div>'
,
'pRetournee' => $this->_convertUnit((is_numeric($data['nbrPersReturn'])) ? $data['nbrPersReturn'] : 0).
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrPersReturn'], $numberPersReturn). '%;" aria-valuenow="' . $this->_pourcent($data['nbrPersReturn'], $numberPersReturn). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrPersReturn'], $numberPersReturn) . '%</div>' .
'</div>'
,
'pCible' => $this->_convertUnit((is_numeric($data['nbrPersCibles'])) ? $data['nbrPersCibles'] : 0).
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrPersCibles'], $numberPersCible). '%;" aria-valuenow="' . $this->_pourcent($data['nbrPersCibles'], $numberPersCible). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrPersCibles'], $numberPersCible) . '%</div>' .
'</div>'
,
'acteur' => $this->_convertUnit((is_numeric($data['nbrActor']) ? $data['nbrActor'] : 0 )).
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrActor'], $numberActors). '%;" aria-valuenow="' . $this->_pourcent($data['nbrActor'], $numberActors). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'.$this->_pourcent($data['nbrActor'], $numberActors) . '%</div>' .
'</div>'
,
'id' => $data['id'],
'nbrAlert' => $data['nbrAlert'],
'aLabel' => $data['label'],
'nbrPersMoved' => $data['nbrPersMoved'],
'nbrPersReturn' => $data['nbrPersReturn'],
'nbrPersCibles' => $data['nbrPersCibles'],
'nbrActor' => $data['nbrActor'],
'area_type' => $type,
];
}
}
$rep=new JsonResponse();
return $rep->setData($list);
}
else if ($data == 'data2') {
$type="dps";
$allByArea = $this->em->getRepository(Pcode::class)->getAllByPays();
$numberAlerts = count($this->em->getRepository(Alert::class)->findBy(array('isValid' => '1', 'isDeleted' => '0')));
$list = [];
if ($allByArea) {
foreach($allByArea as $data) {
$list [] = [
'area' =>
'<div class="media align-items-center position-relative">' .
'<div class="media-body ml-0">' .
'<h6 class="mb-1 font-weight-semi-bold"><a class="text-dark stretched-link" href="#!">' . $data['label'] . '</a></h6>' .
'</div>' .
'</div>'
,
'alertes' => $data['nbrAlert']. //$this->_convertUnit((is_numeric($data['nbrAlert'])) ? $data['nbrAlert'] : 0)
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrAlert'], $numberAlerts). '%;" aria-valuenow="' . $this->_pourcent($data['nbrAlert'], $numberAlerts). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrAlert'], $numberAlerts) . '%</div>' .
'</div>'
,
'alertEvaluE' => $data['nbrAlertEvaluE']. //$this->_convertUnit((is_numeric($data['nbrAlert'])) ? $data['nbrAlert'] : 0)
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrAlertEvaluE'], $data['totalAlertEvaluE']). '%;" aria-valuenow="' . $this->_pourcent($data['nbrAlertEvaluE'], $data['totalAlertEvaluE']). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrAlertEvaluE'], $data['totalAlertEvaluE']) . '%</div>' .
'</div>'
,
'alertNonEvaluE' => $data['nbrAlertNonEvaluE']. //$this->_convertUnit((is_numeric($data['nbrAlert'])) ? $data['nbrAlert'] : 0)
'<div class="d-flex align-items-center">' .
'<div class="progress w-100 mr-2 rounded-soft bg-200" style="height: 5px;">' .
'<div class="progress-bar rounded-capsule" role="progressbar" style="width: ' .$this->_pourcent($data['nbrAlertNonEvaluE'], $data['totalAlertNonEvaluE']). '%;" aria-valuenow="' . $this->_pourcent($data['nbrAlertNonEvaluE'], $data['totalAlertNonEvaluE']). '" aria-valuemin="0" aria-valuemax="100"></div>' .
'</div>' .
'<div class="font-weight-semi-bold ml-2">'. $this->_pourcent($data['nbrAlertNonEvaluE'], $data['totalAlertNonEvaluE']) . '%</div>' .
'</div>'
,
'id' => $data['id'],
'nbrAlert' => $data['nbrAlert'],
'aLabel' => $data['label'],
'area_type' => $type,
];
}
}
$rep=new JsonResponse();
return $rep->setData($list);
}
else if ($data == 'SeverityZSColor') {
$severityZS = $this->em->getRepository(Pcode::class)->pcodeSeverityColor($admin0);
$alert7Day = $this->em->getRepository(Pcode::class)->alert7LastDay($admin0);
$rep=new JsonResponse();
return $rep->setData(['zsSeverity' => $severityZS, 'alert7Day' => $alert7Day]);
}
else if ($data == 'SeverityZS') {
$severityZS = $this->em->getRepository(Pcode::class)->pcodeSeverity($admin0);
$rep=new JsonResponse();
return $rep->setData(['zsSeverity' => $severityZS]);
}
else if ($data == 'StatutAlert') {
$alertStatut = $this->em->getRepository(Pcode::class)->alertStatut($admin0);
$alertByArea = $this->em->getRepository(Pcode::class)->alertStatutByTerritoire($admin0);
$mvt24Month = $this->em->getRepository(Pcode::class)->mvt24LastMonth($admin0);
$rep=new JsonResponse();
return $rep->setData(['alertStatut' => $alertStatut, 'alertByArea' => $alertByArea, 'mvt24Month' => $mvt24Month]);
}
else if ($data == 'PersonneCibles') {
$pers_ByCluster = $this->em->getRepository(Cluster::class)->byCluster_persCible();
$projetActor_ByCluster = $this->em->getRepository(Cluster::class)->byCluster_projectActor("");
$rep=new JsonResponse();
return $rep->setData(array(
'allByCluster' => $pers_ByCluster,
'projetActor' => $projetActor_ByCluster,
)
);
}
else if ($data == 'Acteurs') {
$actorByCat = $this->em->getRepository(Actor::class)->actor_byCategorie('CD');
$acteur_ByCluster = $this->em->getRepository(Cluster::class)->byCluster_actor();
/*$temp="";
foreach($lists as $list) {
$temp .= '<a href="#">'.$list->getAcronymFr().'</a> | ';
}*/
$rep=new JsonResponse();
return $rep->setData(array(
'allByCluster' => $acteur_ByCluster,
'actorByCat' => $actorByCat,
//'list' => $temp,
)
);
}
else return null;
} else {
return null;
}
}
//** Convertir Nombre avec Unité k, M, b
private function _convertUnit($nombre) {
if($nombre==0) return 0;
else if($nombre<0) return 0;
$nombre = $nombre*1 ;
$def = [
[1, ''],
[1000, 'k'],
[1000 * 1000, 'M'],
[1000 * 1000 * 1000, 'b'],
[1000 * 1000 * 1000 * 1000, 'T']
];
for ($i = 0; $i < 5; $i++) {
if ($nombre < $def[$i][0]) return round(($nombre / $def[$i - 1][0]),2) . '' . $def[$i - 1][1];
}
}
//** Convertir Nombre avec Unité k, M, b
private function _pourcent($nbre, $total) {
if ($total==0) return 0;
else
return round(( (is_numeric($nbre) ? $nbre : 0) == 0) ? 0 : $nbre / $total * 100);
}
public function getRandomCode($size)
{
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_@-';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $size; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
public function getTimeExpiration()
{
$now = new \DateTime();
return $now->add(new \DateInterval('PT5M'));
}
public function getProfilProgression()
{
return new JsonResponse(50);
}
public function jsonTest(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
$jsonContent = $serializer->serialize($this->getUser(), 'json');
return new JsonResponse(json_decode($jsonContent, true));
}
public function receiveMercureEventView(Request $request, MercureCookieGenerator $cookieGenerator)
{
//dump($this->getParameter('mercure.default_hub'));
//dump($this->getParameter('app.server_host'));
$response = $this->render('core/mercure_test.html.twig');
//dump($cookieGenerator->generate($this->getUser()));
//$response->headers->set('set-cookie', $cookieGenerator->generate($this->getUser()));
//dump($cookieGenerator->generate($this->getUser()));
$token = (new Builder())
->set("mercure", "ppoo")
->sign(new Sha256(), 'LOUP BEAU')
->getToken();
// dump($this->jwt());
return $response;
}
//public function ping(PublisherInterface $publisher)
public function ping(MessageBusInterface $bus, User $user)
{
//$target = [$this->getParameter('app.server_host') . 'user/{' . $user->getId() . '}'];
// $update = new Update(
// $this->getParameter('app.server_host') . 'ft/notification/' . $user->getId(),
// json_encode(['status' => 'LOUP: ' . $user->getId()])
// //$target
// );
$notification = [
'code' => Response::HTTP_GATEWAY_TIMEOUT,
'message' => 'LA TRANSACTION A ÉTÉ ANNULÉE',
'contents' => [
'user' => $user->getId(),
'financialTransaction' => 1,
],
];
// Envoyer l'événement au serveur Mercure
$update = new Update(
$this->getParameter('app.server_host') . 'ft/notification/' . $user->getId(),
json_encode($notification)
//$target
);
// $publisher($update); SYNCH
$bus->dispatch($update); // ASYNCH
//return new Response('published!');
return $this->redirectToRoute('makuta_mercure_api_receive_event');
}
public function c2bTest(Request $request)
{
// $loginXml = $this->render('vodacom/login.xml.twig', [
// 'username' => 'thirdpartyc2bw',
// 'password' => 'thirdpartyc2bw',
// ]);
// //return $loginXml;
// // dump($loginXml->getContent());
// // return $this->render('core/index.html.twig', [
// // 'controller_name' => 'CoreController',
// // ]);
// $vodacom = new VodacomController();
// $result = $vodacom->getTokenArray($this->getParameter("app.mpesa_server"), $loginXml->getContent());
// // $encoders = [new XmlEncoder(), new JsonEncoder()];
// // $normalizers = [new ObjectNormalizer()];
// // $serializer = new Serializer($normalizers, $encoders);
// // $jsonContent = $serializer->serialize($result, 'json');
// //return new JsonResponse(json_decode($jsonContent, true));
// //return new JsonResponse($result);
// $token = $result['data']['contents']['SessionID'];
// //return new JsonResponse($result);
// $vodacomCToB = new VodacomCToB();
// $vodacomCToB->setToken($token);
// $vodacomCToB->setCustomerMSISDN('243810666161');
// $vodacomCToB->setCurrency('USD');
// $vodacomCToB->setThirdPartyReference(date_format($vodacomCToB->getTransactionDateTime(), 'YmdHis'));
// $vodacomCToB->setAmount('2');
// $vodacomCToB->setSurname('via Makuta');
// $vodacomCToB->setInitials('Rickain');
// $vodacomCToBXml = $this->render('vodacom/c_to_b.xml.twig', [
// 'vodacomCToB' => $vodacomCToB,
// ]);
// $cToBResponse = $vodacom->cToB($this->getParameter('app.mpesa_server'), $vodacomCToBXml->getContent());
return new JsonResponse("RAS");
}
public function declencheEvent()
{
return parent::render('core/test.html.twig');
}
public function testJwt()
{
$response = [
'code' => Response::HTTP_OK,
'message' => 'OK',
'contents' => 'Ceci est un exmple du contenu',
];
// $token = (new Builder())
// ->set("makuta", ["data" => json_encode($response)])
// ->sign(new Sha256(), "OOOOOO")
// ->getToken();
////$bingo = $token->verify(new Sha256(), 'testing 1');
//return new JsonResponse((string) $token);
// $signer = new Sha256();
// $key = new Key('0000');
// //$key = new Key('private_file', 'public');
// $token = (new Builder())
// ->withClaim('makuta', ['data' => $response])
// ->getToken($signer, $key);
// $token = (new Parser())->parse((string) $token); // Parses from a string
// $token->getHeaders(); // Retrieves the token header
// $token->getClaims(); // Retrieves the token claims
// return new JsonResponse((string) $token);
$signer = new Sha256();
$publicKey = new Key('0000');
//$privateKey = new Key('0000');
$now = new \DateTime();
$token = (new Builder())
->issuedBy($this->getParameter('app.server_host'))
->issuedAt($now->getTimestamp())
->expiresAt($this->appUtils->getTimeExpiration(2)->getTimestamp())
->withClaim('makuta', ['data' => $response])
->getToken($signer, $publicKey);
// ->getToken($signer, $publicKey, $privateKey);
//$token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjb2RlIjoiZmFicmljZSIsImV4cCI6MTk5MX0=.BDcOI1t8H3HPe5Yd5Hohabe2hsnXeZu2hP_soLIswPs=";
$tt = (new Parser())->parse((string) $token); // Parses from a string
$tt->getHeaders(); // Retrieves the token header
$tt->getClaims(); // Retrieves the token claims
//$tt->getClaims()['exp']; //Heure d'expiration
$bingo = $tt->verify(new Sha256(), '0000');
//$timestampNow = $now->getTimestamp();
//$ooo = $timestampNow < $exp ? 'now sup' : 'now inf';
$validationData = new ValidationData();
$validationData->setIssuer($this->getParameter('app.server_host'));
//$validationData->setCurrentTime(time() - 1);
//$validationData->set
$validation = $tt->validate($validationData);
//return new JsonResponse($tt->getClaim('makuta')->data);
//return new JsonResponse((string) $token);
return new JsonResponse($tt->getClaims());
}
public function test()
{
return $this->render('core/test.html.twig');
}
}