<?php
namespace App\Controller\bilanControllers;
use App\Entity\bilan\Criticite;
use App\Entity\bilan\Frequence;
use App\Entity\bilan\Gravite;
use App\Entity\bilan\MOG;
use App\Entity\bilan\SituationRisque;
use App\Repository\bilan\CriticiteRepository;
use App\Repository\bilan\FrequenceRepository;
use App\Repository\bilan\GraviteRepository;
use App\Repository\bilan\MOGRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/criticite")
*/
class CriticiteController extends AbstractController
{
/********************** calcul de la criticité *****************************/
/**
* @Route("/list/frequences", name="frequence_list", methods={"GET","POST"})
*/
public function listF(FrequenceRepository $frequenceRepository): Response
{
$frequenceData = $frequenceRepository->transformAll();
return new JsonResponse($frequenceData);
}
/**
* @Route("/list/gravites", name="gravites_list", methods={"GET","POST"})
*/
public function listG(GraviteRepository $graviteRepository): Response
{
$graviteData = $graviteRepository->transformAll();
return new JsonResponse($graviteData);
}
/**
* @Route("/frequence/{id}/edit", name="frequence_edit", methods={"GET","POST"},requirements={"id":"\d+"})
*/
public function edit(Request $request, Frequence $frequence): Response
{
return $this->editdata($request, $frequence);
}
/**
* @Route("/gravite/{id}/edit", name="gravite_edit", methods={"GET","POST"},requirements={"id":"\d+"})
*/
public function editG(Request $request, Gravite $gravite): Response
{
return $this->editdata($request, $gravite);
}
/**
* @Route("/frequence/{id}/delete", name="frequence_delete", methods={"GET","POST"})
*/
public function deleteF(Request $request, Frequence $frequence): Response
{
return $this->deletedata($request, $frequence);
}
/**
* @Route("/gravite/{id}/delete", name="gravite_delete", methods={"GET","POST"})
*/
public function delete(Request $request, Gravite $gravite): Response
{
return $this->deletedata($request,$gravite);
}
/**
* @Route("/seuil/{id}/edit", name="seuil_edit", methods={"POST"})
*/
public function seuilEdit(Request $request,Criticite $criticite){
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
}
$response = ["statut"=>"0"];
if (isset($request->request)) {
$valeur = $request->request->get('valeur');
$entityManager = $this->getDoctrine()->getManager();
$criticite->setValeur($valeur);
$entityManager->flush();
$response = ["statut"=>"1"];
}
return new JsonResponse($response,200);
}
/********************** calcul du risque résiduel *****************************/
/**
* @Route("/list/MOG", name="MOG_list", methods={"GET","POST"})
*/
public function listMOG(MOGRepository $MOGRepository): Response
{
$MOGData = $MOGRepository->transformAll();
return new JsonResponse($MOGData);
}
/**
* @Route("/MOG/{id}/edit", name="MOG_edit", methods={"GET","POST"},requirements={"id":"\d+"})
*/
public function editMOG(Request $request, MOG $mog): Response
{
return $this->editdata($request, $mog);
}
/**
* @Route("/MOG/{id}/delete", name="MOG_delete", methods={"GET","POST"})
*/
public function deleteMOG(Request $request, MOG $mog): Response
{
return $this->deletedata($request, $mog);
}
/************************Global method *********************************/
/**
* @Route("/new", name="criticite_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
}
if (isset($request->request)) {
$note = $request->request->get('note');
$statut = $request->request->get('statut');
$description = $request->request->get('description');
$criticite = substr($request->request->get('criticite'),4);
$entityManager = $this->getDoctrine()->getManager();
$data="";
if ($criticite == "Frequence")
$data = new Frequence();
else if ($criticite == "Gravite")
$data = new Gravite();
else if ($criticite == "MOG")
$data = new MOG();
if ($data){
$data->setNote($note);
$data->setStatut($statut);
$data->setDescription($description);
$entityManager->persist($data);
try {
$entityManager->flush();
$data = [
'id'=>$data->getId(),
'note'=>$data->getNote(),
'statut'=>$data->getStatut(),
'description'=>$data->getDescription(),
];
$response =$data;
} catch (\Exception $e) {
$response = array('status' => 'error', 'message' => $e->getMessage());
}
}
}
return new JsonResponse($response,200);
}
public function editdata($request,$data){
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
}
if (isset($request->request)) {
$note = $request->request->get('note');
$statut = $request->request->get('statut');
$description = $request->request->get('description');
$entityManager = $this->getDoctrine()->getManager();
$data->setNote($note);
$data->setStatut($statut);
$data->setDescription($description);
try {
$entityManager->flush();
$data = [
'id'=>$data->getId(),
'note'=>$data->getNote(),
'statut'=>$data->getStatut(),
'description'=>$data->getDescription(),
];
$response = $data;
} catch (\Exception $e) {
$response = array('status' => 'error', 'message' => $e->getMessage());
}
}
return new JsonResponse($response,200);
}
public function deletedata( $request,$data): Response
{
if (!$request->isXmlHttpRequest()) {
return new JsonResponse(array('status' => 'error','message' => 'Access forbidden!'), 400);
}
$response = ["deleted"=>"0"];
if (isset($request->request)) {
$type = $request->request->get('type');
$entityManager = $this->getDoctrine()->getManager();
$situation_risque='';
if ($type=='dataFrequence')
$situation_risque = $entityManager->getRepository(SituationRisque::class)->findBy(['frequence'=>$data->getId()]);
else if ($type=='dataGravite')
$situation_risque = $entityManager->getRepository(SituationRisque::class)->findBy(['gravite'=>$data->getId()]);
else if ($type=='dataMOG')
$situation_risque = $entityManager->getRepository(SituationRisque::class)->findBy(['mog'=>$data->getId()]);
else if ($type=='dataRisque')
$situation_risque = $entityManager->getRepository(SituationRisque::class)->findBy(['risque'=>$data->getId()]);
if ($situation_risque){
$response =['deleted'=>0];
}else{
$entityManager->remove($data);
$entityManager->flush();
$response =['deleted'=>1];
}
return new JsonResponse($response,200);
}
}
/**
* @Route("/criticiteList", name="get_crititcie_list", methods={"GET"})
*/
public function getCriticiteList(Request $request): Response
{
$type = $request->query->get('type');
$entityManager = $this->getDoctrine()->getManager();
$criticiteList = $entityManager->getRepository(Criticite::class)->findBy(['type'=>$type],['valeur'=>'DESC']);
$criticiteListJson = array_map(function($item){
return [
'id'=>$item->getId(),
'valeur'=>$item->getValeur(),
'couleur'=>$item->getCouleur(),
'legende'=>$item->getLegende(),
];
}, $criticiteList);
return new JsonResponse($criticiteListJson,200);
}
}