src/Controller/AddresseController.php line 72

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Classes\oAddress;
  4. use App\Entity\Addresse;
  5. use App\Entity\AddressesList;
  6. use App\Form\AddresseType;
  7. use App\Repository\AddresseRepository;
  8. use App\Repository\AddressesListRepository;
  9. use App\Repository\CityRepository;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use App\Service\GeoLocService;
  15. /**
  16.  * @Route("/addresse")
  17.  */
  18. class AddresseController extends AbstractController
  19. {
  20.     /**
  21.      * @Route("/", name="app_addresse_index", methods={"GET"})
  22.      */
  23.     public function index(AddresseRepository $addresseRepository): Response
  24.     {
  25.         return $this->render('addresse/index.html.twig', [
  26.             'addresses' => $addresseRepository->findAll(),
  27.         ]);
  28.     }
  29.     /**
  30.      * @Route("/new/{addressesList}", name="app_addresse_new", methods={"GET", "POST"})
  31.      */
  32.     public function new(Request $requestAddresseRepository $addresseRepository AddressesList $addressesListAddressesListRepository $addressesListRepository): Response
  33.     {
  34.         $addresse = new Addresse();
  35.         $form $this->createForm(AddresseType::class, $addresse);
  36.         $form->handleRequest($request);
  37.         if ($form->isSubmitted() && $form->isValid()) {
  38.             $addresse->setAddressesGroup($addressesList);
  39.             $addresse->setStatus(Addresse::STATUT_NON_GEOCODED);
  40.             $addresseRepository->add($addresse);
  41.             $addressesListRepository->updateAddressesListStatus($addressesList);
  42.             return $this->redirectToRoute('app_addresses_list_show', ['id'=>$addressesList->getId()], Response::HTTP_SEE_OTHER);
  43.         }
  44.         return $this->renderForm('addresse/new.html.twig', [
  45.             'addresse' => $addresse,
  46.             'form' => $form,
  47.         ]);
  48.     }
  49.     /**
  50.      * @Route("/{id}", name="app_addresse_show", methods={"GET"})
  51.      */
  52.     public function show(Addresse $addresse): Response
  53.     {
  54.         return $this->render('addresse/show.html.twig', [
  55.             'addresse' => $addresse,
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/{id}/{addressesList}/edit", name="app_addresse_edit", methods={"GET", "POST"})
  60.      */
  61.     public function edit(Request $requestAddresse $addresseAddresseRepository $addresseRepository ,AddressesList $addressesListAddressesListRepository $addressesListRepository): Response
  62.     {
  63.         $form $this->createForm(AddresseType::class, $addresse);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             $addresse->setStatus(Addresse::STATUT_NON_GEOCODED);
  67.             $addresseRepository->add($addresse);
  68.             $addressesListRepository->updateAddressesListStatus($addresse->getAddressesGroup());
  69.             return $this->redirectToRoute('app_addresses_list_show', ['id'=>$addressesList->getId()], Response::HTTP_SEE_OTHER);
  70.         }
  71.         return $this->renderForm('addresse/edit.html.twig', [
  72.             'addresse' => $addresse,
  73.             'form' => $form,
  74.         ]);
  75.     }
  76.     /**
  77.      * @Route("/delete/{id}/{addressesList}", name="app_addresse_delete", methods={"POST"})
  78.      */
  79.     public function delete(Request $requestAddresse $addresseAddresseRepository $addresseRepositoryAddressesList $addressesListAddressesListRepository $addressesListRepository): Response
  80.     {
  81.         if ($this->isCsrfTokenValid('delete'.$addresse->getId(), $request->request->get('_token'))) {
  82.             $addresseRepository->remove($addresse);
  83.             $addressesListRepository->updateAddressesListStatus($addresse->getAddressesGroup());
  84.         }
  85.         return $this->redirectToRoute('app_addresses_list_show', ['id'=>$addressesList->getID()],  Response::HTTP_SEE_OTHER);
  86.     }
  87.     /**
  88.      * @Route("/{id}/geocode", name="app_addresse_geocode", methods={"GET", "POST"})
  89.      */
  90.     public function geocode(Request $request,Addresse $addresseAddresseRepository $addresseRepositoryAddressesListRepository $addressesListRepositoryCityRepository $cityRepository): Response
  91.     {
  92.         $oAddresse = new oAddress();
  93.         $oAddresse->setAddress($addresse->getAddress());
  94.         $oAddresse->setCity($addresse->getCity());
  95.         $oAddresse->setPostcode($addresse->getZipcode());
  96.         $possibilites GeoLocService::geolocAddress($oAddresse$cityRepository);
  97.         if ($this->isCsrfTokenValid('geocode'.$addresse->getId(), $request->request->get('_token'))) {
  98.             $geocodingChoice =  $request->request->get('geocodingChoice');
  99.             $tmp explode("||"$geocodingChoice);
  100.             $lat $tmp[0];
  101.             $lon $tmp[1];
  102.             $addresse->setLat($lat);
  103.             $addresse->setLon($lon);
  104.             $addresse->setStatus(Addresse::STATUT_GEOCODED);
  105.             $addressesListRepo $this->getDoctrine()->getRepository(Addresse::class);
  106.             $addressesListRepo->add($addresse);
  107.             $addressesListRepository->updateAddressesListStatus($addresse->getAddressesGroup());
  108.             return $this->redirectToRoute('app_addresses_list_show', ['id'=>$addresse->getAddressesGroup()->getId()],  Response::HTTP_SEE_OTHER);
  109.         }
  110.         return $this->render('addresse/geocode.html.twig', [
  111.             'addresse' => $addresse,
  112.             'possibilites' => $possibilites
  113.         ]);
  114.     }
  115. }