<?php
namespace App\Controller\Dysfonctionnement;
use App\Entity\bilan\Entity;
use App\Entity\Domain;
use App\Entity\Dysfonctionnement\Constat;
use App\Entity\Processus;
use App\Entity\Source;
use App\Entity\User;
use App\Notification\SendNotification;
use App\Repository\Dysfonctionnement\ConstatRepository;
use App\Utils\Utility;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/dysfonctionnement")
*/
class EnregistrerConstatController extends AbstractController
{
/**
* @var SendNotification
*/
private $notifyConstat;
public function __construct(SendNotification $notifyConstat)
{
$this->notifyConstat= $notifyConstat;
}
/**
* @Route("/enregistrer/constat_dysfonctionnement", name="enregistrer_dysfonctionnement_constat")
*/
public function enregistrerDysfonctionnementConstat(): Response
{
$constat = new Constat();
$utility = new Utility;
$lastId=0;
$lastConstat = $this->getDoctrine()->getRepository(Constat::class)->findOneBy([], ['id' => 'desc']);
if(is_object($lastConstat))
{
$lastId = $lastConstat->getId();
}
$reference = $utility->generateRef($lastId,Constat::PREFIX_CONSTAT);
$constat->setReference($reference);
/* end genretate ref*/
$entites_list = $this->getDoctrine()->getRepository(Entity::class)->findAll();
$users_list = $this->getDoctrine()->getRepository(User::class)->findAll();
$sources_list = $this->getDoctrine()->getRepository(Source::class)->findAll();
$domaines_list = $this->getDoctrine()->getRepository(Domain::class)->findAll();
$users_list_array = [];
foreach($users_list as $user) {
$fonction = str_replace('"', "", $user->getFonction());
$users_list_array[$user->getId()] = $fonction;
}
$menu="ameliorer";
$left_menu="dysfonctionnement_constat";
return $this->render('dysfonctionnementTemplate/enregistrer_constat/dysfonctionnement_constat.html.twig', [
'menu'=>$menu,
'left_menu'=>$left_menu,
'entites_list'=>$entites_list,
'users_list'=>$users_list,
'sources_list'=>$sources_list,
'domaines_list'=>$domaines_list,
'users_list_array'=>$users_list_array,
'reference' => $reference
]);
}
/**
* @Route("/enregistrer/constat_amelioration", name="enregistrer_amelioration_constat")
*/
public function enregistrerAmeliorationConstat(): Response
{
$constat = new Constat();
$utility = new Utility;
$lastId=0;
$lastConstat = $this->getDoctrine()->getRepository(Constat::class)->findOneBy([], ['id' => 'desc']);
if(is_object($lastConstat))
{
$lastId = $lastConstat->getId();
}
$reference = $utility->generateRef($lastId,Constat::PREFIX_CONSTAT);
$constat->setReference($reference);
/* end genretate ref*/
$entites_list = $this->getDoctrine()->getRepository(Entity::class)->findAll();
$users_list = $this->getDoctrine()->getRepository(User::class)->findAll();
$sources_list = $this->getDoctrine()->getRepository(Source::class)->findAll();
$domaines_list = $this->getDoctrine()->getRepository(Domain::class)->findAll();
$users_list_array = [];
foreach($users_list as $user) {
$fonction = str_replace('"', "", $user->getFonction());
$users_list_array[$user->getId()] = $fonction;
}
$menu="ameliorer";
$left_menu="amelioration_constat";
return $this->render('dysfonctionnementTemplate/enregistrer_constat/amelioration_constat.html.twig', [
'menu'=>$menu,
'left_menu'=>$left_menu,
'entites_list'=>$entites_list,
'users_list'=>$users_list,
'sources_list'=>$sources_list,
'domaines_list'=>$domaines_list,
'users_list_array'=>$users_list_array,
'reference' => $reference
]);
}
/**
* @Route("/enregistrer/constat_reclamation", name="enregistrer_reclamation_constat")
*/
public function enregistrerReclamationConstat(): Response
{
$constat = new Constat();
$utility = new Utility;
$lastId=0;
$lastConstat = $this->getDoctrine()->getRepository(Constat::class)->findOneBy([], ['id' => 'desc']);
if(is_object($lastConstat))
{
$lastId = $lastConstat->getId();
}
$reference = $utility->generateRef($lastId,Constat::PREFIX_CONSTAT);
$constat->setReference($reference);
$entites_list = $this->getDoctrine()->getRepository(Entity::class)->findAll();
$users_list = $this->getDoctrine()->getRepository(User::class)->findAll();
$domaines_list = $this->getDoctrine()->getRepository(Domain::class)->findAll();
$users_list_array = [];
foreach($users_list as $user) {
$fonction = str_replace('"', "", $user->getFonction());
$users_list_array[$user->getId()] = $fonction;
}
$menu="ameliorer";
$left_menu="reclamation_constat";
return $this->render('dysfonctionnementTemplate/enregistrer_constat/reclamation_constat.html.twig', [
'menu'=>$menu,
'left_menu'=>$left_menu,
'entites_list'=>$entites_list,
'users_list'=>$users_list,
'domaines_list'=>$domaines_list,
'users_list_array'=>$users_list_array,
'reference' => $reference
]);
}
/**
* @Route("/enregistrer/constat_accident", name="enregistrer_accident_constat")
*/
public function enregistrer_accident(): Response
{
$constat = new Constat();
$utility = new Utility;
$lastId=0;
$lastConstat = $this->getDoctrine()->getRepository(Constat::class)->findOneBy([], ['id' => 'desc']);
if(is_object($lastConstat))
{
$lastId = $lastConstat->getId();
}
$reference = $utility->generateRef($lastId,Constat::PREFIX_ACC);
$constat->setReference($reference);
$entites_list = $this->getDoctrine()->getRepository(Entity::class)->findAll();
$processus_list = $this->getDoctrine()->getRepository(Processus::class)->findAll();
$users_list = $this->getDoctrine()->getRepository(User::class)->findAll();
$domaines_list = $this->getDoctrine()->getRepository(Domain::class)->findAll();
$users_list_array = [];
foreach($users_list as $user) {
$fonction = str_replace('"', "", $user->getFonction());
$users_list_array[$user->getId()] = $fonction;
}
$menu="ameliorer";
$left_menu="accident_constat";
return $this->render('dysfonctionnementTemplate/enregistrer_constat/accident.html.twig',[
'menu'=>$menu,
'left_menu'=>$left_menu,
'entites_list'=>$entites_list,
'processus_list'=>$processus_list,
'users_list'=>$users_list,
'domaines_list'=>$domaines_list,
'users_list_array'=>$users_list_array,
'reference' => $reference
]);
}
/**
* @Route("/enregistrer/new", name="new_constat", methods={"GET","POST"})
*/
public function createConstat(Request $request, ConstatRepository $constatRepository): Response
{
$em = $this->getDoctrine()->getManager();
$lastId=0;
$lastConstat = $this->getDoctrine()->getRepository(Constat::class)->findOneBy([], ['id' => 'desc']);
if(is_object($lastConstat))
{
$lastId = $lastConstat->getId();
}
$utility = new Utility;
$reference = $utility->generateRef($lastId,Constat::PREFIX_CONSTAT);
$entite_id = $request->request->get('entite');
$entite = $em->getRepository(Entity::class)->find($entite_id);
$domain_id = $request->request->get('domain') ?? 8;
$domain = $em->getRepository(Domain::class)->find($domain_id);
$typeConstat = $request->request->get('type');
if ($typeConstat == "dysfonctionnement" || $typeConstat=="amelioration") {
$declarant_id = $request->request->get('declarant');
$declarant = $em->getRepository(User::class)->find($declarant_id);
$source_id = $request->request->get('source')?? 11;
$source = $em->getRepository(Source::class)->find($source_id);
}
$decisionnaire_id = $request->request->get('decisionnaire') ?? 2;
$decisionnaire = $em->getRepository(User::class)->find($decisionnaire_id);
//$date_constat = $request->request->get('dateConstat');
$description = $request->request->get('description');
$action = $request->request->get('actionImmediates');
$commentaire = $request->request->get('commentaireSuggestion');
$name_organisme = $request->request->get('name_organisme');
$adress_organisme = $request->request->get('adress_organisme');
$complements_organisme = $request->request->get('complements_organisme');
$pays_organisme = $request->request->get('pays_organisme');
$ville_organisme = $request->request->get('ville_organisme');
$codPostal_organisme = $request->request->get('codPostal_organisme');
$contact_ext = $request->request->get('contact_ext');
$fonction_contact = $request->request->get('fonction_contact');
$email_contact = $request->request->get('email_contact');
$numberPhoneContact = $request->request->get('numberPhoneContact');
$typeConstat = $request->request->get('type');
$typeSST = $request->request->get('type_sst');
$constat = new Constat();
//dd($date_constat);
//$constat->setDateConstat($date_constat->format("m/d/Y"));
$constat->setDateConstat(new \DateTime('now'));
$constat->setReference($reference);
$constat->setEntite($entite);
$constat->setDomain($domain);
if ($typeConstat == "dysfonctionnement" || $typeConstat=="amelioration") {
$constat->setSource($source);
$constat->setDeclarant($declarant);
}
if ($typeConstat == "reclamation") {
$constat->setNameOrganisme($name_organisme);
$constat->setAdresseOrganisme($adress_organisme);
$constat->setComplementsOrganisme($complements_organisme);
$constat->setPaysOrganisme($pays_organisme);
$constat->setVilleOrganisme($ville_organisme);
$constat->setCodePostalOrganisme($codPostal_organisme);
$constat->setContactExt($contact_ext);
$constat->setFonctionContact($fonction_contact);
$constat->setEmailContact($email_contact);
$constat->setNumberPhoneContact($numberPhoneContact);
}
$constat->setDecisionnaire($decisionnaire);
$constat->setDescription($description);
$constat->setActionImmediates($action);
$constat->setCommentaireSuggestion($commentaire);
$constat->setType($typeConstat);
$constat->setTypeSst($typeSST);
$em->persist($constat);
/*$this->notifyConstat->notifyCreateConstat(
$constat->getDeclarant()->getEmail(),
$constat->getDecisionnaire()->getEmail(),
$constat->getReference(),
$constat->getDecisionnaire()->getFonction()
);*/
$em->flush();
return $this->redirectToRoute("analyse",["id"=>$constat->getId()]);
}
/**
* @Route("/{id}", name="update_dysfonctionnement_constat")
*/
public function updateDysfonctionnementConstat(Constat $constat): Response
{
$entites_list = $this->getDoctrine()->getRepository(Entity::class)->findAll();
$users_list = $this->getDoctrine()->getRepository(User::class)->findAll();
$sources_list = $this->getDoctrine()->getRepository(Source::class)->findAll();
$domaines_list = $this->getDoctrine()->getRepository(Domain::class)->findAll();
$users_list_array = [];
foreach($users_list as $user) {
$fonction = str_replace('"', "", $user->getFonction());
$users_list_array[$user->getId()] = $fonction;
}
$menu="ameliorer";
$left_menu="enregistrer_constat";
return $this->render('dysfonctionnementTemplate/update_constat/dysfonctionnement_constat_edit.html.twig', [
'menu'=>$menu,
'left_menu'=>$left_menu,
'entites_list'=>$entites_list,
'users_list'=>$users_list,
'sources_list'=>$sources_list,
'domaines_list'=>$domaines_list,
'users_list_array'=>$users_list_array,
'constat' => $constat
]);
}
/**
* @Route("/update/constat/{id}", name="update_constat", methods={"GET","POST"})
*/
public function updateConstat(Request $request, Constat $constat): Response
{
$em = $this->getDoctrine()->getManager();
if (!$constat) {
throw $this->createNotFoundException(
'There are no constat with the following id: ' . $constat->getId()
);
}
$entite_id = $request->request->get('entite');
$entite = $em->getRepository(Entity::class)->find($entite_id);
$domain_id = $request->request->get('domain');
$domain = $em->getRepository(Domain::class)->find($domain_id);
$typeConstat = $request->request->get('type');
if ($typeConstat == "dysfonctionnement" || $typeConstat=="amelioration") {
$declarant_id = $request->request->get('declarant');
$declarant = $em->getRepository(User::class)->find($declarant_id);
$source_id = $request->request->get('source');
$source = $em->getRepository(Source::class)->find($source_id);
}
$decisionnaire_id = $request->request->get('decisionnaire');
$decisionnaire = $em->getRepository(User::class)->find($decisionnaire_id);
//$date_constat = $request->request->get('dateConstat');
$description = $request->request->get('description');
$action = $request->request->get('actionImmediates');
$commentaire = $request->request->get('commentaireSuggestion');
$name_organisme = $request->request->get('name_organisme');
$adress_organisme = $request->request->get('adress_organisme');
$complements_organisme = $request->request->get('complements_organisme');
$pays_organisme = $request->request->get('pays_organisme');
$ville_organisme = $request->request->get('ville_organisme');
$codPostal_organisme = $request->request->get('codPostal_organisme');
$contact_ext = $request->request->get('contact_ext');
$fonction_contact = $request->request->get('fonction_contact');
$email_contact = $request->request->get('email_contact');
$numberPhoneContact = $request->request->get('numberPhoneContact');
$typeConstat = $request->request->get('type');
$typeSST = $request->request->get('type_sst');
//$constat->setDateConstat($date_constat->format("m/d/Y"));
$constat->setDateConstat(new \DateTime('now'));
$constat->setEntite($entite);
$constat->setDomain($domain);
if ($typeConstat == "dysfonctionnement" || $typeConstat=="amelioration") {
$constat->setSource($source);
$constat->setDeclarant($declarant);
}
if ($typeConstat == "reclamation") {
$constat->setNameOrganisme($name_organisme);
$constat->setAdresseOrganisme($adress_organisme);
$constat->setComplementsOrganisme($complements_organisme);
$constat->setPaysOrganisme($pays_organisme);
$constat->setVilleOrganisme($ville_organisme);
$constat->setCodePostalOrganisme($codPostal_organisme);
$constat->setContactExt($contact_ext);
$constat->setFonctionContact($fonction_contact);
$constat->setEmailContact($email_contact);
$constat->setNumberPhoneContact($numberPhoneContact);
}
$constat->setDecisionnaire($decisionnaire);
$constat->setDescription($description);
$constat->setActionImmediates($action);
$constat->setCommentaireSuggestion($commentaire);
$constat->setType($typeConstat);
$constat->setTypeSst($typeSST);
$em->flush();
return $this->redirectToRoute("analyse",["id"=>$constat->getId()]);
}
}