<?php
namespace App\Controller\Produit\Service;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Users\User\Newsletter;
use App\Form\Users\User\NewsletterType;
use App\Service\Servicetext\GeneralServicetext;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use App\Service\Email\Singleemail;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Produit\Service\Service;
use App\Form\Produit\Service\ServiceType;
use App\Entity\Users\Adminuser\Parametre;
use App\Entity\Users\Adminuser\Parametreitem;
use App\Entity\Projet\Portfolio\Intervention;
use App\Entity\Produit\Service\Team;
class ServiceController extends AbstractController
{
private $params;
private $_servicemail;
private $_entityManager;
public function __construct(ParameterBagInterface $params, Singleemail $servicemail, EntityManagerInterface $em)
{
$this->params = $params;
$this->_servicemail = $servicemail;
$this->_entityManager = $em;
}
public function listedepartements($page=1)
{
$repository = $this->_entityManager->getRepository(Service::class);
$liste_service = $repository->findServiceTypePagine("departement", $page, 4);
foreach($liste_service as $service)
{
$service->setEm($this->_entityManager);
}
return $this->render('Theme/Produit/Service/Service/listedepartements.html.twig',
array(
"page"=>$page,
"liste_service"=>$liste_service,
'nombrepage' => ceil(count($liste_service)/4)
)
);
}
public function departement(Service $service)
{
$service->setEm($this->_entityManager);
return $this->render('Theme/Produit/Service/Service/departement.html.twig',
array(
"depart"=>$service
)
);
}
public function service(Service $service)
{
$service->setEm($this->_entityManager);
return $this->render('Theme/Produit/Service/Service/service.html.twig',
array(
"service"=>$service
)
);
}
public function accueilservice($page = 1, GeneralServicetext $service, Request $request)
{
$service = new Service();
$form = $this->createForm(ServiceType::class, $service);
if($request->getMethod() == 'POST'){
$form->handleRequest($request);
$service->setUser($this->getUser());
if($form->isValid()){
if(isset($_POST['categorie']))
{
$service->setExpertise($_POST['categorie']);
}
if(isset($_POST['parentId']))
{
$service->setParentId($_POST['parentId']);
}
if(isset($_POST['motcle']))
{
$service->setMotcle($_POST['motcle']);
}
if(isset($_POST['objectifs']))
{
$jsonString = $_POST['objectifs'];
$decodedData = json_decode($jsonString, true);
if (is_array($decodedData)) {
$service->setObjectifs($decodedData);
}
}
$this->_entityManager->persist($service);
$this->_entityManager->flush();
$this->get('session')->getFlashBag()->add('information','Enregistrement effectué avec succès');
}else{
$this->get('session')->getFlashBag()->add('information','Une ereur a été rencontrée, Choisissez un type et retransmettez le formulaire!');
}
}
$repository = $this->_entityManager->getRepository(Service::class);
$liste_service = $repository->findAllServicePagine($page, 10);
$liste_all_service = $repository->findAllDepartemantPagine(1, 100);
return $this->render('Theme/Users/Adminuser/Service/accueilservice.html.twig',
array('form'=>$form->createView(), 'liste_service'=>$liste_service, 'nombrepage' => ceil(count($liste_service)/10), 'page'=>$page, 'liste_all_service'=>$liste_all_service));
}
public function updateservice(GeneralServicetext $service, Request $request, EntityManagerInterface $em, $id)
{
if(isset($_GET['id']))
{
$id = $_GET['id'];
}else{
$id = $id;
}
$service = $em->getRepository(Service::class)
->find($id);
if($service != null)
{
$form = $this->createForm(ServiceType::class, $service);
if ($request->getMethod() == 'POST'){
$form->handleRequest($request);
if ($form->isValid()){
if(isset($_POST['categorie']))
{
$service->setExpertise($_POST['categorie']);
}
if(isset($_POST['parentId']))
{
$service->setParentId($_POST['parentId']);
}
if(isset($_POST['motcle']))
{
$service->setMotcle($_POST['motcle']);
}
if(isset($_POST['objectifs']))
{
$jsonString = $_POST['objectifs'];
$decodedData = json_decode($jsonString, true);
if (is_array($decodedData)) {
$service->setObjectifs($decodedData);
}
}
$service->setDate(new \Datetime());
$em->flush();
$this->get('session')->getFlashBag()->add('information','Modification effectuée avec succès');
}else{
$this->get('session')->getFlashBag()->add('information','Une ereur a été rencontrée!');
}
return $this->redirect($this->generateUrl('users_adminuser_accueil_services'));
}
$repository = $this->_entityManager->getRepository(Service::class);
$liste_service = $repository->findAll();
return $this->render('Theme/Users/Adminuser/Service/updateservice.html.twig',
array('form'=>$form->createView(),'service'=>$service, 'liste_service'=>$liste_service));
}else{
echo 'Echec ! Une erreur a été rencontrée.';
exit;
}
}
public function supprimerservice(Service $service)
{
$this->_entityManager->remove($service);
$this->_entityManager->flush();
$this->get('session')->getFlashBag()->add('information','Suppression effectuée avec succès');
return $this->redirect($this->generateUrl('users_adminuser_accueil_services'));
}
public function topservices($limit)
{
$liste_service = $this->_entityManager->getRepository(Service::class)
->findTopServices($limit);
return $this->render('Theme/Produit/Service/Service/topservices.html.twig',
array('liste_service'=>$liste_service));
}
public function contacts(Request $request, GeneralServicetext $servicetext)
{
$em = $this->getDoctrine()->getManager();
$projet = new Newsletter();
$formprojet = $this->createForm(NewsletterType::class, $projet);
if($request->getMethod() == 'POST'){
$formprojet->handleRequest($request);
if ($formprojet->isValid()){
$projet->setContact(true);
$projet->setServicetext($servicetext);
$em->persist($projet);
$em->flush();
$this->get('session')->getFlashBag()->add('information','Message envoyé avec succès');
$pathFile = $projet->getwebpath();
$siteweb = $this->params->get('siteweb');
$sitename = $this->params->get('sitename');
$emailadmin = $this->params->get('emailadmin');
$aboutContacts = $em->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'contacts'), array('rang'=>'asc'), 1);
$emailcustom = '';
if($aboutContacts != null)
{
$liste_contacts = $em->getRepository(Parametreitem::class)
->findBy(array('parametre'=>$aboutContacts), array('rang'=>'asc'));
foreach($liste_contacts as $contact)
{
if($contact->getTypeParam() == 'email')
{
$emailcustom = $contact->getValeur();
break;
}
}
}
if(strlen($emailcustom) > 2 and $servicetext->email($emailcustom))
{
$response = $this->_servicemail->sendNotifEmail(
'Team '.$sitename,
$emailcustom,
$projet->getSujet(),
$projet->getSujet(),
$projet->getContenu(),
$siteweb.'/'.$pathFile
);
}else if($servicetext->email($emailadmin))
{
$response = $this->_servicemail->sendNotifEmail(
'Team '.$sitename,
$emailadmin,
$projet->getSujet(),
$projet->getSujet(),
$projet->getContenu(),
$siteweb.'/'.$pathFile
);
}
return $this->redirect($this->generateUrl('produit_service_contacts'));
//
}else{
$this->get('session')->getFlashBag()->add('information','Une ereur a été rencontrée!');
}
}
return $this->render($servicetext->getThemeDirectory().'/Produit/Service/Service/contacts.html.twig',
array('formprojet'=>$formprojet->createView()));
}
public function detailservice($item)
{
return $this->render('Theme/Produit/Service/Service/detailservice.html.twig', array('item'=>$item));
}
public function aboutstruct(GeneralServicetext $service, EntityManagerInterface $em)
{
$aboutplatform = $em->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'aboutplatform'), array('rang'=>'asc'), 1);
$infoPlatformSection = $this->_entityManager->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'infoPlatformSection'), array('rang'=>'asc'), 1);
if($infoPlatformSection != null)
{
$infoPlatformSection->setEm($em);
}
return $this->render($service->getThemeDirectory().'/Produit/Service/Service/aboutstruct.html.twig',
array('aboutplatform'=>$aboutplatform, 'infoPlatformSection'=>$infoPlatformSection));
}
public function listeservice($page = 1, GeneralServicetext $service)
{
$repository = $this->_entityManager->getRepository(Service::class);
$liste_service = $repository->findServiceTypePagine("service", $page, 12);
$aboutService = $this->_entityManager->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'detailservice'), array('rang'=>'asc'), 1);
return $this->render($service->getThemeDirectory().'/Produit/Service/Service/listeservice.html.twig',
array('liste_service'=>$liste_service, 'aboutService'=>$aboutService, 'nombrepage' => ceil(count($liste_service)/12), "page"=>$page));
}
public function messagepromoteur(GeneralServicetext $service)
{
$aboutService = $this->_entityManager->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'detailservice'), array('rang'=>'asc'), 1);
return $this->render($service->getThemeDirectory().'/Produit/Service/Service/messagepromoteur.html.twig',
array('aboutService'=>$aboutService));
}
public function sitemap()
{
return $this->render('Theme/Produit/Service/Service/sitemap.html.twig');
}
public function interventions(GeneralServicetext $service, $page = 1)
{
$em = $this->getDoctrine()->getManager();
$liste_interventions = $em->getRepository(Intervention::class)
->findInterventionPagine($page, 6);
$aboutIntervention = $this->_entityManager->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'detailintervention'), array('rang'=>'asc'), 1);
$liste_intervention = $this->_entityManager->getRepository(Intervention::class)
->findTopProjet();
foreach($liste_intervention as $intervention)
{
$intervention->setEm($this->_entityManager);
}
return $this->render($service->getThemeDirectory().'/Produit/Service/Service/interventions.html.twig',
array(
'aboutIntervention'=>$aboutIntervention,
'liste_intervention'=>$liste_intervention,
'liste_interventions'=>$liste_interventions,
//'intervention'=>$intervention->getCategorie(),
//'intervention'=>$intervention,
'page'=>$page,
'nombrepage' => ceil(count($liste_interventions)/6)));
}
public function teams()
{
$liste_team = $this->_entityManager->getRepository(Team::class)
->myfindAll();
$aboutDetailteam = $this->_entityManager->getRepository(Parametre::class)
->findOneBy(array('typeParam'=>'detailteam'), array('rang'=>'asc'), 1);
return $this->render('Theme/Produit/Service/Service/teams.html.twig',
array('liste_team'=>$liste_team, 'aboutDetailteam'=>$aboutDetailteam));
}
}