src/Controller/Api/Prive/ApiRdvController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api\Prive;
  3. use App\Entity\Campagne;
  4. use App\Entity\Commercial;
  5. use App\Entity\Contact;
  6. use App\Entity\Prospect;
  7. use App\Entity\Rdv;
  8. use App\Entity\Rdvstatut;
  9. use App\Entity\Utilisateur;
  10. use App\Helpers\Mailing;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. /**
  15.  * @Route("/rdv")
  16.  */
  17. class ApiRdvController extends ApiController
  18. {
  19.     /**
  20.      * @Route("/", name="api_Rdv_save", methods={"POST"})
  21.      * @param Request $request
  22.      * @return JsonResponse
  23.      */
  24.     public function save(Request $request)
  25.     {
  26.         $data json_decode($request->getContent(), true);
  27.         if (!isset($data['id'])) {
  28.             return $this->apiKo("Rdv non trouvĂ© !!");
  29.         }
  30.         /** @var Rdv $rdv */
  31.         $rdv $this->em->getRepository(Rdv::class)->find($data['id']);
  32.         if (!$rdv) {
  33.             return $this->apiKo("Rdv non trouvĂ© !!");
  34.         }
  35.         if (isset($data['daterdv'])) {
  36.             $rdv->setDaterdv(new \DateTime($data['daterdv']));
  37.         }
  38.         if (isset($data['contact']) && isset($data['contact']['id'])) {
  39.             /** @var Contact $contact */
  40.             $contact $this->em->getRepository(Contact::class)->find($data['contact']['id']);
  41.             if($contact){
  42.                 $rdv->setContact($contact);
  43.             }
  44.         }
  45.         if (isset($data['commercial']) && isset($data['commercial']['id'])) {
  46.             /** @var Commercial $commercial */
  47.             $commercial $this->em->getRepository(Commercial::class)->find($data['commercial']['id']);
  48.             if($commercial){
  49.                 $rdv->setCommercial($commercial);
  50.             }
  51.         }
  52.         $rdv->setDatemodification(new \DateTime());
  53.         if (isset($data['rdvstatut']) && isset($data['rdvstatut']['id'])) {
  54.             /** @var Rdvstatut $rdvstatut */
  55.             $rdvstatut $this->em->getRepository(Rdvstatut::class)->find($data['rdvstatut']['id']);
  56.             if($rdvstatut){
  57.                 $rdv->setRdvstatut($rdvstatut);
  58.                 // Notification
  59.                 (new Mailing($this->mailer$this->templating))->notificationstatutrdv($rdv);
  60.             }
  61.         }
  62.         try {
  63.             return $this->saveElement($rdv);
  64.         } catch (\Exception $e) {
  65.             return $this->apiKo($e->getMessage());
  66.         }
  67.     }
  68.     /**
  69.      * @Route("/find", name="api_Rdv_find", methods={"POST"})
  70.      * @param Request $request
  71.      * @return JsonResponse
  72.      */
  73.     public function find(Request $request)
  74.     {
  75.         $data json_decode($request->getContent(), true);
  76.         $sql "
  77.             SELECT rdv 
  78.             FROM " Rdv::class . " rdv
  79.             LEFT JOIN ".Prospect::class." prospect WITH rdv.prospect=prospect.id
  80.             LEFT JOIN ".Campagne::class." campagne WITH rdv.campagne=campagne.id
  81.             LEFT JOIN ".Rdvstatut::class." rdvstatut WITH rdv.rdvstatut=rdvstatut.id
  82.         ";
  83.         if (isset($data['filter']['params']['espaceagent']) && $data['filter']['params']['espaceagent']) {
  84.             $sql $sql." LEFT JOIN ".Utilisateur::class." as utilisateur WITH rdv.utilisateur = utilisateur.id";
  85.             $data['filter']['and']['rdv.utilisateur'] = ' = '.$this->getUtilisateurConnecte()->getId();
  86.         }
  87.         return $this->findElementsWithJoin($sql$data);
  88.     }
  89. }