src/Controller/DevisController.php line 166
<?phpnamespace App\Controller;use App\Form\DevisType;use App\Services\DbPage;use Symfony\Component\Mime\Email;use Doctrine\ORM\EntityManagerInterface;use App\Controller\ConfigurateurController;use App\Services\MailerHandler;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\Mailer\MailerInterface;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\HttpFoundation\JsonResponse;use Symfony\Component\Routing\Generator\UrlGeneratorInterface;class DevisController extends ConfigurateurController{#[Route(path: ['fr' => '/{_locale}/devis', 'en' => '/{_locale}/devis'],name: 'devis',methods: ['POST'],requirements: ['_locale' => 'en|fr',],priority: 2)]public function devis(Request $request, EntityManagerInterface $entityManager): Response{if ($this->isAjaxCall($request)) {$content = $this->getJsonContent($request);$session = $request->getSession();$sessionDevis = $session->get('devis');$devis = $content;if (!$sessionDevis) {$sessionDevis = [];$bytesReference = openssl_random_pseudo_bytes(16);$reference = md5(bin2hex($bytesReference));} else {$reference = $sessionDevis[0]['ref'];}$idDevis = null;$devisWithFile = null;$sessionDevisId = null;if (count($sessionDevis) < 1) {$idDevis = 1;} else {$idsDevis = array_column($sessionDevis, 'id_devis');rsort($idsDevis);$idDevis = $idsDevis[0] + 1;foreach ($sessionDevis as $key => $value) {if ($value['id_devis'] == $idsDevis[0]) {if (array_key_exists('files', $value) && !array_key_exists('description', $value)) {$devisWithFile = $sessionDevis[$key];$sessionDevisId = $key;break;}}}}if ($devisWithFile) {$devis['id_devis'] = $devisWithFile['id_devis'];$devis['ref'] = $devisWithFile['ref'];$devis['files'] = $devisWithFile['files'];$sessionDevis[$sessionDevisId] = $devis;} else {$devis['id_devis'] = $idDevis;$devis['ref'] = $reference;$sessionDevis[] = $devis;}$session->set('devis', $sessionDevis);return new JsonResponse($sessionDevis);}}#[Route(path: ['fr' => '/{_locale}/devis/remove', 'en' => '/{_locale}/devis/remove'],name: 'devis_remove',methods: ['POST'],requirements: ['_locale' => 'en|fr',],priority: 2)]public function devis_remove(Request $request, EntityManagerInterface $entityManager): Response{if ($this->isAjaxCall($request)) {$content = $this->getJsonContent($request);$session = $request->getSession();$sessionDevis = $session->get('devis');foreach ($sessionDevis as $key => $value) {if ($value['id_devis'] == $content['id']) {if (array_key_exists('files', $value)) {foreach ($value['files'] as $file) {$filePath = $this->getParameter('kernel.project_dir');$chemin = $filePath . '/public/upload/' . $file['filename'];if (file_exists($chemin)) {unlink($chemin);}}}unset($sessionDevis[$key]);break;}}$session->set('devis', $sessionDevis);return new JsonResponse($sessionDevis);}}#[Route(path: ['fr' => '/{_locale}/devis/update', 'en' => '/{_locale}/devis/update'],name: 'devis_update',methods: ['POST'],requirements: ['_locale' => 'en|fr',],priority: 2)]public function devis_update(Request $request, EntityManagerInterface $entityManager): Response{if ($this->isAjaxCall($request)) {$content = $this->getJsonContent($request);$session = $request->getSession();$sessionDevis = $session->get('devis');foreach ($sessionDevis as $key => $value) {if ($value['id_devis'] == $content['id']) {$sessionDevis[$key]['qty'] = $content['qty'];break;}}$session->set('devis', $sessionDevis);return new JsonResponse($sessionDevis);}}#[Route(path: ['fr' => '/{_locale}/devis/form', 'en' => '/{_locale}/quotation/form'],name: 'devis_form',methods: ['GET', 'POST'],requirements: ['_locale' => 'en|fr',],priority: 2)]public function devis_form(Request $request, MailerHandler $mailer, UrlGeneratorInterface $router): Response{$form = $this->createForm(DevisType::class);$form->handleRequest($request);$data = [];$data['error']['societe'] = false;$data['error']['email'] = false;$data['error']['nom'] = false;$data['error']['langue'] = false;$error = false;$session = $request->getSession();$sessionDevis = $session->get('devis');if ($form->isSubmitted() && $form->isValid()) {$values = $form->getData();if (trim($values['societe']) == '') {$error = true;$data['error']['societe'] = true;}if (trim($values['email']) == '') {$error = true;$data['error']['email'] = true;}if (trim($values['nom']) == '') {$error = true;$data['error']['nom'] = true;}if (trim($values['langue']) == '') {$error = true;$data['error']['langue'] = true;}if (!$error) {$data['success'] = true;// $mailer->send(['mb@adevo.be'], 'marinebeltus@gmail.com', 'exemple devis', 'devis/mails/new_quotation_client.html.twig', [// 'logo' => 'logo',// 'customer_name' => 'Beltus Marine',// 'id_quot' => '21',// 'shop_name' => "Sensy",// 'customerquotations_URL' => 'url'// ]);// $mailer->send(['mb@adevo.be'], 'marinebeltus@gmail.com', 'exemple devis', 'devis/mails/new_quotation.html.twig', [// 'logo' => 'logo',// 'customer_details' => 'Beltus Marine',// 'quotation_ID' => '21',// 'shop_name' => "Sensy"// ]);} else {$data['success'] = false;}$session->set('devis', []);}if ($request->getLocale() == 'fr') {$link = '/en/quotation/form';$breadcrumb = array(['name' => 'Devis', 'link_rewrite' => '/fr/devis/form']);} else {$link = '/fr/devis/form';$breadcrumb = array(['name' => 'Quotation', 'link_rewrite' => '/en/quotation/form']);}return $this->render('devis/devis.form.html.twig', ['products' => $sessionDevis, 'link' => $link, 'data' => $data, 'formData' => $form->createView(), 'breadcrumb' => $breadcrumb]);}#[Route(path: ['fr' => '/{_locale}/devis/remove-file', 'en' => '/{_locale}/devis/remove-file'],name: 'devis_remove_file',methods: ['POST'],requirements: ['_locale' => 'en|fr',],priority: 2)]public function devis_removeFile(Request $request, EntityManagerInterface $entityManager): Response{if ($this->isAjaxCall($request)) {$content = $this->getJsonContent($request);$idFile = $content['idFile'];$idDevis = $content['idDevis'];$session = $request->getSession();$sessionDevis = $session->get('devis');foreach ($sessionDevis as $key => $value) {if ($value['id_devis'] == $idDevis) {foreach ($value['files'] as $keyFile => $file) {if ($file['id'] == $idFile) {$filePath = $this->getParameter('kernel.project_dir');$chemin = $filePath . '/public/upload/' . $file['filename'];if (file_exists($chemin)) {unlink($chemin);}unset($value['files'][$keyFile]);$reasort = array_values($value['files']);$value['files'] = $reasort;$sessionDevis[$key] = $value;break;}}}}$session->set('devis', $sessionDevis);return new JsonResponse($sessionDevis);}}}