src/Controller/Dashboard/Admin/EditexperienceController.php line 145

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace App\Controller\Dashboard\Admin;
  11. use App\Entity\Country;
  12. use App\Entity\Destination;
  13. use App\Entity\Experience;
  14. use App\Entity\Hebergement;
  15. use App\Entity\Media;
  16. use App\Entity\Program;
  17. use App\Entity\Subcategory;
  18. use Doctrine\Persistence\ManagerRegistry;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\HttpFoundation\Request;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. //use App\Entity\Experience;
  23. /**
  24.  * Controller used to manage current user.
  25.  *
  26.  * @author Romain Monteil <monteil.romain@gmail.com>
  27.  */
  28. #[Route('/admin/experience')]
  29. class EditexperienceController extends AbstractController {
  30.     #[Route('/edit/exp-{id}/general-info'methods: ['GET''POST'], name'edit_general_info')]
  31.     public function editGeneralinfo(Request $request$idManagerRegistry $doctrine) {
  32.         $em $doctrine->getManager();
  33.         $experience $em->getRepository(Experience::class)->find($id);
  34.         if ($request->isMethod('post')) {
  35.             $experience $em->getRepository(Experience::class)->find($id);
  36.             $experience->setTitle($request->get('title'));
  37.             $experience->setResume($request->get('resume'));
  38.             $experience->setPublished(0);
  39.             $experience->setEnabled(1);
  40.             $experience->setCoachingtype($request->get('coachingtype'));
  41.             $experience->setSteps('1');
  42.             $destination $em->getRepository(Destination::class)->find($request->get('destination'));
  43.             if (!$destination) {
  44.                 $destination = new Destination();
  45.                 $destination->setName($request->get('destination'));
  46.                 $em->persist($destination);
  47.                 $em->flush();
  48.                 $country $em->getRepository(Country::class)->find($request->get('country'));
  49.                 $country->addDestination($destination);
  50.                 $em->persist($country);
  51.             }
  52.             $destination->addExperience($experience);
  53.             $subcategories $em->getRepository(Subcategory::class)->findBy(array('id' => $request->get('subcategories')));
  54.             foreach ($subcategories as $subcategory) {
  55.                 $experience->addSubcategory($subcategory);
  56.             }
  57.             foreach ($experience->getSubcategories() as $sub) {
  58.                 if (!in_array($sub->getId(), $request->get('subcategories'))) {
  59.                     $experience->removeSubcategory($sub);
  60.                 }
  61.             }
  62.             $em->persist($experience);
  63.             $em->flush();
  64.             $this->addFlash('success''Informations générale enregistrées avec succes, continuer a remplir les informations suivantes');
  65.             return $this->redirectToRoute('exp_overview', [
  66.                         'id' => $experience->getId(),
  67.             ]);
  68.         }
  69.         return $this->render('admin/experience/edit/editGeneralinfo.html.twig', [
  70.                     'experience' => $experience,
  71.         ]);
  72.     }
  73.     #[Route('/exp-{id}/edit-highlights'methods: ['GET''POST'], name'edit_highlights')]
  74.     public function editHighlights(Request $request$idManagerRegistry $doctrine) {
  75.         $em $doctrine->getManager();
  76.         $experience $em->getRepository(Experience::class)->find($id);
  77.         if ($request->isMethod('post')) {
  78.             $experience->setHighlights($request->get('highlights'));
  79.             $em->persist($experience);
  80.             $em->flush();
  81.             $this->addFlash('success''Les grandes lignes enregistrées avec succes, continuer a remplir les informations suivantes');
  82.             return $this->redirectToRoute('exp_overview', [
  83.                         'id' => $experience->getId(),
  84.             ]);
  85.         }
  86.         return $this->render('admin/experience/edit/editHighlights.html.twig', [
  87.                     'experience' => $experience,
  88.         ]);
  89.     }
  90.     #[Route('/exp-{id}-{p}/edit-program'methods: ['GET''POST'], name'edit_program')]
  91.     public function editProgram(Request $request$id$pManagerRegistry $doctrine) {
  92.         $em $doctrine->getManager();
  93.         $experience $em->getRepository(Experience::class)->find($id);
  94.         $program $em->getRepository(Program::class)->find($p);
  95.         if ($request->isMethod('post')) {
  96.             $program->setDay($request->get('day'));
  97.             $program->setDescription($request->get('description'));
  98.             $experience->setSteps('3');
  99.             $em->persist($program);
  100.             $em->flush();
  101.             $em->persist($experience);
  102.             $em->flush();
  103.             $this->addFlash('success''Programme enregistrées avec succes, continuer a remplir les informations suivantes');
  104.             return $this->redirectToRoute('exp_overview', [
  105.                         'id' => $experience->getId(),
  106.             ]);
  107.         }
  108.         return $this->render('admin/experience/edit/editProgram.html.twig', [
  109.                     'experience' => $experience,
  110.                     'program' => $program,
  111.         ]);
  112.     }
  113.     #[Route('/exp-{id}-{p}/remove-program'methods: ['GET''POST'], name'remove_program')]
  114.     public function removeProgram(Request $request$id$pManagerRegistry $doctrine) {
  115.         $em $doctrine->getManager();
  116.         $experience $em->getRepository(Experience::class)->find($id);
  117.         $program $em->getRepository(Program::class)->find($p);
  118.         $experience->removeProgram($program);
  119.         $em->persist($experience);
  120.         $em->flush();
  121.         $this->addFlash('danger''Programme suprimé avec succes, continuer a remplir les informations suivantes');
  122.         return $this->redirectToRoute('exp_overview', [
  123.                     'id' => $experience->getId(),
  124.         ]);
  125.     }
  126.     #[Route('/exp-{id}-{p}/remove-hebergement'methods: ['GET''POST'], name'remove_hebergement')]
  127.     public function removeHebregement(Request $request$id$hManagerRegistry $doctrine) {
  128.         $em $doctrine->getManager();
  129.         $experience $em->getRepository(Experience::class)->find($id);
  130.         $hebergement $em->getRepository(Hebergement::class)->find($h);
  131.         $experience->removeHebergement($hebergement);
  132.         $em->persist($hebergement);
  133.         $em->flush();
  134.         $this->addFlash('danger''Hebergement suprimé avec succes, continuer a remplir les informations suivantes');
  135.         return $this->redirectToRoute('exp_overview', [
  136.                     'id' => $experience->getId(),
  137.         ]);
  138.     }
  139.     #[Route('/exp-{id}/edit-description'methods: ['GET''POST'], name'edit_description')]
  140.     public function editDescription(Request $request$idManagerRegistry $doctrine) {
  141.         $em $doctrine->getManager();
  142.         $experience $em->getRepository(Experience::class)->find($id);
  143.         if ($request->isMethod('post')) {
  144.             $experience->setDescription($request->get('description'));
  145.             $experience->setIncluded($request->get('included'));
  146.             $experience->setNotincluded($request->get('notincluded'));
  147.             $experience->setSteps('2');
  148.             $em->persist($experience);
  149.             $em->flush();
  150.             $this->addFlash('success''Description enregistrées avec succes, continuer a remplir les informations restantes');
  151.             return $this->redirectToRoute('exp_overview', [
  152.                         'id' => $experience->getId(),
  153.             ]);
  154.         }
  155.         return $this->render('admin/experience/edit/editDescription.html.twig', [
  156.                     'experience' => $experience,
  157.         ]);
  158.     }
  159.     #[Route('/exp-{id}/h-{heber}/edit-hebergement'methods: ['GET''POST'], name'edit_hebergement')]
  160.     public function editHebergement(Request $request$id$heberManagerRegistry $doctrine) {
  161.         $em $doctrine->getManager();
  162.         $experience $em->getRepository(Experience::class)->find($id);
  163.         $hebergement $em->getRepository(Hebergement::class)->find($heber);
  164.         if ($request->isMethod('post')) {
  165.             $hebergement->setDescription($request->get('description'));
  166.             $hebergement->setName($request->get('name'));
  167.             $hebergement->setPrice($request->get('price'));
  168.             $em->persist($hebergement);
  169.             $em->flush();
  170.             if ($request->files->get('image')) {
  171.                 $file $request->files->get('image');
  172.                 $hebergement->setImage("uploads/medias/experiences/" $hebergement->getId() . "/" $file->getClientOriginalName());
  173.                 $file->move("uploads/medias/experiences/" $hebergement->getId() . "/"$file->getClientOriginalName());
  174.             }
  175.             if ($request->files->get('medias')) {
  176.                 $i 0;
  177.                 foreach ($request->files->get('medias') as $file) {
  178.                     $media = new Media();
  179.                     $media->setPath("uploads/medias/experiences/rooms" $experience->getId() . "/" $file->getClientOriginalName());
  180.                     $media->setOrdre('1');
  181.                     $media->setEnabled('1');
  182.                     $file->move("uploads/medias/experiences/rooms" $experience->getId() . "/"$file->getClientOriginalName());
  183.                     $em->persist($media);
  184.                     $hebergement->addMedia($media);
  185.                     $i++;
  186.                 }
  187.                 $experience->setSteps('4');
  188.                 $em->persist($experience);
  189.                 $em->flush();
  190.             }
  191.             $this->addFlash('success'"Informations d'hebergement enregistrées avec succes, continuer a remplir les informations restantes");
  192.             return $this->redirectToRoute('exp_overview', [
  193.                         'id' => $experience->getId(),
  194.             ]);
  195.         }
  196.         return $this->render('admin/experience/edit/editHebergement.html.twig', [
  197.                     'experience' => $experience,
  198.                     'hebergement' => $hebergement,
  199.         ]);
  200.     }
  201.     #[Route('/exp-{id}/edit-media'methods: ['GET''POST'], name'edit_media')]
  202.     public function editMedia(Request $request$idManagerRegistry $doctrine) {
  203.         $em $doctrine->getManager();
  204.         $experience $em->getRepository(Experience::class)->find($id);
  205.         if ($request->isMethod('post')) {
  206.             if ($request->files->get('image')) {
  207.                 $file $request->files->get('image');
  208.                 $experience->setImage("uploads/medias/experiences/" $experience->getId() . "/" $file->getClientOriginalName());
  209.                 $file->move("uploads/medias/experiences/" $experience->getId() . "/"$file->getClientOriginalName());
  210.             }
  211.             if ($request->files->get('medias')) {
  212.                 $i 0;
  213.                 foreach ($request->files->get('medias') as $file) {
  214.                     $media = new Media();
  215.                     $media->setPath("uploads/medias/experiences/" $experience->getId() . "/" $file->getClientOriginalName());
  216.                     $media->setOrdre('1');
  217.                     $media->setEnabled('1');
  218.                     $file->move("uploads/medias/experiences/" $experience->getId() . "/"$file->getClientOriginalName());
  219.                     $em->persist($media);
  220.                     $experience->addMedia($media);
  221.                     $i++;
  222.                 }
  223.                 $experience->setSteps('5');
  224.                 $em->persist($experience);
  225.                 $em->flush();
  226.             }
  227.             $this->addFlash('success''Média enregistrées avec succes, continuer a remplir les informations restantes');
  228.             return $this->redirectToRoute('exp_overview', [
  229.                         'id' => $experience->getId(),
  230.             ]);
  231.         }
  232.         return $this->render('admin/experience/add/addMedia.html.twig', [
  233.                     'experience' => $experience,
  234.         ]);
  235.     }
  236.     #[Route('/exp-{id}/edit-price'methods: ['GET''POST'], name'edit_price')]
  237.     public function editPrice(Request $request$idManagerRegistry $doctrine) {
  238.         $em $doctrine->getManager();
  239.         $experience $em->getRepository(Experience::class)->find($id);
  240.         if ($request->isMethod('post')) {
  241.             if ($request->get('onpromo') == "on") {
  242.                 $experience->setOnpromo(1);
  243.                 $promotion $experience->getPromotion();
  244.                 $promotion->setPercent($request->get('percent'));
  245.                 $promotion->setDateend(new \DateTime($request->get('dateend')));
  246.                 $promotion->setDatestart(new \DateTime($request->get('datestart')));
  247.                 $em->persist($promotion);
  248.             }
  249.             if ($request->get('hashebergement') == "on") {
  250.                 $experience->setHashebergement(1);
  251.                 $i 0;
  252.                 foreach ($request->get('idhebergements') as $c) {
  253.                     $hebergement $em->getRepository(Hebergement::class)->find($request->get('idhebergements')[$i]);
  254.                     $hebergement->setPrice($request->get('pricehebergements')[$i]);
  255.                     $em->persist($hebergement);
  256.                     $em->flush();
  257.                     $i++;
  258.                 }
  259.             }
  260.             $experience->setCancellation($request->get('cancellation'));
  261.             $experience->setCurrency($request->get('currency'));
  262.             $experience->setPrice($request->get('price'));
  263.             $experience->setSteps('6');
  264.             $em->persist($experience);
  265.             $em->flush();
  266.             $this->addFlash('success''Tarification enregistrées avec succes, continuer a remplir les informations restantes');
  267.             return $this->redirectToRoute('exp_overview', [
  268.                         'id' => $experience->getId(),
  269.             ]);
  270.         }
  271.         return $this->render('admin/experience/edit/editPrice.html.twig', [
  272.                     'experience' => $experience,
  273.         ]);
  274.     }
  275.     #[Route('/exp-{id}/edit-availability'methods: ['GET''POST'], name'edit_availability')]
  276.     public function editAvailability(Request $request$idManagerRegistry $doctrine) {
  277.         $em $doctrine->getManager();
  278.         $experience $em->getRepository(Experience::class)->find($id);
  279.         if ($request->isMethod('post')) {
  280.             $availability $experience->getAvailability();
  281.             $availability->setDuration($request->get('duration'));
  282.             $availability->setAvailabilitytype($request->get('availabilitytype'));
  283. //            avalabilty = 1  - unavalibility = 2
  284.             $availability->setDaysbefore($request->get('daysbefore'));
  285.             $availability->setDatesstart($request->get('availabilities'));
  286.             $availability->setUnavailabilities($request->get('unavailabilities'));
  287.             $em->persist($availability);
  288.             $em->flush();
  289.             $this->addFlash('success''Disponibilité enregistrées avec succes, continuer a remplir les informations restantes');
  290.             return $this->redirectToRoute('exp_overview', [
  291.                         'id' => $experience->getId(),
  292.             ]);
  293.         }
  294.         return $this->render('admin/experience/edit/editAvailability.html.twig', [
  295.                     'experience' => $experience,
  296.         ]);
  297.     }
  298. }