src/Controller/CompanyController.php line 94

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Company;
  4. use App\Form\CompanyType;
  5. use App\Repository\CompanyRepository;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\RedirectResponse;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
  11. use Symfony\Component\Mailer\MailerInterface;
  12. use Symfony\Component\Mime\Email;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. /**
  15.  * @Route("/company")
  16.  */
  17. class CompanyController extends AbstractController
  18. {
  19.     /**
  20.      * @Route("/", name="app_company_index", methods={"GET"})
  21.      */
  22.     public function index(CompanyRepository $companyRepository): Response
  23.     {
  24.         return $this->render('company/index.html.twig', [
  25.         'companies' => $companyRepository->findBy(['status' => 1]),
  26.     ]);
  27.     }
  28.     /**
  29.      * @Route("/new", name="app_company_new", methods={"GET", "POST"})
  30.      */
  31.     public function new(Request $requestCompanyRepository $companyRepositoryMailerInterface $mailer): Response
  32.     {
  33.         $company = new Company();
  34.         $form $this->createForm(CompanyType::class, $company);
  35.         $form->handleRequest($request);
  36.         if ($form->isSubmitted() && $form->isValid()) {
  37.             $image $form->get('image')->getData();
  38.             if($image){
  39.                 $allowTypes = ['jpg''png''jpeg''gif','webp'];
  40.                 $fichier md5(uniqid()) . '.png';
  41.                 //if (in_array($image->guessExtension(), $allowTypes)) {
  42.                     
  43.                     $destination $this->getParameter('images_directory');
  44.                     $image->move(
  45.                         $destination,
  46.                         $fichier
  47.                     );                
  48.                     $company->setLogo($fichier);
  49.                 // } else {
  50.                 //     $this->addFlash('erreur', $fichier . " n'est pas une image ");
  51.                 //     return new RedirectResponse($request->headers->get('referer'));
  52.                 // }
  53.             }
  54.             
  55.             $companyRepository->add($companytrue);
  56.             $email = (new Email())
  57.             ->from('madeinusaglobal@gmail.com')
  58.             ->to('Madeinusaglobal@gmail.com')
  59.             ->subject('New company has been registered ✅')
  60.             ->text('A new company has been registered on the platform :' $company->getName())
  61.             ->html($request->query->get('email'));
  62.             try {
  63.                 $mailer->send($email);
  64.                 return $this->redirect('https://buy.stripe.com/bJecN69846lB2BReDZ5EY00');
  65.                 return $this->render('home/message.html.twig', [
  66.                     'message' => 'Company registered with success !'
  67.                 ]);
  68.             } catch (TransportExceptionInterface $e) {
  69.                 // Afficher l’erreur dans la réponse ou logger
  70.                 return new Response('❌ Erreur lors de l’envoi : ' $e->getMessage());
  71.             }
  72.            
  73.             return $this->redirectToRoute('mail_notif', [
  74.                 'Name' => $company->getName()
  75.             ], Response::HTTP_SEE_OTHER);
  76.         }
  77.         return $this->renderForm('company/new.html.twig', [
  78.             'company' => $company,
  79.             'form' => $form,
  80.         ]);
  81.     }
  82.     /**
  83.      * @Route("/{id}", name="app_company_show", methods={"GET"})
  84.      */
  85.     public function show(Company $company): Response
  86.     {
  87.         return $this->render('company/show.html.twig', [
  88.             'company' => $company,
  89.         ]);
  90.     }
  91.     /**
  92.      * @Route("/{id}/edit", name="app_company_edit", methods={"GET", "POST"})
  93.      */
  94.     public function edit(Request $requestCompany $companyCompanyRepository $companyRepository): Response
  95.     {
  96.         $form $this->createForm(CompanyType::class, $company);
  97.         $form->handleRequest($request);
  98.         if ($form->isSubmitted() && $form->isValid()) {
  99.             $companyRepository->add($companytrue);
  100.             return $this->redirectToRoute('app_company_index', [], Response::HTTP_SEE_OTHER);
  101.         }
  102.         return $this->renderForm('company/edit.html.twig', [
  103.             'company' => $company,
  104.             'form' => $form,
  105.         ]);
  106.     }
  107.     /**
  108.      * @Route("/{id}", name="app_company_delete", methods={"POST"})
  109.      */
  110.     public function delete(Request $requestCompany $companyCompanyRepository $companyRepository): Response
  111.     {
  112.         if ($this->isCsrfTokenValid('delete'.$company->getId(), $request->request->get('_token'))) {
  113.             $companyRepository->remove($companytrue);
  114.         }
  115.         return $this->redirectToRoute('app_admin_index', [], Response::HTTP_SEE_OTHER);
  116.     }
  117.     /**
  118.      * @Route("/category/{categorySlug}", name="company_by_category")
  119.      */
  120.     public function byCategory(string $categorySlugCompanyRepository $companyRepository): Response
  121.     {
  122.         // Déslugifier (ex: "electronics-and-electrical" → "Electronics & Electrical")
  123.         $categoryName str_replace(['-''_'], [' '' '], $categorySlug);
  124.         $companies $companyRepository->findBy([
  125.             'industry' => $categoryName,
  126.             'status' => 1
  127.         ]);
  128.         return $this->render('company/category.html.twig', [
  129.             'companies' => $companies,
  130.         ]);
  131.     }
  132. }