src/Controller/FrontEnd/PropertyController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller\FrontEnd;
  3. use App\classe\Mails;
  4. use App\classe\Search;
  5. use App\Entity\Admin\Property;
  6. use App\Entity\Emails;
  7. use App\Form\EmailType;
  8. use App\Form\SearchType;
  9. use App\Repository\Admin\PropertyRepository;
  10. use DateTime;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Knp\Component\Pager\PaginatorInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. class PropertyController extends AbstractController
  18. {
  19.     private EntityManagerInterface $em;
  20.     public function __construct(EntityManagerInterface $em)
  21.     {
  22.         return $this->em $em;
  23.     }
  24.     #[Route('/front/end/property'name'frontend_property')]
  25.     public function index(PropertyRepository $repositoryRequest $requestPaginatorInterface $paginator): Response
  26.     {
  27.         $search = new Search();
  28.         $form $this->createForm(SearchType::class, $search);
  29.         $form->handleRequest($request);
  30.         //Liste de tout les biens
  31.         $dataProperty $repository->findBy(array(),orderBy: ["createdAt"=>"DESC"] );
  32.         $property $paginator->paginate(
  33.             $dataProperty,
  34.             $request->query->getInt('page',1),
  35.             12
  36.         );
  37.         //liste de tout les bien à vendre uniquement
  38.         $datapropertyTosel $repository->findBy(["isToSale"=>1],orderBy: ["createdAt"=>"DESC"]);
  39.         $propertyTosel $paginator->paginate(
  40.             $datapropertyTosel,
  41.             $request->query->getInt('page'1),
  42.             12
  43.         );
  44.         //liste des biens à louer
  45.         $datapropertyTorent $repository->findBy(["isRent"=>1],orderBy: ["createdAt"=>"DESC"]);
  46.         $propertyTorent $paginator->paginate(
  47.             $datapropertyTorent,
  48.             $request->query->getInt('page'1),
  49.             12
  50.         );
  51.         if ($form->isSubmitted() && $form->isValid()){
  52.             $dataProperty =  $repository->findWidthSearch($search);
  53.             $property $paginator->paginate(
  54.                 $dataProperty,
  55.                 $request->query->getInt('page',1),
  56.                 12
  57.             );
  58.         }
  59.         return $this->render('front_end/property/index.html.twig', [
  60.             'controller_name' => 'PropertyController',
  61.             'property'=>$property,
  62.             'propertyTosel'=> $propertyTosel,
  63.             'propertyTorent'=>$propertyTorent,
  64.             'Form'=>$form->createView()
  65.         ]);
  66.     }
  67.     /**
  68.      * @param Property $property
  69.      * @param Request $request
  70.      * @param Mails $mails
  71.      * @return Response
  72.      */
  73.     #[Route('/front/end/property/{slug}'name"front_property_show")]
  74.     public  function showProperties(Property $propertyRequest $requestMails $mails): Response
  75.     {
  76.         $email = new Emails();
  77.         $form $this->createForm(EmailType::class, $email);
  78.         $form->handleRequest($request);
  79.         if ($form->isSubmitted() && $form->isValid()){
  80.           $email->setProperties($property);
  81.           $email->setCreatedAt(new DateTime('now'));
  82.           $this->em->persist($email);
  83.           $this->em->flush();
  84.             $this->addFlash('success'"Votre E-mail à été envoyer avec succès!");
  85.           //Evoie de  l'E-mail
  86.          $subject "SCI CAWALLY Une personne demande des informations sur cet bien: ".$property->getTitle();
  87.          $content =  "<p>Une personne demande des informations sur un bien sur votre site internet SCI CWALLY. Ci-dessous les détailles de la demande </p>
  88.                        <strong>Bien Concerné:</strong>".$property->getTitle().
  89.                     "<br/><br/><strong>Nom du demandeur:</strong> ".$email->getNameFirstName().
  90.                     "<br/><br/> <strong>Numéro de Téléphone: </strong>".$email->getTel();
  91.          $content .="<br/><br/> <strong>E-mail: </strong> ".$email->getMail().
  92.                      "<br/><br/><strong>Ville : <strong/> ".$property->getCity().
  93.                    " <strong> Quatier: </strong> ".$property->getQuatier()."<br/><br/>".
  94.                    "<strong> Type du bien: </strong>".$property->getPropertyTypes()->getTitle().
  95.                    "<br/><br/> <strong>Le message est: </strong> ".$email->getMessage();
  96.          $mails->sendMail($subject$content);
  97.         }
  98.         return $this->render('front_end/property/show.html.twig',[
  99.             'controller_name' => 'PropertyController',
  100.             'properties'=>$property,
  101.             'Form'=>$form->createView()
  102.         ]);
  103.     }
  104. }