src/Controller/Api/Prive/ApiCampagneController.php line 278

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api\Prive;
  3. use App\Entity\Campagne;
  4. use App\Entity\Campagnecollaborateur;
  5. use App\Entity\Campagneprospect;
  6. use App\Entity\Client;
  7. use App\Entity\Utilisateur;
  8. use App\Repository\CampagneprospectRepository;
  9. use Doctrine\ORM\Query\ResultSetMapping;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. /**
  14.  * @Route("/campagne")
  15.  */
  16. class ApiCampagneController extends ApiController
  17. {
  18.     /**
  19.      * @Route("/{id}", name="api_Campagne_getById", methods={"GET"})
  20.      * @param int $id
  21.      * @return JsonResponse
  22.      */
  23.     public function getById(int $id)
  24.     {
  25.         if ($id 0) {
  26.             $campagne $this->em->getRepository(Campagne::class)->find($id);
  27.             if ($campagne) {
  28.                 return $this->apiOk($campagne);
  29.             }
  30.         }
  31.         return $this->apiKo("Campagne non trouvée !!");
  32.     }
  33.     /**
  34.      * @Route("/{id}", name="api_Campagne_delete", methods={"DELETE"})
  35.      * @param int $id
  36.      * @return JsonResponse
  37.      */
  38.     public function delete(int $id)
  39.     {
  40.         if ($id 0) {
  41.             try {
  42.                 $campagne $this->em->getRepository(Campagne::class)->find($id);
  43.                 if (!$campagne) {
  44.                     return $this->apiKo("Campagne non trouvée !!");
  45.                 }
  46.                 // VERIFIER SI la campagne est déja mise en prod !
  47.                 /** @var CampagneprospectRepository $repoCampagneprospect */
  48.                 $repoCampagneprospect $this->em->getRepository(Campagneprospect::class);
  49.                 $estEnProduction $repoCampagneprospect->estEnProduction($campagne);
  50.                 if ($estEnProduction) {
  51.                     // Suppression Logique
  52.                     $campagne->setActive(2);
  53.                     $this->em->persist($campagne);
  54.                     $this->em->flush();
  55.                     return $this->apiOk($id);
  56.                 } else {
  57.                     // Suppression Physique
  58.                     try {
  59.                         return $this->removeElement($campagne);
  60.                     } catch (\Exception $e) {
  61.                         return $this->apiKo($e->getMessage());
  62.                     }
  63.                 }
  64.             } catch (\Exception $e) {
  65.                 return $this->apiKo($e->getMessage());
  66.             }
  67.         }
  68.         return $this->apiKo("Campagne non trouvée !!");
  69.     }
  70.     /**
  71.      * @Route("/", name="api_Campagne_save", methods={"POST"})
  72.      * @param Request $request
  73.      * @return JsonResponse
  74.      */
  75.     public function save(Request $request)
  76.     {
  77.         $data json_decode($request->getContent(), true);
  78.         $campagne = new Campagne();
  79.         if (isset($data['id'])) {
  80.             $campagne $this->em->getRepository(Campagne::class)->find($data['id']);
  81.         } else {
  82.             //dateCreation
  83.             $campagne->setDatecreation(new \DateTime());
  84.         }
  85.         if (isset($data['libelle'])) {
  86.             $campagne->setLibelle($data['libelle']);
  87.         }
  88.         if (isset($data['objectif'])) {
  89.             $campagne->setObjectif($data['objectif']);
  90.         }
  91.         if (isset($data['objectifagent'])) {
  92.             $campagne->setObjectifagent($data['objectifagent']);
  93.         }
  94.         if (isset($data['description'])) {
  95.             $campagne->setDescription($data['description']);
  96.         }
  97.         if (isset($data['datedebut'])) {
  98.             $campagne->setDatedebut(new \DateTime($data['datedebut']));
  99.         }
  100.         if (isset($data['datefin'])) {
  101.             $campagne->setDatefin(new \DateTime($data['datefin']));
  102.         }
  103.         //
  104.         $idCampagneCible ;
  105.         if (isset($data['type']) && $data['type'] != "0") {
  106.             $campagne->setType($data['type']);
  107.             if (isset($data['campagnecible'])) {
  108.                 $campagne->setCampagnecible($data['campagnecible']);
  109.             }else{
  110.                 $campagne->setCampagnecible(0);
  111.             }
  112.         } else {
  113.             $idCampagneCible $campagne->getCampagnecible();
  114.             $campagne->setType(0);
  115.             $campagne->setCampagnecible(0);
  116.         }
  117.         // set Objects : Client
  118.         if (isset($data['client']) && isset($data['client']['id'])) {
  119.             $client $this->getObject(Client::class, $data['client']['id']);
  120.             if ($client) {
  121.                 $campagne->setClient($client);
  122.             }
  123.         }
  124.         // set Objects : Clientmanager
  125.         if (isset($data['clientmanager']) && isset($data['clientmanager']['id'])) {
  126.             $clientmanager $this->getObject(Utilisateur::class, $data['clientmanager']['id']);
  127.             if ($clientmanager) {
  128.                 $campagne->setClientmanager($clientmanager);
  129.             }
  130.         }
  131.         // set Objects : Client
  132.         if (isset($data['reponsable']) && isset($data['reponsable']['id'])) {
  133.             $reponsable $this->getObject(Utilisateur::class, $data['reponsable']['id']);
  134.             if ($reponsable) {
  135.                 $campagne->setReponsable($reponsable);
  136.             }
  137.         }
  138.         if (isset($data['recupererTousHistorique'])) {
  139.             $campagne->setRecupererTousHistorique($data['recupererTousHistorique']);
  140.         }
  141.         if (isset($data['active'])) {
  142.             $campagne->setActive($data['active']);
  143.         }
  144.         try {
  145.             $this->em->persist($campagne);
  146.             $this->em->flush();
  147.             //// mettre à jours campagne cible
  148.             if (isset($data['type']) && $data['type'] != "0") {
  149.                 // ajout
  150.                 if (isset($data['campagnecible']) && $data['campagnecible'] > 0) {
  151.                     /** @var Campagne $campagnecible */
  152.                     $campagnecible $this->em->getRepository(Campagne::class)->find($data['campagnecible']);
  153.                     if($campagnecible){
  154.                         $type =  $data['type'] == "1" "2":"1";
  155.                         $campagnecible->setType($type);
  156.                         $campagnecible->setCampagnecible($campagne->getId());
  157.                         $this->em->persist($campagnecible);
  158.                         $this->em->flush();
  159.                     }
  160.                 }
  161.             }else{
  162.                 // Suppression
  163.                 if($idCampagneCible 0){
  164.                     /** @var Campagne $campagnecible */
  165.                     $campagnecible $this->em->getRepository(Campagne::class)->find($idCampagneCible);
  166.                     if($campagnecible){
  167.                         $campagnecible->setType(0);
  168.                         $campagnecible->setCampagnecible(0);
  169.                         $this->em->persist($campagnecible);
  170.                         $this->em->flush();
  171.                     }
  172.                 }
  173.             }
  174.             return $this->apiOk($campagne);
  175.         } catch (\Exception $e) {
  176.             return $this->apiKo($e->getMessage());
  177.         }
  178.     }
  179.     /**
  180.      * @Route("/find", name="api_Campagne_find", methods={"POST"})
  181.      * @param Request $request
  182.      * @return JsonResponse
  183.      */
  184.     public function find(Request $request)
  185.     {
  186.         $data json_decode($request->getContent(), true);
  187.         //$data['filter']['and']['campagne.active'] = ' <> 2 '; // ne pas affichier les elements supprimé logiquement
  188.         $sql "
  189.             SELECT campagne 
  190.             FROM " Campagne::class . " campagne
  191.             LEFT JOIN " Client::class . " client WITH campagne.client=client.id
  192.         ";
  193.         if (isset($data['filter']['params']['espaceagent']) && $data['filter']['params']['espaceagent']) {
  194.             $sql $sql " LEFT JOIN " Campagnecollaborateur::class . " as campagnecollaborateur WITH campagnecollaborateur.campagne = campagne.id";
  195.             $data['filter']['and']['campagnecollaborateur.collaborateur'] = ' = ' $this->getUtilisateurConnecte()->getId();
  196.         }
  197.         if (isset($data['filter']['params']['espaceclient']) && $data['filter']['params']['espaceclient']) {
  198.             // a faire
  199.             /** @var Utilisateur $utilisateur */
  200.             $utilisateur $this->getUtilisateurConnecte();
  201.             /** @var Client $client */
  202.             $client $utilisateur->getClient();
  203.             if ($client) {
  204.                 /** @var Utilisateur $manager */
  205.                 $manager $client->getManager();
  206.                 if ($manager && ($manager->getId() == $utilisateur->getId())) {
  207.                     // Cas Manager Principale : alors récupérer toute campagnes client
  208.                     $data['filter']['and']['campagne.client'] = ' = ' $client->getId();
  209.                 } else {
  210.                     // Cas Non Manager Principale : alors récupérer seulement ses campagnes
  211.                     $data['filter']['and']['campagne.clientmanager'] = ' = ' $utilisateur->getId();
  212.                 }
  213.             } else {
  214.                 $data['filter']['and']['1'] = ' = 0';
  215.             }
  216.         }
  217.         return $this->findElementsWithJoin($sql$data);
  218.     }
  219.     /**
  220.      * @Route("/campagnedoublon/{id}", name="api_Campagne_campagnedoublon", methods={"GET"})
  221.      * @param int $id
  222.      * @return JsonResponse
  223.      */
  224.     public function campagnedoublon(int $id){
  225.         $sql "
  226.                 SELECT COUNT(*) as doublon FROM 
  227.                 campagneprospect cp
  228.                 LEFT JOIN prospect p ON p.id=cp.prospect_id
  229.                 WHERE cp.campagne_id=".$id." AND p.societe IN (SELECT d.societe FROM prospectdoublon AS d)";
  230.         $rsm = new ResultSetMapping();
  231.         $rsm->addScalarResult('doublon','doublon');
  232.         $items $this->em->createNativeQuery($sql,$rsm)->getScalarResult();
  233.         $data = ["doublon" => 0];
  234.         foreach ($items as $item){
  235.             $data = ["doublon" => $item["doublon"]];
  236.         }
  237.         return $this->apiOk($data);
  238.     }
  239. }