<?php
namespace ClientBundle\Controller;
use ClientBundle\Form\DevisType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use ClientBundle\Entity\Devis;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use libphonenumber\PhoneNumberFormat;
use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
use Symfony\Component\Validator\Constraints\NotBlank;
class DevisController extends Controller
{
/**
* @Route("/", name="generate_devis")
*/
public function accueilAction(Request $request)
{
// create a task and give it some dummy data for this example
$devis = new Devis();
$devis->setLastUpdate(new \DateTime('now'));
$devis->setStatus(0);
$devis->setRecall(0);
$devis->setMsgStatus("La génération du devis entre en file d'attente");
$devis->setPourcentageStatus(0);
$em = $this->getDoctrine()->getManager();
$form = $this->createForm(DevisType::class, $devis, array(
'entity_manager' => $em,
'user' => $this->get('security.authorization_checker')
));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$devis = $form->getData();
if ( $this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
$devis->setUser($this->getUser());
} else {
$devis->setSendSms(1);
}
$city = $em->getRepository("APIBundle:City")->findBy(array("id" => $devis->getCity()));
$devis->setCity($city[0]);
$token = $this->giveMeToken("CustomID");
$devis->setCustomID($token);
$devis->setPrivateID($this->giveMeToken("PrivateID"));
$em->persist($devis);
$em->flush();
//return $this->redirectToRoute('show_devis', array('id' => $token));
return $this->redirect($this->generateUrl('show_devis',array('t'=> $token)));
//$this->get('session')->getFlashBag()->set('success', "Votre devis vous sera bientôt envoyé par mail ! <br /> et d'ici quelques minutes à ce <a href='$url'>lien</a>");
}
return $this->render('ClientBundle::accueil.html.twig', array(
'form' => $form->createView(),
));
}
/**
* @Route("/show", name="show_devis")
*/
public function showAction(Request $request)
{
$id = $request->query->get('t');
$notdisplay = $request->query->get('notdisplay');
$em = $this->getDoctrine()->getManager();
$devis = $em->getRepository("ClientBundle:Devis")->findOneBy(array("CustomID" => $id));
return $this->render('ClientBundle::show.html.twig', array(
'devis' => $devis,
));
}
/**
* @Route("/admin/generate_devis", name="generate_devis_admin")
*/
public function generateAction(Request $request)
{
return $this->render('ClientBundle::devis.html.twig');
}
private function giveMeToken($column){
$em = $this->getDoctrine()->getManager();
$random = str_shuffle(md5(rand(0,100000)));
$check = $em->getRepository("ClientBundle:Devis")->findOneBy(array($column => $random));
if (!$check) {
return $random;
} else {
$this->giveMeToken();
}
}
/**
* @Route("/devis/{CustomID}/{PrivateID}", name="edit_devis")
*/
public function editAction(Request $request, $CustomID, $PrivateID)
{
$em = $this->getDoctrine()->getManager();
$devis = $em->getRepository('ClientBundle:Devis')->findOneBy(array('CustomID' => $CustomID, 'PrivateID' => $PrivateID));
$session = new Session();
$session->start();
$session->set('firstname', $devis->getFirstname());
if (!$devis) {
return new Response("Le lien est erroné, contacter un administrateur ");
}
if(empty($devis->getMail())){
$clean = true;
} else {
$clean = false;
}
$editForm = $this->createFormBuilder($devis)
->add('LastName', TextType::class, array("label" => "Nom", "constraints" => array( new NotBlank())))
->add('FirstName', TextType::class, array("label" => "Prénom", "constraints" => array( new NotBlank())))
->add('Mail', EmailType::class, array("label" => "Adresse mail", "error_bubbling" => false))
->add('Phone', PhoneNumberType::class, array("label" => "Votre numéro de mobile", "constraints" => array( new NotBlank()), 'format' => PhoneNumberFormat::INTERNATIONAL))
->getForm();
$editForm->handleRequest($request);
if ($editForm->isSubmitted() && $editForm->isValid()) {
$em = $this->getDoctrine()->getManager();
$body = str_replace($session->get('firstname'), "Anonyme", $devis->getMailContent());
$devis->setMailContent($body);
$session->clear();
$em->persist($devis);
$em->flush();
$this->get('session')->getFlashBag()->add('success', "Mise à jour réussi !");
//return $this->redirectToRoute('mail', array('id' => $devis->getId()));
}
return $this->render('ClientBundle::consult.html.twig', array(
'devis' => $devis,
'clean' => $clean,
'form' => $editForm->createView(),
));
}
}