<?php
namespace App\Controller;
use App\Entity\Demande;
use App\Repository\DemandeRepository;
use App\Repository\ParaRepository;
use App\Repository\UserRepository;
use App\service\JWTservice;
use App\service\sendmailservice;
use Doctrine\ORM\EntityManagerInterface;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class AccuielController extends AbstractController
{
#[Route('', name: 'app_accuiel')]
public function index(Request $request,UserRepository $userRepository,sendmailservice $email,
ParaRepository $paraRepository,JWTservice $jwt,DemandeRepository $demandeRepository): Response
{
$form = $this->createFormBuilder()
->add('napi',TextType::class,['label'=> 'N apiculteur','attr'=>['class'=>'form-control',] ])
->add('valider',SubmitType::class)
->getForm();
$form->handleRequest($request);
//dd($form);
if($form->isSubmitted() && $form->isValid()){
$user=$userRepository->napi($form->get('napi')->getData());
if ($user->getId()>=1) {
if($demandeRepository->demandecour($user)){
$this->addFlash('warning',"demande en cours");
}else{
$this->addFlash('succes',"bonjour <br>". $user->getNom() ." ".$user->getPrenom()." une email
vient de vous etre envoyer <br> cliquer sur le lien pour valider votre demande <br> attention il peut arriver dans les spam");
$header=[
'typ'=> 'JWT',
'alg'=>'HS256'
];
$tim=((3600*24)*7);
$time=time()+$tim;
$payload=[
'inter_id'=> $user->getId(),
'time'=> $time,
];
//dd($this->getParameter('jwtsecret'));
$token= $jwt->generate($header,$payload,$this->getParameter('app.jwtsecret'),$tim);
$url2 = $this->generateUrl('accueil_trouver',['token'=>$token],UrlGeneratorInterface::ABSOLUTE_URL);
$context= ["url"=>$url2,"nom"=>$user->getNom(),"prenom"=>$user->getPrenom()];
$val= $email->send(
$paraRepository->getparaIdvalue('emailrepli')->getValue(),
$user->getEmail(),
"demande d'intervention gdsa47",
'formul1',
$context
);
if($val){
$this->addFlash('success',"email envoyé avec succés");
}else{
$this->addFlash('warning',"email non envoyé");
}}
}else{
$this->addFlash('warning',"Vous n etes pas trouver dans la base de donner");
return $this->redirectToRoute('accueil_form');
}
}
return $this->render('accuiel/index.html.twig', ['form'=>$form->createView()
]);
}
#[Route('trouver/{token}', name: 'accueil_trouver')]
public function trouver(string $token,Request $request,sendmailservice $email,
ParaRepository $paraRepository,UserRepository $userRepository,JWTservice $jwt,EntityManagerInterface $em,): Response
{if($jwt->isvalid($token) && !$jwt->isexpiret($token) && $jwt->verifsigna($token,$this->getParameter('app.jwtsecret'))){
$payload= $jwt->getpayload($token);
$user=$userRepository->find($payload['inter_id']);
$form = $this->createFormBuilder()
->add('tel',TextType::class,['label'=> 'telephone',"data"=>$user->getTel(),'attr'=>['class'=>'form-control',] ])
->add('port',TextType::class,['label'=> 'portable',"data"=>$user->getPort(),'attr'=>['class'=>'form-control',] ])
->add('text',CKEditorType::class,['label'=> 'petitmot','attr'=>['class'=>'form-control',] ])
->add('valider',SubmitType::class)
->getForm();
$form->handleRequest($request);
//dd($form);
if($form->isSubmitted() && $form->isValid()){
$demande=new Demande();
$demande->setValider(false);
$demande->setUser($user->getId());
$demande->setNapi($user->getNapi());
$demande->setNom($user->getNom());
$demande->setPrenom($user->getPrenom());
if($user->getAdresse1()==null){$demande->setAdresse(" ");}else{
$demande->setAdresse($user->getAdresse1());}
if($user->getVille()==null){$demande->setVille(" ");}else{
$demande->setVille($user->getVille());}
if($user->getPoste()==null){$demande->setCode(" ");}else{
$demande->setCode($user->getPoste());}
$demande->setTel($form->get('tel')->getData());
$demande->setPort($form->get('port')->getData());
$demande->setTexte($form->get('text')->getData());
$em->persist($demande);
$em->flush();
$context= compact('demande');
if($paraRepository->getparaIdvalue('emaildemande1')->getValue()!="null"){
$val= $email->send(
$paraRepository->getparaIdvalue('emailrepli')->getValue(),
$paraRepository->getparaIdvalue('emaildemande1')->getValue(),
"nouvelle demande intervention",
'demande',
$context
);
if($val){
$this->addFlash('success',"email envoyé avec succés");
}else{
$this->addFlash('warning',"email non envoyé");
}}
if($paraRepository->getparaIdvalue('emaildemande2')->getValue()!="null"){
$val= $email->send(
$paraRepository->getparaIdvalue('emailrepli')->getValue(),
$paraRepository->getparaIdvalue('emaildemande2')->getValue(),
"nouvelle demande intervention",
'demande',
$context
);
if($val){
$this->addFlash('success',"email envoyé avec succés");
}else{
$this->addFlash('warning',"email non envoyé");
}}
}
return $this->render('accuiel/form.html.twig', ['form'=>$form->createView()
]);
}else{
$this->addFlash('warning',"une erreur authentification c'est produit");
return $this->redirectToRoute('app_accuiel');
}
}
#[Route('form', name: 'accueil_form')]
public function form(Request $request,UserRepository $userRepository,JWTservice $jwt,EntityManagerInterface $em,
ParaRepository $paraRepository,sendmailservice $email): Response
{
$form = $this->createFormBuilder()
->add('nom',TextType::class,['label'=> 'Nom','attr'=>['class'=>'form-control',] ])
->add('prenom',TextType::class,['label'=> 'Prenom','attr'=>['class'=>'form-control',] ])
->add('napi',TextType::class,['label'=> 'N apiculteur','attr'=>['class'=>'form-control',] ])
->add('tel',TextType::class,['label'=> 'telephone','attr'=>['class'=>'form-control',] ])
->add('port',TextType::class,['label'=> 'portable','attr'=>['class'=>'form-control',] ])
->add('adresse',TextType::class,['label'=> 'adresse','attr'=>['class'=>'form-control',] ])
->add('code',TextType::class,['label'=> 'code','attr'=>['class'=>'form-control',] ])
->add('ville',TextType::class,['label'=> 'ville','attr'=>['class'=>'form-control',] ])
->add('petit mot',CKEditorType::class,['label'=> 'portable','attr'=>['class'=>'form-control',] ])
->add('valider',SubmitType::class)
->getForm();
$form->handleRequest($request);
//dd($form);
if($form->isSubmitted() && $form->isValid()){
$demande=new Demande();
$demande->setUser(0);
$demande->setValider(false);
$demande->setNapi($form->get('napi')->getData());
$demande->setNom($form->get('nom')->getData());
$demande->setPrenom($form->get('prenom')->getData());
$demande->setAdresse($form->get('adresse')->getData());
$demande->setCode($form->get('code')->getData());
$demande->setVille($form->get('ville')->getData());
$demande->setTel($form->get('tel')->getData());
$demande->setPort($form->get('port')->getData());
$demande->setTexte($form->get('texte')->getData());
$em->persist($demande);
$em->flush();
$context= compact('demande');
if($paraRepository->getparaIdvalue('emaildemande1')->getValue()!="null"){
$val= $email->send(
$paraRepository->getparaIdvalue('emailrepli')->getValue(),
$paraRepository->getparaIdvalue('emaildemande1')->getValue(),
"nouvelle demande intervention",
'demande2',
$context
);
if($val){
$this->addFlash('success',"email envoyé avec succés");
}else{
$this->addFlash('warning',"email non envoyé");
}}if($paraRepository->getparaIdvalue('emaildemande2')->getValue()!="null"){
$val= $email->send(
$paraRepository->getparaIdvalue('emailrepli')->getValue(),
$paraRepository->getparaIdvalue('emaildemande2')->getValue(),
"nouvelle demande intervention",
'demande2',
$context
);
if($val){
$this->addFlash('success',"email envoyé avec succés");
}else{
$this->addFlash('warning',"email non envoyé");
}}
}
return $this->render('accuiel/formt.html.twig', ['form'=>$form->createView()
]);
}
}