<?php
namespace App\Controller;
use App\Service\GlobalAdmin;
use App\Entity\Utilisateur;
use App\Entity\Etat ;
use App\Entity\Questions ;
use App\Entity\Entreprise ;
use App\Entity\Pays ;
use App\Entity\TypeCompte ;
use App\Entity\Formule ;
use App\Entity\Competences;
use App\Entity\Niveau;
use App\Entity\SousFamilleCompetence;
use App\Entity\FamilleCompetence;
use App\Entity\Formules;
use App\Entity\QuestionCompetences;
use App\Entity\FormuleOptions;
use App\Entity\AffSousFamilleFamille;
use App\Entity\AffCompetenceSf;
use App\Entity\TailleEntreprise;
use App\Entity\Region;
use App\Entity\Langue;
use App\Entity\ConditionGenerale;
use App\Entity\Cgi;
use App\Entity\ConfigServices;
use App\Entity\MentionsLegales;
use App\Entity\Ape;
use App\Repository\FormulesRepository;
use App\Repository\FormuleOptionsRepository;
use App\Repository\ConditionGeneraleRepository;
use App\Repository\CgiRepository;
use App\Repository\MentionsLegalesRepository;
use DateTime;
use App\Form\UtilisateurType;
use App\Repository\AdministrateursRepository;
use App\Repository\EntrepriseRepository;
use App\Repository\NiveauRepository;
use App\Repository\ConfigServicesRepository;
use App\Repository\EtatRepository;
use App\Repository\ConfigSmtpRepository;
use App\Repository\ConnexionAdministrateursRepository;
use App\Repository\CompetencesRepository;
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\HttpFoundation\JsonResponse;
use App\Repository\GroupeRestrictionRepository;
use App\Repository\GroupeRestrictionPageRepository;
use App\Repository\NiveauAdminRepository;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\DependencyInjection\ContainerInterface as Container;
use Doctrine\ORM\EntityManagerInterface;
use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3Validator;
class ConfigurationController extends AbstractController
{
public function __construct(SessionInterface $session , Container $container , EntityManagerInterface $em )
{
$this->em = $em ;
$this->session = $session ;
}
function genererCode($length){
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$string = '';
for($i=0; $i<$length; $i++){
$string .= $chars[rand(0, strlen($chars)-1)];
}
return $string;
}
private function getAdressIp(){
$ip_expediteur = '' ;
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip_expediteur = $_SERVER['HTTP_CLIENT_IP'];
}elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip_expediteur = $_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip_expediteur = $_SERVER['REMOTE_ADDR'];
}
return $ip_expediteur ;
}
/**
* @Route("/configuration", name="configuration", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration(): Response
{
return $this->render('configuration/index.html.twig', [
'controller_name' => 'ConfigurationController',
]);
}
/**
* @Route("/configuration_etat", name="configuration_etat", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_etat(Request $request,GroupeRestrictionRepository $groupeRestrictionRepository,AdministrateursRepository $AdministrateursRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
return $this->render('configuration/config_etat.html.twig',[
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages
]);
}
/**
* @Route("/serverEtats", name="serverEtats", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverEtats(Request $request ): Response
{
//echo $this->session->getMetadataBag()->getLifetime();
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.etat LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id','u.etat','u.description','u.date_creation','u.date_update','u.status'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_etats = [];
$total_etats = $this->em->createQuery(
'SELECT u
FROM App\Entity\Etat u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_etats ) ;
$etats = $this->em->createQuery(
'SELECT u
FROM App\Entity\Etat u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
foreach($etats as $etat){
$output[] = [
'id'=>$etat->getId() ,
'etat'=>$etat->getEtat() ,
'description'=>$etat->getDescription() ,
'status'=>$etat->getStatus() ,
'created_at' => date_format( $etat->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $etat->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/ajout_etat", name="ajout_etat" , options = {"expose"=true})
*/
public function ajout_etat(Request $request ): Response
{
$etat = new Etat();
$etat->setEtat($request->get('nom_etat_n'));
$etat->setStatus($request->get('status_etat_n'));
$etat->setDescription($request->get('description_etat_n'));
$etat->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$etat->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$this->em->persist($etat);
$this->em->flush();
return new Response('OK');
}
/**
* @Route("/get_etat", name="get_etat" , options = {"expose"=true})
*/
public function get_etat(Request $request ): Response
{
return false;
}
/**
* @Route("/modif_etat/{id}", name="modif_etat" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_etat(int $id, Request $request): Response
{
$etat = $this->em->getRepository(Etat::class)->find($id);
if (!$etat) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Etat not found!']);
};
$etat->setEtat($request->get('nom_etat_n_modif'));
$etat->setDescription($request->get('description_etat_n_modif'));
$etat->setStatus($request->get('status_etat_n_modif'));
$etat->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
try {
$this->em->persist($etat);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Etat mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de etat: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_etat/{id}", name="delete_etat" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_etat(int $id, Request $request): Response
{
$etat = $this->em->getRepository(Etat::class)->find($id);
if (!$etat) {
return new Response('Etat not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($etat);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting etat: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/serverQuestions", name="serverQuestions", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverQuestions(Request $request ): Response
{
//echo $this->session->getMetadataBag()->getLifetime();
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.type LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id','u.question','u.type'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_questions = [];
$total_questions = $this->em->createQuery(
'SELECT u
FROM App\Entity\Questions u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_questions ) ;
$questions = $this->em->createQuery(
'SELECT u
FROM App\Entity\Questions u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
foreach($questions as $question){
$output[] = [
'id'=>$question->getId() ,
'question'=>$question->getQuestion() ,
'type'=>$question->getType() ,
'created_at' => date_format( $question->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $question->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/configuration_questions", name="configuration_questions", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_questions(Request $request , AdministrateursRepository $AdministrateursRepository, NiveauAdminRepository $niveauAdminRepository,GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$niveauAdmins = $niveauAdminRepository->findAll();
return $this->render('configuration/config_questions.html.twig',[
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'niveauAdmins' => $niveauAdmins,
]);
}
/**
* @Route("/ajout_question", name="ajout_question" , options = {"expose"=true})
*/
public function ajout_question(Request $request ): Response
{
$question = new Questions();
$question->setType($request->get('type_question_n'));
$question->setQuestion($request->get('nom_question_n'));
$question->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$question->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$this->em->persist($question);
$this->em->flush();
return new Response('OK');
}
/**
* @Route("/modif_question/{id}", name="modif_question" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_question(int $id, Request $request): Response
{
$question = $this->em->getRepository(Questions::class)->find($id);
if (!$question) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Question not found!']);
};
$question->setType($request->get('type_question_n_modif'));
$question->setQuestion($request->get('nom_question_n_modif'));
$question->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
try {
$this->em->persist($question);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Question mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de la question: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_question/{id}", name="delete_question" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_question(int $id, Request $request): Response
{
$question = $this->em->getRepository(Questions::class)->find($id);
if (!$question) {
return new Response('Question not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($question);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting question: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
//Debut Partie Niveau
/**
* @Route("/configuration_niveau_filiale", name="configuration_niveau_filiale", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_niveau_filiale(Request $request, EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$niveau = $this->em->getRepository(Niveau::class)->findAll();
return $this->render('configuration/config_niv_filiale.html.twig',
[
"admin" => $admin,
'niveaus' => $niveau,
'access' => $accessArray,
'pages' => $niveauAcessPages
]);
}
/**
* @Route("/modifier_niveau/{id}", name="modifier_niveau", methods={"POST"}, options={"expose"=true})
*/
public function modifier_niveau(Request $request, $id): Response
{
$niveau = $this->em->getRepository(Niveau::class)->find($id);
if (!$niveau) {
return new Response('Niveau not found!', Response::HTTP_NOT_FOUND);
}
//dd($niveau);
$nomNiveau = $request->get('nom_niveau');
$etat = $request->get('etat_niveau');
$niveau->setNiveau($nomNiveau);
$niveau->setEtat($etat);
try {
$this->em->persist($niveau);
$this->em->flush();
return new Response('Niveau mise a jour avec succeés!');
} catch (\Exception $e) {
return new Response('Error en midifcation du niveau: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/supprimer_niveau/{id}", name="supprimer_niveau", methods={"DELETE"}, options={"expose"=true})
*/
public function supprimer_niveau(Request $request, $id): Response
{
$niveau = $this->em->getRepository(Niveau::class)->find($id);
if (!$niveau) {
return new Response('Niveau not found!', Response::HTTP_NOT_FOUND);
}
try {
$this->em->remove($niveau);
$this->em->flush();
return new Response('Niveau supprimer avec success!');
} catch (\Exception $e) {
return new Response('Error deleting niveau: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/enregistrer_niveau", name="enregistrer_niveau", methods={"POST"} , options={"expose"=true})
*/
public function enregistrer_niveau(Request $request): Response
{
//dd($request->request->all());
$nomNiveau = $request->get('nom_niveau');
$etat = $request->get('etat_niveau');
//dd($etat);
$niveau = new Niveau();
$niveau->setNiveau($nomNiveau);
$niveau->setEtat($etat);
$currentDateTime = new DateTime();
$niveau->setDateCreation($currentDateTime);
//dd($niveau);
$this->em->persist($niveau);
$this->em->flush();
return new Response('Form data received and saved successfully!');
}
//Fin Partie Niveau
//debut Partie Configuration Compétence
/**
* @Route("/configuration_competence", name="configuration_competence", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_competence(Request $request ,
CompetencesRepository $CompetencesRepository ,FamilleCompetenceRepository $FamilleCompetenceRepository ,
SousFamilleCompetenceRepository $SousFamilleCompetenceRepository,
AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository ): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$FamilleCompetence = $FamilleCompetenceRepository->findBy(['etat'=>1]);
$SousFamilleCompetence = $SousFamilleCompetenceRepository->findBy(['etat'=>1]);
$competences = $CompetencesRepository->findBy(['etat'=>1]);
return $this->render('configuration/config_competence.html.twig',[
'admin' => $admin,
'famille_competences'=>$FamilleCompetence,
'sous_famille_competences'=>$SousFamilleCompetence,
'competences'=>$competences,
'access' => $accessArray,
'pages' => $niveauAcessPages
]);
}
/**
* @Route("/ajout_competence", name="ajout_competence" , options = {"expose"=true})
*/
public function ajout_competence(Request $request , CompetencesRepository $CompetencesRepository ): Response
{
$existence = $CompetencesRepository->findOneBy(['competence'=>$request->get('competence_n')]);
if($existence == null){
$competence = new Competences();
$competence->setCompetence($request->get('competence_n'));
$competence->setDescription($request->get('description_n'));
$competence->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$competence->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$competence->setEtat($request->get('etat_n'));
$this->em->persist($competence);
$this->em->flush();
return new Response('OK');
}else{
return new Response('KOO');
}
}
/**
* @Route("/modif_competence/{id}", name="modif_competence" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_competence(int $id, Request $request): Response
{
$competence = $this->em->getRepository(Competences::class)->find($id);
if (!$competence) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Competences not found!']);
};
$competence->setCompetence($request->get('competence_n_modif'));
$competence->setDescription($request->get('description_n_modif'));
$competence->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$competence->setEtat($request->get('etat_n_modif'));
try {
$this->em->persist($competence);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Question mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de la competence: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_competence/{id}", name="delete_competence" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_competence(int $id, Request $request): Response
{
$competence = $this->em->getRepository(Competences::class)->find($id);
if (!$competence) {
return new Response('Competence not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($competence);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting competence: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/ajout_sf_competence", name="ajout_sf_competence" , options = {"expose"=true})
*/
public function ajout_sf_competence(Request $request , SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
{
$existence = $SousFamilleCompetenceRepository->findOneBy(['nom_sf'=>$request->get('competesous_famille_nnce_n')]);
if($existence == null){
$SousFamilleCompetence = new SousFamilleCompetence();
$SousFamilleCompetence->setNomSf($request->get('sous_famille_n'));
$SousFamilleCompetence->setDescription($request->get('description_sf_n'));
$SousFamilleCompetence->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$SousFamilleCompetence->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$SousFamilleCompetence->setEtat($request->get('etat_sf_n'));
$this->em->persist($SousFamilleCompetence);
$this->em->flush();
return new Response('OK');
}else{
return new Response('KOO');
}
}
/**
* @Route("/modif_sfCompetence/{id}", name="modif_sfCompetence" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_sfCompetence(int $id, Request $request): Response
{
$competenceSf = $this->em->getRepository(SousFamilleCompetence::class)->find($id);
if (!$competenceSf) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Sous famille not found!']);
};
$competenceSf->setNomSf($request->get('sous_famille_n_modif'));
$competenceSf->setDescription($request->get('description_sf_n_modif'));
$competenceSf->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$competenceSf->setEtat($request->get('etat_sf_n_modif'));
try {
$this->em->persist($competenceSf);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Sous famille mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de famille competence: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/deleteSf_competence/{id}", name="deleteSf_competence" , methods={"DELETE"}, options = {"expose"=true})
*/
public function deleteSf_competence(int $id, Request $request): Response
{
$competenceSf = $this->em->getRepository(SousFamilleCompetence::class)->find($id);
if (!$competenceSf) {
return new Response('Sous famille competence not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($competenceSf);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting sous famille competence: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/ajout_famille_competence", name="ajout_famille_competence" , options = {"expose"=true})
*/
public function ajout_famille_competence(Request $request , FamilleCompetenceRepository $FamilleCompetenceRepository ): Response
{
$existence = $FamilleCompetenceRepository->findOneBy(['nom_f'=>$request->get('famille_n')]);
if($existence == null){
$FamilleCompetence = new FamilleCompetence();
$FamilleCompetence->setNomF($request->get('famille_n'));
$FamilleCompetence->setDescription($request->get('description_f_n'));
$FamilleCompetence->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$FamilleCompetence->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$FamilleCompetence->setEtat($request->get('etat_f_n'));
$this->em->persist($FamilleCompetence);
$this->em->flush();
return new Response('OK');
}else{
return new Response('KOO');
}
}
/**
* @Route("/modif_fCompetence/{id}", name="modif_fCompetence" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_fCompetence(int $id, Request $request): Response
{
$competenceF = $this->em->getRepository(FamilleCompetence::class)->find($id);
if (!$competenceF) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Famille not found!']);
};
$competenceF->setNomF($request->get('famille_n_modif'));
$competenceF->setDescription($request->get('description_f_n_modif'));
$competenceF->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$competenceF->setEtat($request->get('etat_f_n_modif'));
try {
$this->em->persist($competenceF);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Famille competence mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de famille competence: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/deletef_competence/{id}", name="deletef_competence" , methods={"DELETE"}, options = {"expose"=true})
*/
public function deletef_competence(int $id, Request $request): Response
{
$competenceF = $this->em->getRepository(FamilleCompetence::class)->find($id);
if (!$competenceF) {
return new Response('Famille competence not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($competenceF);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting famille competence: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/affectation_competence", name="affectation_competence" , options = {"expose"=true})
*/
public function affectation_competence(Request $request , FamilleCompetenceRepository $FamilleCompetenceRepository , CompetencesRepository $CompetencesRepository , SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
{
$sf = $SousFamilleCompetenceRepository->find($request->get('sous_famille_competence'));
$f = $FamilleCompetenceRepository->find($request->get('famille_competence'));
$cs = $request->get('competences');
$AffCompetenceSf = new AffCompetenceSf();
$AffCompetenceSf->setCompetences($cs);
$AffCompetenceSf->setSousFamilleCompetence($sf);
$AffCompetenceSf->setFamille($f);
$AffCompetenceSf->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$this->em->persist($AffCompetenceSf);
$this->em->flush();
$AffSousFamilleFamille = new AffSousFamilleFamille();
$AffSousFamilleFamille->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$AffSousFamilleFamille->setSousFamille($sf);
$AffSousFamilleFamille->setFamille($f);
$this->em->persist($AffSousFamilleFamille);
$this->em->flush();
return new Response('OK');
}
/**
* @Route("/modif_AffCompetence/{id}", name="modif_AffCompetence" , options = {"expose"=true})
*/
public function modif_AffCompetence(int $id,Request $request , FamilleCompetenceRepository $FamilleCompetenceRepository , CompetencesRepository $CompetencesRepository , SousFamilleCompetenceRepository $SousFamilleCompetenceRepository ): Response
{
$sf = $SousFamilleCompetenceRepository->find($request->get('sous_famille_competence_edit'));
$f = $FamilleCompetenceRepository->find($request->get('famille_competence_edit'));
$cs = $request->get('competences');
$AffCompetenceSf = $this->em->getRepository(AffCompetenceSf::class)->find($id);
if (!$AffCompetenceSf) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Affectation famille not found!']);
};
$AffCompetenceSf->setCompetences($cs);
$AffCompetenceSf->setSousFamilleCompetence($sf);
$AffCompetenceSf->setFamille($f);
try {
$this->em->persist($AffCompetenceSf);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Affectation famille mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de affectation famille competence: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/deleteAff_competence/{id}", name="deleteAff_competence" , methods={"DELETE"}, options = {"expose"=true})
*/
public function deleteAff_competence(int $id, Request $request): Response
{
$AffCompetenceSf = $this->em->getRepository(AffCompetenceSf::class)->find($id);
if (!$AffCompetenceSf) {
return new Response('Famille competence not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($AffCompetenceSf);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting affectation competence: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/serverCompetence", name="serverCompetence", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverCompetence(Request $request ): Response
{
//echo $this->session->getMetadataBag()->getLifetime();
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.competence LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id','u.competence', 'u.etat', 'u.date_creation', 'u.date_update'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_competences = [];
$total_competences = $this->em->createQuery(
'SELECT u
FROM App\Entity\Competences u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_competences ) ;
$competeneces = $this->em->createQuery(
'SELECT u
FROM App\Entity\Competences u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
$etat = '';
foreach($competeneces as $competence){
if($competence->getEtat() == 1){
$etat = '<span class="badge bg-success">Actif</span>';
}else if($competence->getEtat() == 0){
$etat = '<span class="badge bg-danger">Inactif</span>';
};
$output[] = [
'id'=>$competence->getId() ,
'competenece'=>$competence->getCompetence() ,
'etat'=>$etat ,
'created_at' => date_format( $competence->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $competence->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/serverFamilleCompetence", name="serverFamilleCompetence", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverFamilleCompetence(Request $request ): Response
{
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.nom_f LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id', 'u.nom_f', 'u.description', 'u.etat', 'u.date_creation', 'u.date_update'];
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_competences = [];
$total_competences = $this->em->createQuery(
'SELECT u
FROM App\Entity\FamilleCompetence u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_competences ) ;
$famillecompeteneces = $this->em->createQuery(
'SELECT u
FROM App\Entity\FamilleCompetence u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
$etat = '';
foreach($famillecompeteneces as $competence){
if($competence->getEtat() == 1){
$etat = '<span class="badge bg-success">Actif</span>';
}else if($competence->getEtat() == 0){
$etat = '<span class="badge bg-danger">Inactif</span>';
};
$output[] = [
'id'=>$competence->getId() ,
'familleCompetenece'=>$competence->getNomF() ,
'description'=>$competence->getDescription() ,
'etat'=>$etat ,
'created_at' => date_format( $competence->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $competence->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/serverSousFamilleCompetence", name="serverSousFamilleCompetence", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverSousFamilleCompetence(Request $request): Response
{
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.nom_sf LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.description LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id', 'u.nom_sf', 'u.description', 'u.etat', 'u.date_creation', 'u.date_update'];
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_competences = [];
$total_competences = $this->em->createQuery(
'SELECT u
FROM App\Entity\SousFamilleCompetence u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_competences ) ;
$sousFamillecompeteneces = $this->em->createQuery(
'SELECT u
FROM App\Entity\SousFamilleCompetence u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
$etat = '';
foreach($sousFamillecompeteneces as $competence){
if($competence->getEtat() == 1){
$etat = '<span class="badge bg-success">Actif</span>';
}else if($competence->getEtat() == 0){
$etat = '<span class="badge bg-danger">Inactif</span>';
};
$output[] = [
'id'=>$competence->getId() ,
'sousFamilleCompetenece'=>$competence->getNomSf() ,
'description'=>$competence->getDescription() ,
'etat'=>$etat ,
'created_at' => date_format( $competence->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $competence->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/serverAffectation", name="serverAffectation", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverAffectation(Request $request,CompetencesRepository $CompetencesRepository,FamilleCompetenceRepository $FamilleCompetenceRepository,SousFamilleCompetenceRepository $SousFamilleCompetenceRepository): Response
{
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.id LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
// $searchValue = $request->get('search')['value'];
// $sql_where .= ' AND (u.id LIKE \'%'.$searchValue.'%\' OR sf.nom_sf LIKE \'%'.$searchValue.'%\' OR f.nom_f LIKE \'%'.$searchValue.'%\') ';
}
$user_array = [] ;
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id', 'u.famille','u.sous_famille_competence','u.competence', 'u.date_creation'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_competences = [];
$total_competences = $this->em->createQuery(
'SELECT u
FROM App\Entity\AffCompetenceSf u
WHERE 1=1 '.$sql_where.'
'
)
->getResult();
$I_nbResultatsTotal = count( $total_competences ) ;
$affCompetenceSfArray = $this->em->createQuery(
'SELECT u
FROM App\Entity\AffCompetenceSf u
WHERE 1=1 '.$sql_where.' '.$order
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
//$affCompetenceSfArray = $this->em->createQuery(
// 'SELECT u, sf, f
// FROM App\Entity\AffCompetenceSf u
// JOIN u.sous_famille_competence AS sf
// JOIN u.famille AS f
// WHERE 1=1 '.$sql_where.'
// )
// ->getResult() ;
$output = [] ;
foreach($affCompetenceSfArray as $affCompetenceSf){
$sousFamilleCompetenceId = $affCompetenceSf->getSousFamilleCompetenceId();
$familleCompetenceId = $affCompetenceSf->getFamilleCompetenceId();
$sousFamilleCompetenceName = $SousFamilleCompetenceRepository->find($sousFamilleCompetenceId)->getNomSf();
$FamilleCompetenceName = $FamilleCompetenceRepository->find($familleCompetenceId)->getNomF();
$competencesArray = $affCompetenceSf->getCompetenceIds();
$competenceNames = [];
foreach($competencesArray as $competence){
$competenceNames[] = '<span class="badge bg-primary">' .$CompetencesRepository->find($competence)->getCompetence(). '</span>';
}
$output[] = [
'id'=>$affCompetenceSf->getId() ,
'competence'=>implode(' ', $competenceNames) ,
'sous_famille_competence'=>$sousFamilleCompetenceName ,
'famille' => $FamilleCompetenceName,
'date_creation' => date_format( $affCompetenceSf->getDateCreation() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
// end Partie Configuration Compétence
/**
* @Route("/configuration_formule", name="configuration_formule", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_formule(Request $request , EtatRepository $EtatRepository, AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$etats = $EtatRepository->findAll();
return $this->render('configuration/config_formule.html.twig',[
'admin' => $admin,
'etats'=>$etats,
'access' => $accessArray,
'pages' => $niveauAcessPages
]);
}
/**
* @Route("/configuration_smtp", name="configuration_smtp", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_smtp(Request $request ,ConfigSmtpRepository $ConfigSmtpRepository ,EtatRepository $EtatRepository, AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$smtp = $ConfigSmtpRepository->findOneBy([],['id'=>'desc']) ;
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$etats = $EtatRepository->findAll();
return $this->render('configuration/config_smtp.html.twig',[
'admin' => $admin,
'etats'=>$etats,
'smtp' => $smtp,
]);
}
/**
* @Route("/testSmtp", name="testSmtp", methods={"GET","POST"} , options = {"expose" = true})
*/
public function testSmtp(Request $request , GlobalAdmin $GlobalAdmin , ConfigSmtpRepository $ConfigSmtpRepository): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
return new Response('disconnect') ;
}
$transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp') ))
->setUsername($request->get('user_smtp'))
->setPassword($request->get('mdp_smtp'))
;
try{
$mailer = new \Swift_Mailer($transport);
return new Response('OK') ;
}
catch (\Swift_TransportException $e) {
return new Response($e->getMessage()) ;
}
}
/**
* @Route("/testDestinataires", name="testDestinataires", methods={"GET","POST"} , options = {"expose" = true})
*/
public function testDestinataires(Request $request , GlobalAdmin $GlobalAdmin , ConfigSmtpRepository $ConfigSmtpRepository): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
return new Response('disconnect') ;
}
$transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp') ))
->setUsername($request->get('user_smtp'))
->setPassword($request->get('mdp_smtp'))
;
$mailer = new \Swift_Mailer($transport);
$sender = $request->get('user_smtp') ;
$msg = [];
foreach($request->get('destinataires') as $destinataire ){
if($destinataire != ""){
$message = (new \Swift_Message('Test SMTP : Destinataires')) ;
$message->setFrom($sender)
->setTo($destinataire)
->setBody(
$this->renderView(
// templates/emails/registration.txt.twig
'emails/test.html.twig'
), 'text/html'
);
try{
$mailer->send($message);
$msg[] = 'OK' ;
}
catch (\Swift_TransportException $e) {
$msg[] = $e->getMessage() ;
}
}
}
return new Response(json_encode($msg), 200, ['Content-Type' => 'application/json']) ;
}
/**
* @Route("/testDestinatairesTransaction", name="testDestinatairesTransaction", methods={"GET","POST"} , options = {"expose" = true})
*/
public function testDestinatairesTransaction(Request $request , GlobalAdmin $GlobalAdmin , ConfigSmtpRepository $ConfigSmtpRepository): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
return new Response('disconnect') ;
}
$transport = (new \Swift_SmtpTransport($request->get('host_smtp'), $request->get('port_smtp') , $request->get('type_smtp') ))
->setUsername($request->get('user_smtp'))
->setPassword($request->get('mdp_smtp'))
;
$mailer = new \Swift_Mailer($transport);
$sender = $request->get('user_smtp') ;
$msg = [];
foreach($request->get('destinataires_transaction') as $destinataire ){
if($destinataire != ""){
$message = (new \Swift_Message('Test SMTP : Destinataires Transaction')) ;
$message->setFrom($sender)
->setTo($destinataire)
->setBody(
$this->renderView(
// templates/emails/registration.txt.twig
'emails/test_transaction.html.twig'
), 'text/html'
);
try{
$mailer->send($message);
$msg[] = 'OK' ;
}
catch (\Swift_TransportException $e) {
$msg[] = $e->getMessage() ;
}
}
}
return new Response(json_encode($msg), 200, ['Content-Type' => 'application/json']) ;
}
/**
* @Route("/sauvegardeConfigSmtp", name="sauvegardeConfigSmtp", methods={"GET","POST"} , options = {"expose" = true})
*/
public function sauvegardeConfigSmtp(Request $request , GlobalAdmin $GlobalAdmin , ConfigSmtpRepository $ConfigSmtpRepository): Response
{
if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
return new Response('disconnect') ;
}
$token = $GlobalAdmin->genererCode(20) ;
if($request->get('id_smtp') != "" ){
$smtp = $ConfigSmtpRepository->find($request->get('id_smtp')) ;
}
else{
$smtp = new ConfigSmtp();
}
$smtp->setHost( $request->get('host_smtp') );
$smtp->setPort( $request->get('port_smtp') );
$smtp->setTypeConnexion( $request->get('type_smtp') );
$smtp->setUser( $request->get('user_smtp') );
$smtp->setMdp( $request->get('mdp_smtp') );
$smtp->setDestinataires( $request->get('destinataires') );
$smtp->setDestinatairesTransaction( $request->get('destinataires_transaction') );
$this->em->persist($smtp);
$this->em->flush();
return new Response($smtp->getId());
}
/**
* @Route("/configuration-pages-legales", name="configuration-pages-legales", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_html_pages(Request $request , EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$langues = $this->em->getRepository(Langue::class)->findAll();
return $this->render('configuration/configuration_html_pages.html.twig',[
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'langues'=>$langues
]);
}
/**
* @Route("/add_content_to_pages", name="add_content_to_pages", methods={"GET","POST"} , options={"expose"=true})
*/
public function add_content_to_pages(Request $request): JsonResponse
{
//dd($request->request->all());
if($request->get('selectedPage')=='cg'){
$page=new ConditionGenerale();
}
else if($request->get('selectedPage')=='cgv'){
$page=new Cgi();
}
else{
$page=new MentionsLegales();
}
$langue= $this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
$page->setContenu($request->get('page_content'))
->setLangue($langue)
->setDateCreation(new \DateTime());
try {
$this->em->persist($page);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
} /**/
}
/**
* @Route("/edit_page_content", name="edit_page_content", methods={"GET","POST"} , options={"expose"=true})
*/
public function edit_page_content(Request $request,MentionsLegalesRepository $MentionsLegalesRepository,CgiRepository $CgiRepository, ConditionGeneraleRepository $ConditionGeneraleRepository): JsonResponse
{
//dd($request->request->all());
if($request->get('selectedPage')=='cg'){
$page = $ConditionGeneraleRepository->find($request->get('id_page'));
}
else if($request->get('selectedPage')=='cgv'){
$page = $CgiRepository->find($request->get('id_page'));
}
else{
$page = $MentionsLegalesRepository->find($request->get('id_page'));
}
$langue= $this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
//$langue= $this->em->getRepository(Langue::class)->findOneBy(['id' => $request->get('langue')]);
$page->setContenu($request->get('page_content'))
->setDisplayPosition($request->get('emplacement'))
->setLangue($langue)
->setDateUpdate(new \DateTime());
try {
$this->em->persist($page);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
} /**/
}
/**
* @Route("/serveContentCG", name="serveContentCG", methods={"GET"} , options={"expose"=true})
*/
public function serveContentCG(Request $request): Response{
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;
}
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['p.langue','p.contenu','p.date_creation'];
$orders = [];
for ($i = 0; $i < count($request->get('order')); $i++) {
$orders[] = $columns[$request->get('order')[$i]['column']] . ' ' . $request->get('order')[$i]['dir'];
}
$order = !empty($orders) ? " ORDER BY " . implode(',', $orders) : '';
$pagesContents = $this->em->createQuery(
'SELECT p
FROM App\Entity\ConditionGenerale p
WHERE 1=1 '.$sql_where.' '.$order.'
'
)->setMaxResults($limit)
->setFirstResult($offset)
->getResult();
$out=[];
if(!empty($pagesContents))
{
foreach ($pagesContents as $pageContent) {
$idCrypté = sha1($pageContent->getId());
$baseUrl = $request->getSchemeAndHttpHost();
$lienPageLegale = $baseUrl . '/contenu-page-condition-generale/' . $idCrypté;
$out[] = [
'id' => $pageContent->getId(),
'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
'contenu'=>$pageContent->getContenu(),
'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
'emplacementVal'=>$pageContent->getDisplayPosition(),
'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
'date_creation'=>date_format( $pageContent->getDateCreation() , 'd/m/Y '),
'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
];
}
}
$I_nbResultatsTotal = count( $out ) ;
$JSON = json_encode($out);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/serveContentCGV", name="serveContentCGV", methods={"GET"} , options={"expose"=true})
*/
public function serveContentCGV(Request $request): Response{
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;
}
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['p.langue','p.contenu','p.date_creation'];
$orders = [];
for ($i = 0; $i < count($request->get('order')); $i++) {
$orders[] = $columns[$request->get('order')[$i]['column']] . ' ' . $request->get('order')[$i]['dir'];
}
$order = !empty($orders) ? " ORDER BY " . implode(',', $orders) : '';
$pagesContents = $this->em->createQuery(
'SELECT p
FROM App\Entity\Cgi p
WHERE 1=1 '.$sql_where.' '.$order.'
'
)->setMaxResults($limit)
->setFirstResult($offset)
->getResult();
$out=[];
if(!empty($pagesContents))
{
foreach ($pagesContents as $pageContent) {
$idCrypté = sha1($pageContent->getId());
$baseUrl = $request->getSchemeAndHttpHost();
$lienPageLegale = $baseUrl . '/contenu-page-cgi/' . $idCrypté;
$out[] = [
'id' => $pageContent->getId(),
'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
'contenu'=>$pageContent->getContenu(),
'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
'emplacementVal'=>$pageContent->getDisplayPosition(),
'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
'date_creation'=>date_format( $pageContent->getDateCreation() , 'd/m/Y '),
'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
];
}
}
$I_nbResultatsTotal = count( $out ) ;
$JSON = json_encode($out);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/servePagesContentMentionsLegales", name="servePagesContentMentionsLegales", methods={"GET"} , options={"expose"=true})
*/
public function servePagesContentMentionsLegales(Request $request): Response{
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( p.contenu LIKE \'%'.$request->get('search')['value'].'%\' )' ;
}
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['p.langue','p.contenu','p.date_creation'];
$orders = [];
for ($i = 0; $i < count($request->get('order')); $i++) {
$orders[] = $columns[$request->get('order')[$i]['column']] . ' ' . $request->get('order')[$i]['dir'];
}
$order = !empty($orders) ? " ORDER BY " . implode(',', $orders) : '';
$pagesContents = $this->em->createQuery(
'SELECT p
FROM App\Entity\MentionsLegales p
WHERE 1=1 '.$sql_where.' '.$order.'
'
)->setMaxResults($limit)
->setFirstResult($offset)
->getResult();
$out=[];
if(!empty($pagesContents))
{
foreach ($pagesContents as $pageContent) {
$idCrypté = sha1($pageContent->getId());
$baseUrl = $request->getSchemeAndHttpHost();
$lienPageLegale = $baseUrl . '/contenu-page-legale/' . $idCrypté;
$out[] = [
'id' => $pageContent->getId(),
'langue' =>$pageContent->getLangue()?$pageContent->getLangue()->getLangue():"--",
'contenu'=>$pageContent->getContenu(),
'emplacement'=>$pageContent->getDisplayPosition()&&$pageContent->getDisplayPosition()=="footer_centre"?"Pied de page centre":"Pied de page droite",
'emplacementVal'=>$pageContent->getDisplayPosition(),
'langueId' =>$pageContent->getLangue()?$pageContent->getLangue()->getId():null,
'date_creation'=>date_format( $pageContent->getDateCreation() , 'd/m/Y '),
'lien_contenu' => '<a href="'.$lienPageLegale.'"target="_blank">Lire le contenu de la page</a>',
];
}
}
$I_nbResultatsTotal = count( $out ) ;
$JSON = json_encode($out);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/contenu-page-condition-generale/{id}", name="contenu-page-condition-generale", methods={"GET"} , options={"expose"=true})
*/
public function afficherPageConditionGenerale( $id,Request $request, EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$langues = $this->em->getRepository(Langue::class)->findAll();
$pageContent = $this->em->createQuery(
'SELECT p
FROM App\Entity\ConditionGenerale p
WHERE SHA1(p.id) = \''.$id.'\'
'
)
->getOneOrNullResult() ;
//dd($pageContent);
return $this->render('configuration/affichage_contenu.html.twig', [
'pageText' => $pageContent->getContenu(),
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'langues'=>$langues
]);
}
/**
* @Route("/contenu-page-cgi/{id}", name="contenu-page-cgi", methods={"GET"} , options={"expose"=true})
*/
public function afficherPageCgi( $id,Request $request, EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$langues = $this->em->getRepository(Langue::class)->findAll();
$pageContent = $this->em->createQuery(
'SELECT p
FROM App\Entity\Cgi p
WHERE SHA1(p.id) = \''.$id.'\'
'
)
->getOneOrNullResult() ;
//dd($pageContent);
return $this->render('configuration/affichage_contenu.html.twig', [
'pageText' => $pageContent->getContenu(),
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'langues'=>$langues
]);
}
/**
* @Route("/contenu-page-legale/{id}", name="contenu-page-legale", methods={"GET"} , options={"expose"=true})
*/
public function afficherPageLegale( $id,Request $request, EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): mixed
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$langues = $this->em->getRepository(Langue::class)->findAll();
$pageContent = $this->em->createQuery(
'SELECT p
FROM App\Entity\MentionsLegales p
WHERE SHA1(p.id) = \''.$id.'\'
'
)
->getOneOrNullResult() ;
//dd($pageContent);
return $this->render('configuration/affichage_contenu.html.twig', [
'pageText' => $pageContent->getContenu(),
'admin' => $admin,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'langues'=>$langues
]);
}
/**
* @Route("/delete_page_cg/{id}", name="delete_page_cg" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_page_cg( $id, Request $request,ConditionGeneraleRepository $ConditionGeneraleRepository): Response
{
$page = $ConditionGeneraleRepository->find($id);
if (!$page) {
return new Response('page not found!', Response::HTTP_NOT_FOUND);
}
try {
$this->em->remove($page);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting page: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_page_cgv/{id}", name="delete_page_cgv" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_page_cgv( $id, Request $request,CgiRepository $CgiRepository): Response
{
$page = $CgiRepository->find($id);
if (!$page) {
return new Response('page not found!', Response::HTTP_NOT_FOUND);
}
try {
$this->em->remove($page);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting page: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_page_mentions_legales/{id}", name="delete_page_mentions_legales" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_page_mentions_legales( $id, Request $request,MentionsLegalesRepository $MentionsLegalesRepository): Response
{
$page = $MentionsLegalesRepository->find($id);
if (!$page) {
return new Response('page not found!', Response::HTTP_NOT_FOUND);
}
try {
$this->em->remove($page);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting page: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/configuration_formules", name="configuration_formules", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_formules(Request $request , EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4')&& ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$etats = $EtatRepository->findAll();
$formules = $this->em->getRepository(Formules::class)->findAll();
$regions = $this->em->getRepository(Region::class)->findAll();
$pays = $this->em->getRepository(Pays::class)->findAll();
$entreprises = $this->em->getRepository(Entreprise::class)->findAll();
$tailles_entreprise = $this->em->getRepository(TailleEntreprise::class)->findAll();
return $this->render('configuration/config_new_formule.html.twig',[
'admin' => $admin,
'etats'=>$etats,
'formules' => $formules,
'access' => $accessArray,
'pages' => $niveauAcessPages,
'entreprises'=>$entreprises,
'pays'=>$pays,
'tailles_entreprise'=>$tailles_entreprise,
'regions'=>$regions
]);
}
/**
* @Route("/verif_existing_pays_code", name="verif_existing_pays_code", methods={"GET","POST"} , options={"expose"=true})
*/
public function verif_existing_pays_code(Request $request , EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$value = $request->get('code');
$paysCible = $request->get('paysCible');
$suggestions=[];
if(!empty($paysCible))
{
$query = $this->em->getRepository(Pays::class)
->createQueryBuilder('p')
->where('p.alpha2 = :alpha2')
->andWhere('p.id IN (:paysCible)')
->setParameter('alpha2', strtoupper($value))
->setParameter('paysCible', $paysCible)
->getQuery();
$exists = $query->getOneOrNullResult();
}
else
{
$exists = $this->em->getRepository(Pays::class)->findOneBy(['alpha2' => strtoupper($value)]);
}
$pays = $this->em->getRepository(Pays::class)->findAll();
foreach ($pays as $p) {
$suggestions[] = [$p->getNomFrFR().'('.$p->getAlpha2().')'
];
}
return new JsonResponse([
'exists' => $exists ? true : false,
'suggestions' => $suggestions
]);
}
/**
* @Route("/add_formule", name="add_formule", methods={"POST","GET"} , options={"expose"=true})
*/
public function add_formule(Request $request, EntityManagerInterface $em, FormulesRepository $formulesRepository): JsonResponse
{
$data = $request->request->all();
$formule = new Formules();
// Handle formula type and fields based on type
$typeFormule = $data['typeFormule'] ?? 'payante'; // default to 'payante' if not set
$formule->setType($typeFormule);
if ($typeFormule === 'payante') {
$formule->setPrix($data['prixFormule'] ?? null);
$formule->setUnite($data['uniteFormule'] ?? null);
$formule->setRegimeTva($data['regimeTva'] ?? null);
$formule->setPeriodicite($data['periodicite'] ?? null);
} else {
// For 'gratuite' and 'permanente', set price-related fields to null
$formule->setPrix(null);
$formule->setUnite(null);
$formule->setRegimeTva(null);
$formule->setPeriodicite(null);
}
// Set common fields
$formule->setNomFormule($data['nomFormule'] ?? null);
$formule->setDure($data['dure'] ?? null);
$formule->setEtat($data['etatFormule'] ?? null);
$formule->setCodeFacturation($data['codeFacturation'] ?? null);
// Handle visibility checkbox
$isVisible = isset($data['visibilityCheckbox']);
$formule->setIsVisible($isVisible);
// Handle description fields (using the new properties)
$formule->setDescription($data['descriptionOnline'] ?? null);
$formule->setDescriptionFacture($data['descriptionFacture'] ?? null);
// Handle multi-select fields
$formule->setDestination($data['destinationFormule'] ?? null);
$formule->setUserLimit($data['userLimit'] ?? null);
// Handle bonus fields
$formule->setBonnusGeo(isset($data['geoBonusCheckbox']) ? ($data['bonnusGeo'] ?? null) : null);
$formule->setBonnusPub(isset($data['pubBonusCheckbox']) ? ($data['bonnus_pub'] ?? null) : null);
$formule->setDureeBonnusPub(isset($data['pubBonusCheckbox']) ? ($data['duree_bonnus_pub'] ?? null) : null);
$formule->setBonnusEvent($data['bonnus_event'] ?? null);
$formule->setDureeBonnusEvent($data['dure']);
// Handle "formuleFirstPage" checkbox
$formule->setFormuleFirstPage(isset($data['formuleFirstPage']));
$formule->setFrequence("produit");
$formule->setDateCreation(new \DateTime());
if($request->get('PaysSpecifiques')!=null){
$formule->setPaysCibles($request->get('PaysSpecifiques'));
}
// Persist and flush the entity
$em->persist($formule);
$em->flush();
return new JsonResponse(['status' => 'success', 'message' => 'Formule ajoutée avec succès!']);
}
public function add_formule0(Request $request,FormulesRepository $FormulesRepository): JsonResponse
{
dd($request->request->all(),$request->get('cp_cible'));
$optionsString = $request->get('options');
$optionsArray = json_decode($optionsString, true);
$formulesEntity = new Formules();
$formulesEntity->setEtat($request->get('etatFormule'));
$formulesEntity->setType($request->get('typeFormule'));
if($request->get('typeFormule') == "gratuite"){
$dest=$request->get('destinationFormule')[0];
// dd($nom);
$formulesFiltrees=[];
$formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);
$formulesFiltrees = array_filter($formulesGratuites, function ($formule) use ( $dest) {
return $formule->getDestination()!=null &&in_array( $dest, $formule->getDestination());
});
$nom = 'formule gratuite ' . $request->get('destinationFormule')[0] . ' ' . count($formulesFiltrees);
$formulesEntity->setNomFormule($nom);
$formulesEntity->setFrequence('Formule');
$formulesEntity->setPeriodicite('Mensuel');
}
else{
$formulesEntity->setNomFormule($request->get('nomFormule'));
$formulesEntity->setPrix($request->get('prixFormule'));
$formulesEntity->setUnite($request->get('uniteFormule'));
$formulesEntity->setPeriodicite($request->get('periodicite'));
$formulesEntity->setDure($request->get('dure'));
$formulesEntity->setregimeTva($request->get('regimeTva'));
$formulesEntity->setDescription($request->get('descriptionFormule'));
$formulesEntity->setFrequence($request->get('frequenceFormule'));
if($request->get('cp_cible')!=""){
$cpArr=json_decode($request->get('cp_cible'), true);
$formulesEntity->setCpCibles($cpArr);
}
}
$formulesEntity->setDestination($request->get('destinationFormule'));
$formulesEntity->setBonnusGeo($request->get('bonnusGeo'));
$formulesEntity->setBonnusEvent($request->get('eventBonusInput'));
$formulesEntity->setDureeBonnusEvent($request->get('dure_bonnus_event'));
$formulesEntity->setBonnusPub($request->get('pubBonusInput'));
$formulesEntity->setDureeBonnusPub($request->get('dure_bonnus_pub'));
if($request->get('formuleFirstPage'))
{
$formulesEntity->setFormuleFirstPage(true);
}
else
{
$formulesEntity->setFormuleFirstPage(false);
}
$formulesEntity->setDateCreation(new \DateTime());
if($request->get('PaysSpecifiques')!=null){
$formulesEntity->setPaysCibles($request->get('PaysSpecifiques'));
}
/*if($request->get('EntreprisesSpecifiques')!=null){
$formulesEntity->setEntreprisesCibles($request->get('EntreprisesSpecifiques'));
}
if($request->get('VillesSpecifiques')!=null){
$formulesEntity->setVillesCibles($request->get('VillesSpecifiques'));
}
if($request->get('taillesSpecifiques')!=null){
$formulesEntity->setTaillesEntrepriseCible($request->get('taillesSpecifiques'));
}*/
try {
$this->em->persist($formulesEntity);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'KOO','message' => $e->getMessage()]);
}
}
/**
* @Route("/get_formule_by_id/{id}", name="get_formule_by_id", methods={"GET"} , options={"expose"=true})
*/
public function get_formule_by_id(Request $request,$id,FormulesRepository $FormulesRepository,FormuleOptionsRepository $formuleOptionsRepository): Response{
// dd($id);
$formule=$FormulesRepository->findOneBy(['id'=>$id]);
if (!$formule) {
$msg = ['msg'=>'KOO'] ;
$JSON = json_encode($msg);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/*$formuleOptions = $formuleOptionsRepository->findBy(['formule' => $id],['Ordre' => 'ASC']);
$optionsData = [];
foreach ($formuleOptions as $option) {
$optionsData[] = [
'id' => $option->getId(),
'nom' => $option->getNomOption(),
'prix' => $option->getPrix(),
'unite' => $option->getUnite(),
'description' => $option->getDescription(),
'etat' => $option->getEtat(),
'ordre'=>$option->getOrdre(),
'paysCibles'=>$option->getPaysCibles()!=null?$option->getPaysCibles():[]
];
}*/
$excludedPays=[];
if($formule->getType()=="gratuite"&&$formule->getDestination()!=null){
$queryBuilder = $FormulesRepository->createQueryBuilder('f')
->where('f.type = :type')
->andWhere('f.id != :id')
->setParameter('type', 'gratuite')
->setParameter('id', $formule->getId());
$formulesGratuites = $queryBuilder->getQuery()->getResult();
//dd($formulesGratuites);
$formulDest=$formule->getDestination()[0];
$formulesFiltrees = array_filter($formulesGratuites, function ($f) use ( $formulDest) {
return $f->getDestination()!=null &&in_array($formulDest, $f->getDestination());
});
$paysCibles = [];
foreach ($formulesFiltrees as $fo) {
if($fo->getPaysCibles()!=null)
{
$paysCibles = array_merge($paysCibles, $fo->getPaysCibles());
}
}
$excludedPays= array_unique($paysCibles);
}
//dd($excludedPays);
$res = [
'id' => $formule->getId(),
'statusFormule'=>$formule->getEtat(),
'description'=>$formule->getDescription(),
'nom' =>$formule->getNomFormule(),
'typeFormule' =>$formule->getType(),
'prix'=>$formule->getPrix()!=null?$formule->getPrix():"--",
'Unite'=>$formule->getUnite()!=null?$formule->getUnite():"--",
'paysCibles'=>$formule->getPaysCibles()!=null?$formule->getPaysCibles():[],
'cpCibles'=>$formule->getCpCibles()!=null?$formule->getCpCibles():[],
// 'entreprisesCibles'=>$formule->getEntreprisesCibles()!=null?$formule->getEntreprisesCibles():[],
//'villesCibles'=>$formule->getVillesCibles()!=null?$formule->getVillesCibles():[],
//'taillesECibles'=>$formule->getTaillesEntrepriseCible()!=null?$formule->getTaillesEntrepriseCible():[],
// 'optionsData'=>$optionsData
'destinations' => $formule->getDestination(),
'frequence'=>$formule->getFrequence(),
'periodicite'=>$formule->getPeriodicite(),
'bonnusGeo'=>$formule->getBonnusGeo(),
'bonnusEvent'=>$formule->getBonnusEvent(),
'bonnusPub'=>$formule->getBonnusPub(),
'regimeTva'=>$formule->getRegimeTva(),
'dure'=>$formule->getDure(),
'formuleProposeFirstPage'=>$formule->isFormuleFirstPage(),
'excludedPays'=>$excludedPays,
'dureeBonnusEvent'=>$formule->getDureeBonnusEvent(),
'dureeBonnusPub'=>$formule->getDureeBonnusPub(),
];
$JSON = json_encode($res);
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/get_formules_gratuits_pays", name="get_formules_gratuits_pays", methods={"GET"} , options={"expose"=true})
*/
public function get_formules_gratuits_pays(Request $request,FormulesRepository $FormulesRepository,FormuleOptionsRepository $formuleOptionsRepository): Response{
$destinationFormule=$request->get('destinationFormule');
$formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);
$formulesFiltrees = array_filter($formulesGratuites, function ($formule) use ($destinationFormule) {
return $formule->getDestination()!=null &&in_array($destinationFormule, $formule->getDestination());
});
$paysCibles = [];
foreach ($formulesFiltrees as $formule) {
if($formule->getPaysCibles()!=null)
{
$paysCibles = array_merge($paysCibles, $formule->getPaysCibles());
}
}
return $this->json([
'paysCibles' => array_unique($paysCibles)
]);
}
/**
* @Route("/serveFormules", name="serveFormules", methods={"GET"} , options={"expose"=true})
*/
public function serveFormules(Request $request): Response{
$sql_where = "" ;
$paysId="75";
$formules = $this->em->getRepository(Formules::class)->findAll();
if($request->get('custom_search')!=""){
$sql_where .= ' AND ( f.nom_formule LIKE \'%'.$request->get('custom_search').'%\' )' ;
$sql_where .= ' OR ( f.description LIKE \'%'.$request->get('custom_search').'%\' )' ;
$sql_where .= ' OR ( f.type LIKE \'%'.$request->get('custom_search').'%\' )' ;
}
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['f.nom_formule','f.regime_tva','f.frequence','f.type','f.etat'];
$orders = [];
// dd($request->get('order'));
for ($i = 0; $i < count($request->get('order')); $i++) {
if($request->get('order')[$i]['column']=="3"){
$orders[] = "CASE WHEN f.type = 'gratuite' THEN 0 ELSE 1 END";
}
$orders[] = $columns[$request->get('order')[$i]['column']] . ' ' . $request->get('order')[$i]['dir'];
}
$order = !empty($orders) ? " ORDER BY " . implode(',', $orders) : "CASE WHEN f.type = 'gratuite' THEN 0 ELSE 1 END";
$formules = $this->em->createQuery(
'SELECT f
FROM App\Entity\Formules f
WHERE 1=1 '.$sql_where.' '.$order.'
'
)->setMaxResults($limit)
->setFirstResult($offset)
->getResult();
$out=[];
if ($request->get('cible_filter') != "tous") {
$cibleFilter = $request->get('cible_filter');
$formules = array_filter($formules, function ($formule) use ( $cibleFilter) {
return $formule->getDestination()!=null &&in_array( $cibleFilter, $formule->getDestination());
});
}
if(!empty($formules))
{
foreach ($formules as $formule) {
if($formule->getEtat() == "1"){
$etat = '<span class="badge bg-success">Activée</span>';
}else {
$etat = '<span class="badge bg-danger">Désactivée</span>';
};
$out[] = [
'id' => $formule->getId(),
'Nom' =>$formule->getNomFormule(),
'regimeTva'=>$formule->getRegimeTva(),
'typeF' =>$formule->getType(),
'Fréquence'=>$formule->getFrequence(),
'etat'=>$etat,
'formulePropose'=>$formule->isFormuleFirstPage()?'Oui':'Non',
];
}
}
$I_nbResultatsTotal = count( $out ) ;
$JSON = json_encode($out);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/update_formule/{id}", name="update_formule", methods={"POST","GET"}, options={"expose"=true})
*/
public function update_formule(int $id, Request $request, FormulesRepository $FormulesRepository): Response
{
$data = $request->request->all();
$formulesEntity = $this->em->getRepository(Formules::class)->find($id);
if (!$formulesEntity) {
return new Response('KOO');
}
// Handle formula type and fields based on type
$typeFormule = $data['typeFormule_modif'] ?? 'payante';
$formulesEntity->setType($typeFormule);
if ($typeFormule === 'payante') {
$formulesEntity->setPrix($data['prixFormule_modif'] ?? null);
$formulesEntity->setUnite($data['uniteFormule_modif'] ?? null);
$formulesEntity->setRegimeTva($data['regimeTva_modif'] ?? null);
$formulesEntity->setPeriodicite($data['periodicite_modif'] ?? null);
} else {
// For 'gratuite' and 'permanente', set price-related fields to null
$formulesEntity->setPrix(null);
$formulesEntity->setUnite(null);
$formulesEntity->setRegimeTva(null);
$formulesEntity->setPeriodicite(null);
}
// Set common fields
$formulesEntity->setNomFormule($data['nomFormule_modif'] ?? null);
$formulesEntity->setDure($data['dure_modif'] ?? null);
$formulesEntity->setEtat($data['etat_modif'] ?? null);
$formulesEntity->setCodeFacturation($data['codeFacturation_modif'] ?? null);
// Handle visibility checkbox (checked means NOT visible)
$isVisible = !isset($data['visibilityCheckbox_modif']);
$formulesEntity->setIsVisible($isVisible);
// Handle description fields (Online & Facture)
$formulesEntity->setDescriptionOnline($data['descriptionOnline_modif'] ?? null);
$formulesEntity->setDescriptionFacture($data['descriptionFacture_modif'] ?? null);
// Handle multi-select fields (Chosen-select)
$formulesEntity->setDestination($data['destinationFormule_modif'] ?? null);
$formulesEntity->setUserLimit($data['userLimit_modif'] ?? null);
$formulesEntity->setPaysCibles($data['PaysSpecifiques_modif'] ?? null);
// Handle code postaux (cpSpecifiques)
if (isset($data['cpSpecifiques_modif']) && is_string($data['cpSpecifiques_modif'])) {
$cpArray = array_map('trim', explode(',', $data['cpSpecifiques_modif']));
$formulesEntity->setCpCibles($cpArray);
}
// Handle bonus fields
$formulesEntity->setBonnusGeo(isset($data['geoBonusCheckbox_modif']) ? ($data['bonnusGeo_modif'] ?? null) : null);
$formulesEntity->setBonnusPub(isset($data['pubBonusCheckbox_modif']) ? ($data['pubBonusInput_modif'] ?? null) : null);
$formulesEntity->setDureeBonnusPub(isset($data['pubBonusCheckbox_modif']) ? ($data['dureePubInput_modif'] ?? null) : null);
$formulesEntity->setBonnusEvent(isset($data['eventBonusCheckbox_modif']) ? ($data['eventBonusInput_modif'] ?? null) : null);
$formulesEntity->setDureeBonnusEvent(isset($data['eventBonusCheckbox_modif']) ? ($data['dureeEventInput_modif'] ?? null) : null);
// Handle 'formuleFirstPage' checkbox
$formulesEntity->setFormuleFirstPage(isset($data['formuleFirstPage_modif']));
// Set update date
$formulesEntity->setDateUpdate(new \DateTime());
try {
$this->em->persist($formulesEntity);
$this->em->flush();
return new Response('OK');
} catch (\Exception $e) {
return new Response('KO');
}
}
public function update_formule0(int $id,Request $request, FormulesRepository $FormulesRepository ): Response
{
//dd($request->request->all());
//$optionsString = $request->get('options');
//$optionsArray = json_decode($optionsString, true);
$formulesEntity = $this->em->getRepository(Formules::class)->find($id);
if (!$formulesEntity) {
return new Response( 'KOO');
}
$formulesEntity->setType($request->get('typeFormule_modif'));
if($request->get('typeFormule_modif') != "gratuite"){
//
if($request->get('nomFormule_modif'))
{ $formulesEntity->setNomFormule($request->get('nomFormule_modif'));
}
$formulesEntity->setDescription($request->get('descriptionFormule_modif'));
if($request->get('prixFormule_modif'))
{
$formulesEntity->setPrix($request->get('prixFormule_modif'));
}
if($request->get('uniteFormule_modif'))
{
$formulesEntity->setUnite($request->get('uniteFormule_modif'));
}
if($request->get('periodicite_modif'))
{
$formulesEntity->setPeriodicite($request->get('periodicite_modif'));
}
if($request->get('dure_modif'))
{
$formulesEntity->setDure($request->get('dure_modif'));
}
if($request->get('regimeTva_modif'))
{
$formulesEntity->setregimeTva($request->get('regimeTva_modif'));
}
if($request->get('frequenceFormule_modif'))
{
$formulesEntity->setFrequence($request->get('frequenceFormule_modif'));
}
if($request->get('etat_modif'))
{
$formulesEntity->setEtat($request->get('etat_modif'));
}
if($request->get('cp_cible')!=""){
$cpArr=json_decode($request->get('cp_cible'), true);
$formulesEntity->setCpCibles($cpArr);
}
if($request->get('formuleFirstPage_modif'))
{
$formulesEntity->setFormuleFirstPage(true);
}
else
{
$formulesEntity->setFormuleFirstPage(false);
}
}
else {
$dest=$request->get('destinationFormule_modif')[0];
// dd($nom);
$formulesFiltrees=[];
$formulesGratuites=$FormulesRepository->findBy(['type' => 'gratuite']);
$formulesFiltrees = array_filter($formulesGratuites, function ($formule) use ( $dest) {
return $formule->getDestination()!=null &&in_array( $dest, $formule->getDestination());
});
$nom = 'formule gratuite ' . $request->get('destinationFormule_modif')[0] . ' ' . count($formulesFiltrees);
$formulesEntity->setNomFormule($nom);
//dd($nom);
//
$formulesEntity->setDescription($request->get('descriptionFormule_modif'));
$formulesEntity->setPrix(null);
$formulesEntity->setUnite(null);
}
$formulesEntity->setDestination($request->get('destinationFormule_modif'));
$formulesEntity->setDateUpdate(new \DateTime());
$formulesEntity->setPaysCibles($request->get('PaysSpecifiques_modif'));
$formulesEntity->setBonnusGeo($request->get('bonnusGeo_modif'));
$formulesEntity->setBonnusEvent($request->get('eventBonusInput_modif'));
$formulesEntity->setBonnusPub($request->get('pubBonusInput_modif'));
$formulesEntity->setDureeBonnusEvent($request->get('dure_bonnus_event_modif'));
$formulesEntity->setDureeBonnusPub($request->get('dure_bonnus_pub_modif'));
try {
$this->em->persist($formulesEntity);
$this->em->flush();
return new Response('OK');
} catch (\Exception $e) {
return new Response('KO');
}
}
/**
* @Route("/delete_formule/{id}", name="delete_formule" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_formule( $id, Request $request): Response
{
$formulesEntity = $this->em->getRepository(Formules::class)->find($id);
if (!$formulesEntity) {
return new Response('Formule not found!', Response::HTTP_NOT_FOUND);
}
$formuleOptionsRepository = $this->em->getRepository(FormuleOptions::class);
$formuleOptions = $formuleOptionsRepository->findBy(['formule' => $formulesEntity]);
try {
foreach ($formuleOptions as $formuleOption) {
$this->em->remove($formuleOption);
}
$this->em->remove($formulesEntity);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting formule: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/supprimer_option/{id}", name="supprimer_option", methods={"DELETE"}, options = {"expose" = true})
*/
public function supprimer_option( $id): Response
{
$formuleOptionsRepository = $this->em->getRepository(FormuleOptions::class);
$formuleOptions = $formuleOptionsRepository->find($id);
if (!$formuleOptions) {
throw $this->createNotFoundException('Options non trouvée pour l\'ID ' . $id);
}
$this->em->remove($formuleOptions);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
}
/**
* @Route("/serverFormule", name="serverFormule", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverFormule(Request $request ): Response
{
//echo $this->session->getMetadataBag()->getLifetime();
// if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.formule_option LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id','u.formule_option'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_options = [];
$total_options = $this->em->createQuery(
'SELECT u
FROM App\Entity\Formule u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_options ) ;
$options = $this->em->createQuery(
'SELECT u
FROM App\Entity\Formule u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
foreach($options as $option){
$output[] = [
'id'=>$option->getId() ,
'option'=>$option->getFormuleOption() ,
'type'=>$option->getType() ,
'etat'=>$option->getEtat()->getEtat() ,
'prix'=>$option->getPrix().' '.$option->getUnite(),
'created_at' => date_format( $option->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $option->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/ajout_formule", name="ajout_formule" , options = {"expose"=true})
*/
public function ajout_formule(Request $request , EtatRepository $EtatRepository ): Response
{
$etat = $EtatRepository->find($request->get('etat_n'));
$formule = new Formule();
$formule->setFormuleOption($request->get('nom_option_n'));
$formule->setType($request->get('type_option'));
$formule->setEtat($etat);
$formule->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$formule->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$formule->setPrix($request->get('prix_n'));
$formule->setUnite($request->get('unite_n'));
$this->em->persist($formule);
$this->em->flush();
return new Response('OK');
}
/**
* @Route("/configuration_type_compte", name="configuration_type_compte", methods={"GET","POST"} , options={"expose"=true})
*/
public function configuration_type_compte(Request $request , EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository, GroupeRestrictionRepository $groupeRestrictionRepository,
GroupeRestrictionPageRepository $grouprestrictionpageRepository ): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$etats = $EtatRepository->findAll();
return $this->render('configuration/config_type_compte.html.twig',[
'admin' => $admin,
'etats'=>$etats,
'access' => $accessArray,
'pages' => $niveauAcessPages
]);
}
/**
* @Route("/ajout_type_compte", name="ajout_type_compte" , options = {"expose"=true})
*/
public function ajout_type_compte(Request $request , EtatRepository $EtatRepository ): Response
{
$etat = $EtatRepository->find($request->get('etat_n'));
$type = new TypeCompte();
$type->setTypeCompte($request->get('nom_type_n'));
$type->setEtat($etat);
$type->setDateCreation( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$type->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
$this->em->persist($type);
$this->em->flush();
return new Response('OK');
}
/**
* @Route("/modif_type/{id}", name="modif_type" , methods={"POST"}, options = {"expose"=true})
*/
public function modif_type(int $id, Request $request, EtatRepository $EtatRepository): Response
{
$etat = $EtatRepository->find($request->get('etat_n_modif'));
$type = $this->em->getRepository(TypeCompte::class)->find($id);
if (!$type) {
return new JsonResponse(['status' => 'KOO', 'message' => 'Etat not found!']);
};
$type->setTypeCompte($request->get('nom_type_n_modif'));
$type->setEtat($etat);
$type->setDateUpdate( \DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s' ) ) );
try {
$this->em->persist($type);
$this->em->flush();
return new JsonResponse(['status' => 'OK', 'message' => 'Type compte mise à jour avec succès!']);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Erreur en modification de type Compte: ' . $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/delete_type/{id}", name="delete_type" , methods={"DELETE"}, options = {"expose"=true})
*/
public function delete_type(int $id, Request $request): Response
{
$type = $this->em->getRepository(TypeCompte::class)->find($id);
if (!$type) {
return new Response('Question not found!', Response::HTTP_NOT_FOUND);
};
try {
$this->em->remove($type);
$this->em->flush();
return new JsonResponse(['status' => 'OK']);
} catch (\Exception $e) {
return new Response('Error deleting question: ' . $e->getMessage(), Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
/**
* @Route("/serverTypeCompte", name="serverTypeCompte", methods={"GET","POST"}, options = {"expose" = true})
*/
public function serverTypeCompte(Request $request ): Response
{
//echo $this->session->getMetadataBag()->getLifetime();
//if( ($this->session->get('susrD3p9LjjY86') != 'gA64ya3G5N') && ($request->hasSession()) ){
// return new Response('disconnect');
//}
$sql_where = "" ;
if($request->get('search')['value']!=""){
$sql_where .= ' AND ( u.type_compte LIKE \'%'.$request->get('search')['value'].'%\' ) ' ;
}
$user_array = [] ;
$sql_where2 = "";
$limit = $request->get('length') ;
$offset = $request->get('start') ;
$array_search = array();
$columns = ['u.id','u.type_compte'] ;
$orders = [] ;
for($i=0 ; $i<count($request->get('order')) ;$i++ ){
$orders[] = $columns[ $request->get('order')[$i]['column'] ].' '.$request->get('order')[$i]['dir'] ;
}
if( count($orders)>0){
$order = " ORDER BY ".implode(' , ',$orders) ;
}
else{
$order = "" ;
}
$total_types = [];
$total_types = $this->em->createQuery(
'SELECT u
FROM App\Entity\TypeCompte u
WHERE 1=1 '.$sql_where.'
'
)
->getResult() ;
$I_nbResultatsTotal = count( $total_types ) ;
$types = $this->em->createQuery(
'SELECT u
FROM App\Entity\TypeCompte u
WHERE 1=1 '.$sql_where.' '.$order.'
'
)
->setMaxResults($limit)
->setFirstResult($offset)
->getResult() ;
$output = [] ;
foreach($types as $type){
$output[] = [
'id'=>$type->getId() ,
'type_compte'=>$type->getTypeCompte() ,
'etat'=>$type->getEtat()->getEtat() ,
'created_at' => date_format( $type->getDateCreation() , 'd/m/Y H:i'),
'updated_at' => date_format( $type->getDateUpdate() , 'd/m/Y H:i')
];
}
$JSON = json_encode($output);
$JSON = '{"draw": '.$request->get('draw').',"recordsTotal":'.$I_nbResultatsTotal.',"recordsFiltered":'.$I_nbResultatsTotal.',"data":'.$JSON.'}';
$response = new Response($JSON, 200, ['Content-Type' => 'application/json']);
return $response;
}
/**
* @Route("/DemandeProfessionel", name="DemandeProfessionel", methods={"GET","POST"} , options={"expose"=true})
*/
public function DemandeProfessionel(Request $request , EtatRepository $EtatRepository,AdministrateursRepository $AdministrateursRepository,GroupeRestrictionRepository $groupeRestrictionRepository,GroupeRestrictionPageRepository $grouprestrictionpageRepository): Response
{
$accessArray=[];
$niveauAcessPages = [];
$groupeRestrictions = [];
if( ($this->session->get('susrD3p9LjjY86') == 'gA64ya3G5N') && ($request->hasSession()) ){
$admin = $this->session->get('supAdT9m2XJzn4');
}else if($this->session->get('supAdT9m2XJzn4') && ($request->hasSession())){
$admin = $AdministrateursRepository->findOneBy(['email'=>$this->session->get('supAdT9m2XJzn4')['email']]);
$adminId = $admin->getId();
$groupeRestrictions = $groupeRestrictionRepository->findByAdminId($adminId);
$restrictionPages = $grouprestrictionpageRepository->findByRestriction($groupeRestrictions[0]->getId());
$accessArray = $restrictionPages[0]->getAccess();
$niveauAcessPagesCollection = $restrictionPages[0]->getNiveauAcessPages();
$niveauAcessPagesCollection->initialize();
$niveauAcessPages = $niveauAcessPagesCollection->toArray();
}else {
return $this->redirectToRoute('connexion');
}
$etats = $EtatRepository->findAll();
return $this->render('configuration/config_demande_professionel.html.twig',[
'admin' => $admin,
]);
}
}