src/Controller/api/ApiController.php line 2041

Open in your IDE?
  1. <?php
  2. namespace App\Controller\api;
  3. use Entity\user\User;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
  6. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  7. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\JsonResponse;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  13. use Symfony\Component\Security\Core\Security;
  14. use App\Services\user\LoginManager;
  15. use App\Types\user\TypeEtat;
  16. use App\Entity\stock\Commande;
  17. use App\Entity\stock\Facture;
  18. use App\Entity\user\Utilisateur;
  19. use App\Entity\stock\LigneCommande;
  20. use App\Entity\prod\ProducteurGroupement;
  21. use App\Entity\stock\ZoneProducteur;
  22. use App\Entity\stock\CaissePrix;
  23. use App\Entity\stock\Caisse;
  24. use App\Entity\stock\InfoLivrer;
  25. use App\Entity\stock\Livrer;
  26. use App\Entity\stock\Sac;
  27. use App\Entity\stock\Image;
  28. use App\Repository\stock\ProducteurLivraisonRepository;
  29. use App\Entity\prod\Surface;
  30. use App\Entity\prod\DetailSurface;
  31. use App\Entity\prod\AnneeCampagne;
  32. use App\Entity\prod\ProducteurEvenement;
  33. use App\Entity\inspection\InspectionRempli;
  34. use App\Entity\prod\Producteur;
  35. use App\Entity\inspection\InspectionReponse;
  36. use App\Entity\prod\SurfaceAnneeHistorique;
  37. use App\Entity\prod\SurfaceAnnee;
  38. use App\Entity\track\Localisation;
  39. use App\Entity\stock\ProducteurLivraison;
  40. use JMS\Serializer\SerializerBuilder;
  41. use App\Entity\user\Connexion;
  42. use App\Types\user\TypeCodeProfil;
  43. use App\ControllerModel\user\paramUtilTrait;
  44. use App\Entity\inspection\ProgrammeProducteurInspecteur;
  45. use App\Repository\user\ConnexionRepository;
  46. use App\Repository\user\AbonneRepository;
  47. use App\Repository\user\ActionRepository;
  48. use App\Services\param\ParametreManager;
  49. use App\Repository\param\ParamRepository;
  50. use App\Repository\user\ModuleRepository;
  51. use App\Repository\user\ControleurRepository;
  52. use App\Repository\user\ProfilRepository;
  53. use App\Repository\user\UtilisateurRepository;
  54. use App\Repository\cms\ArticleRepository;
  55. use App\Repository\cms\LangueRepository;
  56. use App\Repository\cms\RubriqueRepository;
  57. use App\Repository\cms\TemplateRepository;
  58. use App\Repository\inspection\ProgrammeRepository;
  59. use App\Repository\stock\LivrerRepository;
  60. use App\Repository\stock\ProduitTypeOperationRepository;
  61. use App\Repository\prod\GroupementRepository;
  62. use App\Repository\prod\ProducteurRepository;
  63. use App\Repository\stock\VilleRepository;
  64. use App\Repository\stock\FournisseurRepository;
  65. use App\Repository\stock\ZoneProducteurRepository;
  66. use App\Repository\stock\ProduitRepository;
  67. use App\Repository\stock\CommandeRepository;
  68. use App\Repository\stock\SeTrouverRepository;
  69. use App\Repository\prod\SurfaceAnneeRepository;
  70. use App\Entity\prod\AppelEvenement;
  71. use App\Repository\prod\ProducteurGroupementRepository;
  72. use App\Repository\inspection\InspectionRempliRepository;
  73. use App\Repository\inspection\InspectionReponseRepository;
  74. use App\Repository\inspection\InspectionRepository;
  75. use App\Repository\prod\AnneeCampagneRepository;
  76. use App\Repository\stock\PrixRigueurRepository;
  77. use App\Entity\stock\PrixRigueur;
  78. use App\Entity\stock\Inventaire;
  79. use App\Repository\prod\SurfaceRepository;
  80. use App\Repository\stock\OperationRepository;
  81. use App\Repository\stock\ProduitAbonneRepository;
  82. use App\Repository\stock\ImageRepository;
  83. use App\Repository\stock\InfoInventaireRepository;
  84. use App\Repository\stock\LigneCommandeRepository;
  85. use App\Repository\stock\CibleRepository;
  86. use App\Repository\prod\PlanteRepository;
  87. use App\Repository\track\LocalisationRepository;
  88. use App\Repository\stock\VillageRepository;
  89. use App\Repository\stock\CaisseRepository;
  90. use App\Repository\asso\ActiviteRepository;
  91. use App\Repository\stock\CaracteristiquePrixRepository;
  92. use App\Repository\inspection\CategorieQuestionInspectionRepository;
  93. use App\Repository\inspection\ReponseQuestionInspectionRepository;
  94. use App\Repository\inspection\QuestionInspectionRepository;
  95. use App\Repository\inspection\InspecteurRepository;
  96. use App\Repository\client\ClientRepository;
  97. use App\Repository\stock\TypeOperationRepository;
  98. use App\Repository\stock\InventaireRepository;
  99. use App\Services\stock\OperationManager;
  100. use App\Services\user\UtilsManager;
  101. use App\Repository\stock\SacRepository;
  102. use App\Repository\stock\TableRepository;
  103. use App\Entity\prod\ProduitEtapeCroissance;
  104. use App\Entity\prod\TacheProduitEtapeCroissance;
  105. use App\Repository\stock\InfoLivrerRepository;
  106. use App\Repository\stock\EntrepotRepository;
  107. use App\Repository\stock\CategorieProduitRepository;
  108. use App\Repository\prod\EvenementRepository;
  109. use App\Repository\prod\ProduitEtapeCroissanceRepository;
  110. use App\Repository\prod\TacheProduitEtapeCroissanceRepository;
  111. use App\Repository\asso\ProjetRepository;
  112. use App\Repository\prod\SurfaceAbonneRepository;
  113. use App\Repository\prod\ProducteurAbonneRepository;
  114. use App\Repository\user\HistoriqueActionRepository;
  115. use App\Entity\stock\InfoInventaire;
  116. use App\Entity\user\HistoriqueActionUtilisateur;
  117. use App\Repository\client\EtatClientRepository;
  118. use App\Repository\prod\SurfaceAnneeHistoriqueRepository;
  119. use App\Repository\opportunite\EtatOpportuniteRepository;
  120. use App\Repository\prod\ProducteurEvenementRepository;
  121. use App\Repository\stock\TransformationRepository;
  122. use App\Repository\stock\EtapeProcessusRepository;
  123. use CrEOF\Spatial\PHP\Types\Geometry\LineString;
  124. use CrEOF\Spatial\PHP\Types\Geometry\Point;
  125. use CrEOF\Spatial\PHP\Types\Geometry\Polygon;
  126. /**
  127.  * User controller.
  128.  * @Route("traite")
  129.  */
  130. class ApiController extends AbstractController
  131. {
  132.     use paramUtilTrait;
  133.     private $_tokenStorage;
  134.     private $userPasswordHasherInterface;
  135.     public function __construct(Security $securityEtatClientRepository  $etatClientRepositoryTokenStorageInterface $tokenStorageUserPasswordHasherInterface $userPasswordHasherInterfaceSurfaceAnneeHistoriqueRepository $surfaceAnneeHistoriqueRepository)
  136.     {
  137.         $this->etatClientRepository $etatClientRepository;
  138.         $this->_tokenStorage $tokenStorage;
  139.         $this->_security $security;
  140.         $this->userPasswordHasherInterface $userPasswordHasherInterface;
  141.         $this->surfaceAnneeHistoriqueRepository =  $surfaceAnneeHistoriqueRepository;
  142.     }
  143.     /**
  144.      * Creates a new user entity.
  145.      *
  146.      * @Route("/liste/mes/producteur/{id}/{profil}", name="api_liste_mes_producteurs")
  147.      * @Method({"GET","POST"})
  148.      */
  149.     public function listeApiMesProducteursAction(
  150.         Request $request,
  151.         $id,
  152.         $profil,
  153.         LoginManager $loginManager,
  154.         ParamRepository $paramRepositor,
  155.         ConnexionRepository $connexionRepository,
  156.         ActionRepository $actionRepository,
  157.         ModuleRepository $moduleRepository,
  158.         ControleurRepository $controleurRepository,
  159.         ProfilRepository $profilRepository,
  160.         SurfaceAnneeRepository $surfaceAnneeRepository,
  161.         FournisseurRepository $fournisseurRepository,
  162.         AbonneRepository $abonneRepository,
  163.         ActiviteRepository $activiteRepository,
  164.         TypeOperationRepository $typeOperationRepository,
  165.         ProduitRepository $produitRepository,
  166.         AnneeCampagneRepository $anneeCampagneRepository,
  167.         PrixRigueurRepository $prixRigueurRepository,
  168.         EntrepotRepository $entrepotRepository,
  169.         CommandeRepository $commandeRepository,
  170.         InfoLivrerRepository $infoLivrerRepository
  171.     ) {
  172.         $em $this->getDoctrine()->getManager();
  173.         $produit 2;
  174.         $objetProduit $produitRepository->find($produit);
  175.         $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit"etatAnneeCampagne" => 1));
  176.         //$anneecampagne_id = 
  177.         //$campagne_id = //$request->request->get('producteur_id');    
  178.         $anneeCampagne $objetAnneeCampagne->getId();;
  179.         $data $request->getContent();  //$request->get('id')
  180.         if ($profil != TypeCodeProfil::IDPROFILAGENT) {
  181.             $id 0;
  182.         }
  183.         //var_dump($id);exit;
  184.         $objetAgent $fournisseurRepository->find($id);
  185.         if ($objetAgent == null) {
  186.             $id 0;
  187.             $idville 0;
  188.         } else {
  189.             $idville $objetAgent->getVille()->getId();
  190.         }
  191.         $listeFournisseur $fournisseurRepository->getAllFournisseurProducteur($id$idville);
  192.         // $listeProducteur = $em->getRepository($this->prodBundle . 'Producteur')->getAllProducteur($typeprod, $objetFour->getVille()->getId(), $village,$nbParPage, $pageActuelle,4);
  193.         //  var_dump(count($listeFournisseur)); exit;
  194.         // $cooperative =$em->getRepository($this->stockBundle . 'Ville')-> getCooperativeApi() ;                
  195.         //var_dump($listeFournisseur)  ;exit;
  196.         $i 0;
  197.         $queryResult = array();
  198.         $dateJour = new \DateTime();
  199.         foreach ($listeFournisseur as $unFournisseur) {
  200.             $queryResult[$i]["id"] = $unFournisseur["id"];
  201.             $queryResult[$i]["nom"] = $unFournisseur["nom"] . " " $unFournisseur["prenoms"];
  202.             $queryResult[$i]["nomFournisseur"] = $unFournisseur["nomFournisseur"];
  203.             $queryResult[$i]["village"] = $unFournisseur["village"];
  204.             $queryResult[$i]["idutil"] = $unFournisseur["idutil"];
  205.             $queryResult[$i]["siModification"] = $unFournisseur["siModification"];
  206.             $queryResult[$i]["siIntention"] = $unFournisseur["siIntention"];
  207.             $queryResult[$i]["siSemence"] = $unFournisseur["siSemence"];
  208.             $queryResult[$i]["idAnnee"] = $anneeCampagne;
  209.             $queryResult[$i]["telephone"] = $unFournisseur["telephone"];
  210.             $queryResult[$i]["entrepot"] = $entrepotRepository->getListeEntrepot();
  211.             // $queryResult[$i]["cooperative"] =$em->getRepository($this->stockBundle . 'Ville')-> getCooperativeApi() ;                
  212.             //$queryResult[$i]["cooperative"]= $em->getRepository($this->prodBundle . 'Groupement')->getApiAllGroupement($objetUtilisateur->getAbonne()->getId() );   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  213.             $queryResult[$i]["achat"] =  $infoLivrerRepository
  214.                 ->getApiRechercheProducteurLivraison(000000$unFournisseur["id"]);
  215.             //$em->getRepository($this->stockBundle . 'InfoLivrer') ->getApiRechercheProducteurLivraison($unFournisseur["idutil"], 0, 0, 0,0,0,$unFournisseur["id"]) ;  
  216.             $queryResult[$i]["intention"] = $surfaceAnneeRepository->getIntentionProducteur($unFournisseur["id"]);
  217.             $queryResult[$i]["semence"] = $commandeRepository->getApiFournisseurSemence(0000000$unFournisseur["id"], 0201);
  218.             $produit $produitRepository->find(2);
  219.             $infoMontant $prixRigueurRepository->findOneBy(array('produit' => $produit'etatPrixRigueur' => 1'typePrixRigueur' => 2));
  220.             if ($infoMontant == null) {
  221.                 $prix 0;
  222.             } else {
  223.                 $prix =  $infoMontant->getInfoPrixRigueur();
  224.             }
  225.             //var_dump($prix);exit;
  226.             $queryResult[$i]["prixAchat"] = $prix;
  227.             $detailUtil[$i] = $commandeRepository->getApiDetailFournisseurCommande($unFournisseur["id"], 0000000201);
  228.             //Get Value for the current year
  229.             $currentValue $surfaceAnneeRepository->getIntentionProducteurAnneeCompage($unFournisseur["id"], $anneeCampagne);
  230.             $infoStatCommande $commandeRepository->getStatsRechercheCommandeProducteur($unFournisseur["id"], $dateJour->format("dd/mm/YY"), "01/05/2015"0000'0'201);
  231.             $totalLivre $commandeRepository->getSumQuantiteLivraisonTotalProducteur($unFournisseur["id"], $dateJour->format("dd/mm/YY"), "01/05/2015"00002010);
  232.             if ($infoStatCommande[0]['montantTotal'] == null) {
  233.                 $queryResult[$i]["montantAvance"] = 0;
  234.             } else {
  235.                 $queryResult[$i]["montantAvance"] = $infoStatCommande[0]['montantTotal'];
  236.             }
  237.             if ($totalLivre[0]["montantTotalLivraison"] == null) {
  238.                 $queryResult[$i]["montantAchat"] = 0;
  239.                 $queryResult[$i]["totalLivraison"] = 0;
  240.             } else {
  241.                 $queryResult[$i]["montantAchat"] = $totalLivre[0]["montantTotalLivraison"];
  242.                 $queryResult[$i]["totalLivraison"] = $totalLivre[0]["totalLivraison"];
  243.             }
  244.             if (count($currentValue) == 0) {
  245.                 $queryResult[$i]["valSurface"] = 0;
  246.             } else {
  247.                 //$id = $em->getRepository($this->prodBundle.'SurfaceAnnee')-> 
  248.                 $newValueSurface count($currentValue) - 1;
  249.                 $queryResult[$i]["valSurface"] = $currentValue[$newValueSurface]["valSurface"];
  250.             }
  251.             if (count($detailUtil[$i]) == 0) {
  252.                 $queryResult[$i]["quantiteReelle"] = 0;
  253.                 $queryResult[$i]["montant"] = 0;
  254.             } else {
  255.                 $queryResult[$i]["quantiteReelle"] = $detailUtil[$i][0]["quantiteReelle"];
  256.                 $queryResult[$i]["codeProd"] = $detailUtil[$i][0]["codeProd"];
  257.                 $queryResult[$i]["urlImage"] = $detailUtil[$i][0]["urlImage"];
  258.                 $queryResult[$i]["montant"] = $detailUtil[$i][0]["montant"];
  259.             }
  260.             ++$i;
  261.         }
  262.         //    var_dump($detailUtil);exit;       
  263.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  264.         $response = new Response($dataSend);
  265.         $response->headers->set('Content-Type''application/json');
  266.         return $response;
  267.     }
  268.     /**
  269.      * Creates a new user entity.
  270.      *
  271.      * @Route("/liste/intention/producteur/{idProd}", name="api_liste_intentions_producteurs")
  272.      * @Method({"GET","POST"})
  273.      */
  274.     public function listeIntentionsProducteurAction(Request $request$idProdSurfaceAnneeRepository $surfaceAnneeRepository)
  275.     {
  276.         $em $this->getDoctrine()->getManager();
  277.         $queryResult $surfaceAnneeRepository->getIntentionProducteur($idProd);
  278.         //    var_dump($detailUtil);exit;       
  279.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  280.         $response = new Response($dataSend);
  281.         $response->headers->set('Content-Type''application/json');
  282.         return $response;
  283.     }
  284.     /**
  285.      * Creates a new user entity.
  286.      *
  287.      * @Route("/liste/map/intention/producteur/{typeLocalisation}/{idUtil}", name="api_liste_map_intentions_producteurs")
  288.      * @Method({"GET","POST"})
  289.      */
  290.     public function listeIntentionsProducteurMapAction(Request $request$typeLocalisation$idUtilSurfaceAnneeRepository $surfaceAnneeRepositoryAbonneRepository $abonneRepositoryUtilisateurRepository $utilisateurRepository)
  291.     {
  292.         $em $this->getDoctrine()->getManager();
  293.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  294.         $tab = array();
  295.         $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$objetUtilisateur->getAbonne()->getId(), $abonneRepository));
  296.         $tab[1]["type"] = 1;
  297.         $tab[1]["donnee"] = $surfaceAnneeRepository->getIntentionProducteurMap($typeLocalisation$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  298.         $tab[2]["type"] = 2;
  299.         $tab[2]["donnee"] = $surfaceAnneeRepository->getLocalisationFournisseurMap(3$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  300.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tab), 'json');
  301.         $response = new Response($dataSend);
  302.         $response->headers->set('Content-Type''application/json');
  303.         return $response;
  304.     }
  305.     /**
  306.      * Creates a new user entity.
  307.      *
  308.      * @Route("/liste/semence/producteur/{idProd}", name="api_liste_semence_producteurs")
  309.      * @Method({"GET","POST"})
  310.      */
  311.     public function listeSemencesProducteurAction(Request $request$idProdCommandeRepository $commandeRepository)
  312.     {
  313.         $em $this->getDoctrine()->getManager();
  314.         $queryResult $commandeRepository->getApiFournisseurSemence(
  315.             0,
  316.             0,
  317.             0,
  318.             0,
  319.             0,
  320.             0,
  321.             0,
  322.             $idProd,
  323.             0,
  324.             20,
  325.             0
  326.         );
  327.         //    var_dump($detailUtil);exit;       
  328.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  329.         $response = new Response($dataSend);
  330.         $response->headers->set('Content-Type''application/json');
  331.         return $response;
  332.     }
  333.     /**
  334.      * Creates a new user entity.
  335.      *
  336.      * @Route("/liste/achat/producteur/{idProd}/{idFour}", name="api_liste_achat_producteurs")
  337.      * @Method({"GET","POST"})
  338.      */
  339.     public function listeAchatsProducteurAction(
  340.         Request $request,
  341.         $idProd,
  342.         $idFour,
  343.         UtilisateurRepository $utilisateurRepository,
  344.         FournisseurRepository $fournisseurRepository,
  345.         InfoLivrerRepository $infoLivrerRepository,
  346.         SeTrouverRepository $seTrouverRepository
  347.     ) {
  348.         $em $this->getDoctrine()->getManager();
  349.         //Creation de l'objet fournisseur
  350.         $objetUtilisateur $utilisateurRepository->find($idFour);
  351.         if ($idProd != 0) {
  352.             if ($objetUtilisateur->getProfil()->getId() == 11) {
  353.                 $objetFournisseur $fournisseurRepository->findOneBy(array('utilisateur' => $objetUtilisateur));
  354.                 $queryResult $infoLivrerRepository
  355.                     ->getApiRechercheProducteurLivraison($objetFournisseur->getId(), 00000$idProd);
  356.             } else {
  357.                 $objetFournisseur $fournisseurRepository->findOneBy(array('utilisateur' => $objetUtilisateur));
  358.                 $queryResult $infoLivrerRepository
  359.                     ->getApiRechercheProducteurLivraison(000000$idProd);
  360.             }
  361.         } else {
  362.             $objetAgent $fournisseurRepository->find($idFour);
  363.             if ($objetAgent == null) {
  364.                 $id 0;
  365.                 //$idville = $ville;
  366.                 //$objetVille = $em->getRepository($this->stockBundle . 'Ville')->find($ville);
  367.                 $tabVille 0//$em->getRepository($this->stockBundle . 'SeTrouver')->findOneBy(array("ville"=>$objetVille));
  368.             } else {
  369.                 $id 0;
  370.                 $idville $objetAgent->getVille()->getId();
  371.                 $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent));
  372.             }
  373.             $queryResult =  $infoLivrerRepository->getApiNewRechercheProducteurLivraison($id$tabVille000000040);
  374.             //var_dump(count($queryResult));exit;
  375.         }
  376.         //    var_dump($detailUtil);exit;       
  377.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  378.         $response = new Response($dataSend);
  379.         $response->headers->set('Content-Type''application/json');
  380.         return $response;
  381.     }
  382.     /**
  383.      * Creates a new user entity.
  384.      *
  385.      * @Route("/connexion/info", name="api_connexion_info")
  386.      * @Method({"POST"})
  387.      */
  388.     public function apiConnexionAction(
  389.         Request $request,
  390.         LoginManager $loginManager,
  391.         ParametreManager $parametreManager,
  392.         UtilsManager $utilsManager,
  393.         AbonneRepository $abonneRepository,
  394.         ProduitRepository $produitRepository,
  395.         FournisseurRepository $fournisseurRepository,
  396.         ParamRepository $paramRepository,
  397.         UtilisateurRepository $reposiUtil,
  398.         ConnexionRepository $connexionRepository,
  399.         ActionRepository $actionRepository,
  400.         UtilisateurRepository $utilisateurRepository,
  401.         ProducteurRepository $producteurRepository,
  402.         ClientRepository $clientRepository
  403.     ) {
  404.         $em $this->getDoctrine()->getManager();
  405.         /*$listeFournisseur = $em->getRepository($this->stockBundle . 'Fournisseur')->getAllFournisseurByType(2) ; 
  406.         //Envoyer la liste des agents Gebana
  407.                     $tabInfomation["listeFournisseur"]=$listeFournisseur;
  408.                     
  409.                     $dataSend =  $this->get('serializer')->serialize(array('data'=>$tabInfomation), 'json');
  410.                     $response = new Response($dataSend);
  411.                     $response->headers->set('Content-Type', 'application/json');
  412.                     //$this->logMessageddss .= ' [ USER ( ' . $email . ' ) BLOQUE TENTE DE SE /intentionR ] ';
  413.                     return $response;  */
  414.         //var_dump(1);exit;
  415.         $queryResult = [];
  416.         //$this->infos/intention($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);;
  417.         $tabInfomation = [];
  418.         /*
  419.          * On vérifie si les parametres par défaut sont crées, si non on les ajoute
  420.         $paramTest = $parametreManager->getValeurParametre(TypeParametre::DUREE_TIME_OUT_INT);
  421.         if ($paramTest == NULL) {
  422.             $loginManager->addDefaultParametre();
  423.         }*/
  424.         //$loginManager->logout(1);
  425.         //$utilsManager = $this->get('utils_manager');
  426.         $maxAttempt $loginManager->getMaxAttempt($paramRepository);
  427.         $parameters json_decode($request->getContent(), true);
  428.         $device trim($parameters['device']); // password saisie  
  429.         //if( $device == 1 ){
  430.         $email trim($parameters['username']); // email saisie
  431.         $password trim($parameters['password']); // password saisie   
  432.         //}
  433.         if (($email != NULL) && ($password != NULL) && !empty($email) && !empty($password)) {
  434.             $user = new Utilisateur();
  435.             // formulaire rempli
  436.             $user $utilisateurRepository->getOneUserOnLogin($email$this->userPasswordHasherInterface->hashPassword(
  437.                 $user,
  438.                 $password
  439.             ));
  440.             if ($user == NULL) { // utilisateur introuvable avec le email et l password saisie
  441.                 //$this->logMessage .=' [ USER INTROUVABLE AVEC PASS ET TEL ] ';
  442.                 // on cherche l'utilisateur avec l emaol seulement
  443.                 $user $utilisateurRepository->getOneUserOnLoginForAttempt($email);
  444.                 if ($user != NULL) { // L'utilisateur existe ds la db,il y a erreur de saisie de  password
  445.                     $tabInfomation["etat"] = false;
  446.                     $tabInfomation["message"] = 'Email et/ou mot de passe invalides';
  447.                     //Information Ã  envoyer
  448.                     $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  449.                     $response = new Response($dataSend);
  450.                     $response->headers->set('Content-Type''application/json');
  451.                     return $response;
  452.                 } else {
  453.                     $tabInfomation["etat"] = false;
  454.                     $tabInfomation["message"] = 'Email et/ou mot de passe invalides';
  455.                     //Information Ã  envoyer
  456.                     $dataSend =  $this->get('serializer')->serialize($tabInfomation'json');
  457.                     $response = new Response($dataSend);
  458.                     $response->headers->set('Content-Type''application/json');
  459.                     return $response;
  460.                 }
  461.                 //$this->logMessage .=' [ USER INTROUVABLE AVEC EMAIl UNIQUEMENT ] ';
  462.                 //$loginManager->writeLogMessage($this->logMessage);
  463.             } else { // utilisateur trouve avec tel et password saisie
  464.                 /*
  465.                      * Le profil de l'utilisateur est desactivé
  466.                      */
  467.                 if (($user->getProfil()->getEtat() == TypeEtat::INACTIF) || ($user->getEtat() == TypeEtat::INACTIF)) {
  468.                     $tabInfomation["etat"] = false;
  469.                     $tabInfomation["message"] = 'Votre compte est désactivé';
  470.                     //Information Ã  envoyer
  471.                     $dataSend =  $this->get('serializer')->serialize($tabInfomation'json');
  472.                     $response = new Response($dataSend);
  473.                     $response->headers->set('Content-Type''application/json');
  474.                     return $response;
  475.                 }
  476.                 $adresseIp $_SERVER['REMOTE_ADDR'];
  477.                 $user->setAdresseIp($adresseIp);
  478.                 $con = new Connexion($adresseIp);
  479.                 $con->setUtilisateur($user);
  480.                 $con->setAdresseIp($adresseIp);
  481.                 $user->addConnexion($con);
  482.                 $em->persist($con);
  483.                 $em->flush();
  484.                 $user->setAttempt(0);
  485.                 $user->setEtat/intention(TRUE);
  486.                 $user->setDateSynchronisation(new \DateTime());
  487.                 $em->flush();
  488.                 $listeFournisseur $fournisseurRepository->getAllFournisseurByType(1$user->getAbonne()->getId());
  489.                 $queryResult $utilisateurRepository->findApiUtilisateur($user->getId());
  490.                 $tabInfomation["etat"] = true;
  491.                 $tabInfomation["message"] = 'Connexion reussié !';
  492.                 $tabInfomation["username"] = $user->getUsername();
  493.                 $tabInfomation["nomPrenoms"] = $user->getNom() . " " $user->getPrenoms();
  494.                 $tabInfomation["email"] = $user->getEmail();
  495.                 $tabInfomation["idProfil"] = $user->getProfil()->getId();
  496.                 $tabInfomation["siFournisseur"] = $user->getProfil()->getLieFournisseur();
  497.                 $tabInfomation["adresse"] = $user->getAdresse();
  498.                 $tabInfomation["telephone"] = $user->getTel1();
  499.                 $tabInfomation["abonne"] = $user->getAbonne()->getId();
  500.                 $tabInfomation["nomAbonne"] = $user->getAbonne()->getNom();
  501.                 $tabInfomation["typeUtilisateur"] = $user->getTypeUtilisateur();
  502.                 $tabInfomation["typeAbonne"] = $user->getAbonne()->getTypeAbonne()->getId();
  503.                 $tabInfomation["typeActionProduit"] = $user->getAbonne()->getTypeActionProduit();
  504.                 $tabInfomation["id"] = $user->getId();
  505.                 if ($user->getAbonne()->getPartenaire() != null) {
  506.                     $tabInfomation["partenaire"] = $user->getAbonne()->getPartenaire()->getUrlImage();
  507.                 } else {
  508.                     $tabInfomation["partenaire"] = "0";
  509.                 }
  510.                 if ($device == 2) {
  511.                     $objetClient $clientRepository->findOneBy(["utilisateur" => $user]);
  512.                     $tabInfomation["codeGenereClient"] = $objetClient->getCodeGenere();
  513.                 }
  514.                 //Envoyer la liste des agents Gebana
  515.                 $tabInfomation["listeFournisseur"] = $listeFournisseur;
  516.                 //Prendre le code du produicteur
  517.                 $objetProducteur =  $producteurRepository->findOneBy(["utilisateur" => $user]);
  518.                 if ($objetProducteur != null)
  519.                     $codeProd $objetProducteur->getCodeGenere();
  520.                 else
  521.                     $codeProd 0;
  522.                 $tabInfomation["prodCodeGenere"] = $codeProd;
  523.                 $user $this->getUser();
  524.                 $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  525.                 $response = new Response($dataSend);
  526.                 $response->headers->set('Content-Type''application/json');
  527.                 //$this->logMessageddss .= ' [ USER ( ' . $email . ' ) BLOQUE TENTE DE SE CONNECTER ] ';
  528.                 return $response;
  529.             }
  530.         } else {
  531.             $tabInfomation["etat"] = false;
  532.             $tabInfomation["message"] = "Formulaire Invalide. Les champs Email et Mot de passe sont obligatoires";
  533.             //Information Ã  envoyer
  534.             $dataSend =  $this->get('serializer')->serialize($tabInfomation'json');
  535.             $response = new Response($dataSend);
  536.             $response->headers->set('Content-Type''application/json');
  537.             //$this->logMessage .= ' [ ' . "Formulaire Invalide. Les champs Email et Mot de passe sont obligatoires" . ' ] ';
  538.             return $response;
  539.         }
  540.         return true;
  541.     }
  542.     /**
  543.      * Creates a new user entity.
  544.      *
  545.      * @Route("/me/info", name="api_me_info")
  546.      * @Method({"POST"})
  547.      */
  548.     public function apiMeInfoAction(
  549.         Request $request,
  550.         LoginManager $loginManager,
  551.         ParametreManager $parametreManager,
  552.         UtilsManager $utilsManager,
  553.         AbonneRepository $abonneRepository,
  554.         ProduitRepository $produitRepository,
  555.         FournisseurRepository $fournisseurRepository,
  556.         ParamRepository $paramRepository,
  557.         UtilisateurRepository $reposiUtil,
  558.         ConnexionRepository $connexionRepository,
  559.         ActionRepository $actionRepository,
  560.         UtilisateurRepository $utilisateurRepository,
  561.         ProducteurRepository $producteurRepository,
  562.         ClientRepository $clientRepository
  563.     ) {
  564.         $em $this->getDoctrine()->getManager();
  565.         $token $this->_tokenStorage->getToken();
  566.         if (!$token) {
  567.             return $this->json([
  568.                 'status' => 400,
  569.                 'user' => null
  570.             ], 400);
  571.         }
  572.         $user =   $token->getUser();
  573.         $listeFournisseur $fournisseurRepository->getAllFournisseurByType(1$user->getAbonne()->getId());
  574.         $queryResult $utilisateurRepository->findApiUtilisateur($user->getId());
  575.         //mettre que la personne est connectée.
  576.         if ($user->getEtatConnecte()) {
  577.             $tabInfomation["etatConnexion"] = true// tout le temps connecté
  578.         } else {
  579.             $tabInfomation["etatConnexion"] = true;
  580.         }
  581.         if ($user->getId() == 9553)
  582.             $tabInfomation["etatConnexion"] = true;
  583.         $tabInfomation["message"] = 'Connexion reussié !';
  584.         $tabInfomation["username"] = $user->getUsername();
  585.         $tabInfomation["nomPrenoms"] = $user->getNom() . " " $user->getPrenoms();
  586.         $tabInfomation["email"] = $user->getEmail();
  587.         $tabInfomation["idProfil"] = $user->getProfil()->getId();
  588.         $tabInfomation["siFournisseur"] = $user->getProfil()->getLieFournisseur();
  589.         $tabInfomation["adresse"] = $user->getAdresse();
  590.         $tabInfomation["telephone"] = $user->getTel1();
  591.         $tabInfomation["abonne"] = $user->getAbonne()->getId();
  592.         $tabInfomation["nomAbonne"] = $user->getAbonne()->getNom();
  593.         $tabInfomation["typeUtilisateur"] = $user->getTypeUtilisateur();
  594.         $tabInfomation["typeAbonne"] = $user->getAbonne()->getTypeAbonne()->getId();
  595.         $tabInfomation["typeActionProduit"] = $user->getAbonne()->getTypeActionProduit();
  596.         $tabInfomation["id"] = $user->getId();
  597.         $tabInfomation["siExplotation"] = $user->getAbonne()->getSiExploitation();
  598.         $tabInfomation["etatUtilisateur"] = $user->getEtat();
  599.         if ($user->getAbonne()->getPartenaire() != null) {
  600.             $tabInfomation["partenaire"] = $user->getAbonne()->getPartenaire()->getUrlImage();
  601.         } else {
  602.             $tabInfomation["partenaire"] = "0";
  603.         }
  604.         $objetClient $clientRepository->findOneBy(["utilisateur" => $user]);
  605.         if ($objetClient != NULL)
  606.             $tabInfomation["codeGenereClient"] = $objetClient->getCodeGenere();
  607.         else
  608.             $tabInfomation["codeGenereClient"] = "";
  609.         //Envoyer la liste des agents Gebana
  610.         $tabInfomation["listeFournisseur"] = $listeFournisseur;
  611.         //Prendre le code du produicteur
  612.         $objetProducteur =  $producteurRepository->findOneBy(["utilisateur" => $user]);
  613.         if ($objetProducteur != null)
  614.             $codeProd $objetProducteur->getCodeGenere();
  615.         else
  616.             $codeProd 0;
  617.         $tabInfomation["prodCodeGenere"] = $codeProd;
  618.         if($user->getAbonne() != null && $user->getAbonne()->getTypeAbonne()->getId() != 4)
  619.             $user->setEtatConnecte(TRUE);
  620.         
  621.         $em->persist($user);
  622.         $em->flush();
  623.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  624.         $response = new Response($dataSend);
  625.         $response->headers->set('Content-Type''application/json');
  626.         //$this->logMessageddss .= ' [ USER ( ' . $email . ' ) BLOQUE TENTE DE SE CONNECTER ] ';
  627.         return $response;
  628.     }
  629.      /**
  630.      * Creates a new user entity.
  631.      *
  632.      * @Route("/me/producteur/info", name="api_me_producteur_info")
  633.      * @Method({"POST"})
  634.      */
  635.     public function apiMeProducteurInfoAction(
  636.         Request $request,
  637.         LoginManager $loginManager,
  638.         ParametreManager $parametreManager,
  639.         UtilsManager $utilsManager,
  640.         AbonneRepository $abonneRepository,
  641.         ProduitRepository $produitRepository,
  642.         FournisseurRepository $fournisseurRepository,
  643.         ParamRepository $paramRepository,
  644.         UtilisateurRepository $reposiUtil,
  645.         ConnexionRepository $connexionRepository,
  646.         ActionRepository $actionRepository,
  647.         UtilisateurRepository $utilisateurRepository,
  648.         ProducteurRepository $producteurRepository,
  649.         ClientRepository $clientRepository,
  650.         SurfaceAnneeRepository $surfaceAnneeRepository
  651.     ) {
  652.         $em $this->getDoctrine()->getManager();
  653.         $token $this->_tokenStorage->getToken();
  654.         if (!$token) {
  655.             return $this->json([
  656.                 'status' => 400,
  657.                 'user' => null
  658.             ], 400);
  659.         }
  660.         $user =   $token->getUser();
  661.         $listeFournisseur $fournisseurRepository->getAllFournisseurByType(1$user->getAbonne()->getId());
  662.         $queryResult $utilisateurRepository->findApiUtilisateur($user->getId());
  663.         //mettre que la personne est connectée.
  664.         if ($user->getEtatConnecte()) {
  665.             $tabInfomation["etatConnexion"] = false;
  666.         } else {
  667.             $tabInfomation["etatConnexion"] = true;
  668.         }
  669.         if ($user->getId() == 9553)
  670.             $tabInfomation["etatConnexion"] = true;
  671.         $tabInfomation["message"] = 'Connexion reussié !';
  672.         $tabInfomation["username"] = $user->getUsername();
  673.         $tabInfomation["nomPrenoms"] = $user->getNom() . " " $user->getPrenoms();
  674.         $tabInfomation["email"] = $user->getEmail();
  675.         $tabInfomation["idProfil"] = $user->getProfil()->getId();
  676.         $tabInfomation["siFournisseur"] = $user->getProfil()->getLieFournisseur();
  677.         $tabInfomation["adresse"] = $user->getAdresse();
  678.         $tabInfomation["telephone"] = $user->getTel1();
  679.         $tabInfomation["abonne"] = $user->getAbonne()->getId();
  680.         $tabInfomation["nomAbonne"] = $user->getAbonne()->getNom();
  681.         $tabInfomation["typeUtilisateur"] = $user->getTypeUtilisateur();
  682.         $tabInfomation["typeAbonne"] = $user->getAbonne()->getTypeAbonne()->getId();
  683.         $tabInfomation["typeActionProduit"] = $user->getAbonne()->getTypeActionProduit();
  684.         $tabInfomation["id"] = $user->getId();
  685.         $tabInfomation["siExplotation"] = $user->getAbonne()->getSiExploitation();
  686.         $tabInfomation["etatUtilisateur"] = $user->getEtat();
  687.         if ($user->getAbonne()->getPartenaire() != null) {
  688.             $tabInfomation["partenaire"] = $user->getAbonne()->getPartenaire()->getUrlImage();
  689.         } else {
  690.             $tabInfomation["partenaire"] = "0";
  691.         }
  692.         $objetClient $clientRepository->findOneBy(["utilisateur" => $user]);
  693.         if ($objetClient != NULL)
  694.             $tabInfomation["codeGenereClient"] = $objetClient->getCodeGenere();
  695.         else
  696.             $tabInfomation["codeGenereClient"] = "";
  697.         //Envoyer la liste des agents Gebana
  698.         $tabInfomation["listeFournisseur"] = $listeFournisseur;
  699.         //Prendre le code du produicteur
  700.         $objetProducteur =  $producteurRepository->findOneBy(["utilisateur" => $user]);
  701.         if ($objetProducteur != null){
  702.             $codeProd $objetProducteur->getCodeGenere();
  703.             $producteurId $objetProducteur->getId();
  704.         }else{
  705.             $codeProd 0;
  706.             $producteurId =0;
  707.         }
  708.         $tabInfomation["prodCodeGenere"] = $codeProd;
  709.         $tabInfomation[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew(0, array(), $niveau 3$prod 0$type 0$user->getAbonne()->getId(), $caisse 0$producteurId000);
  710.         $tabInfomation[0]["localisation"] = $fournisseurRepository->getAllFournisseurProducteurLocalisationAPINew(0, array(), $niveau 3$prod 0$type 0$user->getAbonne()->getId(), $caisse 0$producteurId000);
  711.         $tabInfomation[0]["image"] = $fournisseurRepository->getAllFournisseurProducteurImageAPINew(0, array(), $niveau 3$prod 0$type 0$user->getAbonne()->getId(), $caisse 0$producteurId000);
  712.         $tabInfomation[0]["intention"]= $surfaceAnneeRepository->getIntentionProducteurAnneeCompage($producteurId,$anneeCampagne=0);
  713.         $user->setEtatConnecte(TRUE);
  714.         $em->persist($user);
  715.         $em->flush();
  716.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  717.         $response = new Response($dataSend);
  718.         $response->headers->set('Content-Type''application/json');
  719.         //$this->logMessageddss .= ' [ USER ( ' . $email . ' ) BLOQUE TENTE DE SE CONNECTER ] ';
  720.         return $response;
  721.     }
  722.     
  723.     /**
  724.      * Creates a new user entity.
  725.      *
  726.      * @Route("/liste/mes/operations/{id}/{type}", name="api_liste_mes_operations")
  727.      * @Method({"GET","POST"})
  728.      */
  729.     public function listeApiMesOperationsAction(
  730.         Request $request,
  731.         $id,
  732.         $type,
  733.         FournisseurRepository $fournisseurRepository,
  734.         InfoLivrerRepository $infoLivrerRepository
  735.     ) {
  736.         $em $this->getDoctrine()->getManager();
  737.         $data $request->getContent();
  738.         $queryResult = [];
  739.         $this->initialisePreparationPayement($em);
  740.         $objetFournisseur $fournisseurRepository->find($id);
  741.         //if(count($objetFournisseur)!=0){
  742.         //$queryResult = $em->getRepository($this->stockBundle . 'Commande')-> getApiListeRechercheCommande($id, 0, 0, 0, 0, 0, 0, 0,20,1) ;       
  743.         //}
  744.         $queryResult $infoLivrerRepository
  745.             ->getApiRechercheProducteurLivraison(000000000$type);
  746.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  747.         $response = new Response($dataSend);
  748.         $response->headers->set('Content-Type''application/json');
  749.         return $response;
  750.     }
  751.     /**
  752.      * Creates a new user entity.
  753.      *
  754.      * @Route("/liste/deja/paye/mes/operations/{id}", name="api_liste_deja_paye_mes_operations")
  755.      * @Method({"GET","POST"})
  756.      */
  757.     public function listeApiDejaPayeMesOperationsAction(
  758.         Request $request,
  759.         $id,
  760.         FournisseurRepository $fournisseurRepository,
  761.         InfoLivrerRepository $infoLivrerRepository
  762.     ) {
  763.         $em $this->getDoctrine()->getManager();
  764.         $data $request->getContent();
  765.         $queryResult = [];
  766.         // $this->initialisePreparationPayement($em);
  767.         $objetFournisseur $fournisseurRepository->find($id);
  768.         //if(count($objetFournisseur)!=0){
  769.         //$queryResult = $em->getRepository($this->stockBundle . 'Commande')-> getApiListeRechercheCommande($id, 0, 0, 0, 0, 0, 0, 0,20,1) ;       
  770.         //}
  771.         $queryResult $infoLivrerRepository
  772.             ->getApiRechercheProducteurLivraison(0000020);
  773.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  774.         $response = new Response($dataSend);
  775.         $response->headers->set('Content-Type''application/json');
  776.         return $response;
  777.     }
  778.     /**
  779.      * Creates a new user entity.
  780.      *
  781.      * @Route("/liste/entrepot", name="api_liste_entrepots")
  782.      * @Method({"GET","POST"})
  783.      */
  784.     public function listeApiEntrepotAction(Request $requestEntrepotRepository $entrepotRepository)
  785.     {
  786.         $em $this->getDoctrine()->getManager();
  787.         $data $request->getContent();
  788.         $queryResult = [];
  789.         $queryResult $entrepotRepository->getListeEntrepot();
  790.         $dataSend =  $this->get('serializer')->serialize($queryResult'json');
  791.         $response = new Response($dataSend);
  792.         $response->headers->set('Content-Type''application/json');
  793.         return $response;
  794.     }
  795.     /**
  796.      * Creates a new user entity.
  797.      *
  798.      * @Route("/user/{id}", name="api_detail_user")
  799.      * @Method({"GET","POST"})
  800.      */
  801.     public function detailApiUserAction(Request $request$idUtilisateurRepository $utilisateurRepository)
  802.     {
  803.         $em $this->getDoctrine()->getManager();
  804.         $data $request->getContent();
  805.         $queryResult $utilisateurRepository->findApiUtilisateur($id);
  806.         $dataSend =  $this->get('serializer')->serialize($queryResult'json');
  807.         $response = new Response($dataSend);
  808.         $response->headers->set('Content-Type''application/json');
  809.         return $response;
  810.     }
  811.     /**
  812.      * Creates a new user entity.
  813.      *
  814.      * @Route("/detail/producteur/{id}", name="api_detail_detail_producteur")
  815.      * @Method({"GET","POST"})
  816.      */
  817.     public function detailApiProducteurAction(Request $request$idProducteurRepository $producteurRepository)
  818.     {
  819.         $em $this->getDoctrine()->getManager();
  820.         $data $request->getContent();
  821.         $queryResult $producteurRepository->getDetailProducteur($id);
  822.         $dataSend =  $this->get('serializer')->serialize($queryResult'json');
  823.         $response = new Response($dataSend);
  824.         $response->headers->set('Content-Type''application/json');
  825.         return $response;
  826.     }
  827.     /**
  828.      * Creates a new user entity.
  829.      *
  830.      * @Route("/save/fournisseur/achat", name="api_save_fournisseur_achat")
  831.      * @Method({"GET","POST"})
  832.      */
  833.     public function saveFournisseurAchatAction(
  834.         Request $request,
  835.         ProduitRepository $produitRepository,
  836.         AnneeCampagneRepository $anneeCampagneRepository,
  837.         CommandeRepository $commandeRepository,
  838.         SurfaceAnneeRepository $surfaceAnneeRepository,
  839.         ProducteurRepository $producteurRepository,
  840.         UtilisateurRepository $utilisateurRepository,
  841.         LigneCommandeRepository $ligneCommandeRepository,
  842.         EntrepotRepository $entrepotRepository,
  843.         PrixRigueurRepository $prixRigueurRepository,
  844.         LivrerRepository $livrerRepository,
  845.         ProducteurLivraisonRepository $producteurLivraisonRepository,
  846.         VilleRepository $villeRepository,
  847.         SurfaceRepository $surfaceRepository,
  848.         FournisseurRepository $fournisseurRepository,
  849.         LocalisationRepository $localisationRepository,
  850.         SurfaceAbonneRepository  $surfaceAbonneRepository,
  851.         ProducteurAbonneRepository $producteurAbonneRepository,
  852.         InfoLivrerRepository $infoLivrerRepository
  853.     ) {
  854.         $em $this->getDoctrine()->getManager();
  855.         //$data = $request->getContent();
  856.         $em->getConnection()->beginTransaction();
  857.         $responce true;
  858.         try {
  859.             $tab = array();
  860.             $parameters json_decode($request->getContent(), true);
  861.             $quantitePese trim($parameters['quantite_pese']); // email saisie
  862.             $quantiteReelle trim($parameters['quantite_reelle']); // email saisie
  863.             $prodCodeGenere trim($parameters['prodCodeGenere']); // email saisie
  864.             $nomEntrepot trim($parameters['entrepot']); // email saisie
  865.             $paiementType trim($parameters['paiementType']); // email saisie
  866.             $produit trim($parameters['produitId']); // email saisie
  867.             $producteurId trim($parameters['producteurId']); // email saisie
  868.             $active 1;
  869.             $objetProduit $produitRepository->find($produit);
  870.             $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit->getProduit(), "etatAnneeCampagne" => 1));
  871.             if ($objetAnneeCampagne == null) {
  872.                 $anneecampagne_id 0;
  873.             } else {
  874.                 $anneecampagne_id $objetAnneeCampagne->getId(); //$request->request->get('entrepot');
  875.             }
  876.             $util $request->request->get('idUtil');
  877.             $lignecommande_id $request->request->get('lignecommande_id');
  878.             $codeGenere $request->request->get('codeGenere');
  879.             $parCodeGenere $request->request->get('parCodeGenere');
  880.             $tab[0] = $quantitePese;
  881.             $tab[0] = $quantitePese;
  882.             $montant 0//$request->request->get('montant');
  883.             $tab[1] = $prodCodeGenere;
  884.             $tab[2] = $parCodeGenere;
  885.             $tab[3] = $util;
  886.             $tab[4] = $util;
  887.             $tab[6] = $produit;
  888.             $tab[5] = $request->request->get('codeGenere');  //$request->request->get('codeGenere');            
  889.             $donnee $quantitePese "#" $quantiteReelle "#" $montant "#" $prodCodeGenere "#" $nomEntrepot  "#" $paiementType  "#" $util "#" $lignecommande_id "#" $codeGenere;
  890.             $ligneCommande $commandeRepository->getLigneCommandeOperation($producteurId$anneecampagne_id);
  891.             $d = new \DateTime();
  892.             $an $d->format('Y');
  893.             $m $d->format('m');
  894.             $j $d->format('d');
  895.             if ($ligneCommande != NULL) {
  896.                 $ligneCommande $ligneCommande[0];
  897.             } else {
  898.                 $ligneCommande $this->saveLigneCommande(
  899.                     $em,
  900.                     $tab,
  901.                     $produitRepository,
  902.                     $villeRepository,
  903.                     $surfaceRepository,
  904.                     $commandeRepository,
  905.                     $prixRigueurRepository,
  906.                     $utilisateurRepository,
  907.                     $producteurRepository,
  908.                     $anneeCampagneRepository,
  909.                     $fournisseurRepository,
  910.                     $surfaceAnneeRepository,
  911.                     $localisationRepository,
  912.                     $surfaceAbonneRepository,
  913.                     $producteurAbonneRepository
  914.                 );
  915.             }
  916.             $refCommande $this->getRefCommandeSoja($em1$an$m$entite 'LIVRER'$taille 51);
  917.             //Creation de l'objet fournisseur
  918.             $objetUtilisateur $utilisateurRepository->find($util);
  919.             $objetFournisseur $fournisseurRepository->findOneBy(array('utilisateur' => $objetUtilisateur));
  920.             $objetUtil $utilisateurRepository->find($util);
  921.             $objetLigneCommande $ligneCommandeRepository->find($lignecommande_id);
  922.             $objetProducteur $producteurRepository->findOneBy(array("codeGenere" => $prodCodeGenere"abonne" => $objetUtilisateur->getAbonne()));
  923.             $objetParcelle $surfaceAnneeRepository->findOneBy(array("codeGenere" => $parCodeGenere"abonne" => $objetUtilisateur->getAbonne()));
  924.             $objetEntrepot $entrepotRepository->findOneBy(array("nomEntrepot" => $nomEntrepot));
  925.             $objetPrix $prixRigueurRepository->findOneBy(array("produit" => $objetProduit"typePrixRigueur" => 1"etatPrixRigueur" => 1));
  926.             $objetInfoLivrer $infoLivrerRepository->findOneBy(array("codeGenere" => $codeGenere));
  927.             if ($objetInfoLivrer == null) {
  928.                 $objetInfoLivrer = new InfoLivrer();
  929.             }
  930.             //Enregestre ces données comme livraison                        
  931.             $objetInfoLivrer->setNbreTotalLivre($quantiteReelle);
  932.             $objetInfoLivrer->setNbreSaisie($quantitePese);
  933.             $objetInfoLivrer->setRefBonLivraison("L" $refCommande);
  934.             $objetInfoLivrer->setRefBonReception("L" $refCommande);
  935.             $objetInfoLivrer->setFournisseur($objetFournisseur);
  936.             $objetInfoLivrer->setSiModification($active);
  937.             $objetInfoLivrer->setPrixrigueur($objetPrix);
  938.             $objetInfoLivrer->setAnneecampagne($objetAnneeCampagne);
  939.             $objetInfoLivrer->setCodeGenere($codeGenere);
  940.             $objetInfoLivrer->setSurfaceannee($objetParcelle);
  941.             $objetInfoLivrer->setTypeInfoLivrer($produit);
  942.             $objetInfoLivrer->setTypePayement($paiementType);
  943.             $objetInfoLivrer->setVariete($objetProduit);
  944.             $em->persist($objetInfoLivrer);
  945.             $em->flush($objetInfoLivrer);
  946.             $objetLivrer $livrerRepository->findOneBy(array("infolivrer" => $objetInfoLivrer));
  947.             if ($objetLivrer == null) {
  948.                 $objetLivrer = new Livrer();
  949.             }
  950.             $objetLivrer->setNbreLivre($quantiteReelle);
  951.             $objetLivrer->setNbreReste(0);
  952.             $objetLivrer->setRefBonLivraison("L" $refCommande);
  953.             $objetLivrer->setRefBonReception("L" $refCommande);
  954.             $objetLivrer->setLignecommande($ligneCommande);
  955.             $objetLivrer->setInfolivrer($objetInfoLivrer);
  956.             //$objetLivrer->setEntrepot($objetEntrepot); 
  957.             $em->persist($objetLivrer);
  958.             $em->flush($objetLivrer);
  959.             $producteurLivraison  $producteurLivraisonRepository->findOneBy(array("infolivrer" => $objetInfoLivrer"producteur" => $objetProducteur));
  960.             if ($producteurLivraison == null) {
  961.                 $producteurLivraison = new ProducteurLivraison();
  962.             }
  963.             $producteurLivraison->setProducteur($objetProducteur);
  964.             $producteurLivraison->setInfolivrer($objetInfoLivrer);
  965.             $em->persist($producteurLivraison);
  966.             $em->flush($producteurLivraison);
  967.             $objetProducteur->setSiModification($active);
  968.             $em->persist($objetProducteur);
  969.             $em->flush($objetProducteur);
  970.             $this->addHistoriqueAction($em"ProducteurAchat"1$codeGenere$objetUtil->getId(), $objetProducteur->getId(), 1$donnee$utilisateurRepository);
  971.             $em->getConnection()->commit();
  972.         } catch (\Exception $e) {
  973.             $responce false;
  974.             $em->getConnection()->rollBack();
  975.             throw $e;
  976.         }
  977.         //Envoi des donnée
  978.         $dataSend =  $this->get('serializer')->serialize(array('server_response' => true), 'json');
  979.         $response = new Response($dataSend);
  980.         $response->headers->set('Content-Type''application/json');
  981.         return $response;
  982.     }
  983.     /**
  984.      * Creates a new user entity.
  985.      *
  986.      * @Route("/save/fournisseur/semence", name="api_save_producteur_semence")
  987.      * @Method({"GET","POST"})
  988.      */
  989.     public function saveFournisseurSemenceAction(Request $request)
  990.     {
  991.         $responce true;
  992.         $em $this->getDoctrine()->getManager();
  993.         $data $request->getContent();
  994.         $parameters json_decode($request->getContent(), true);; // email saisie
  995.         $tab[0] = trim($parameters['val_surface']);
  996.         $montant 0//$request->request->get('montant');
  997.         $tab[1] = trim($parameters['prodCodeGenere']);
  998.         $tab[2] = trim($parameters['parCodeGenere']);
  999.         $tab[3] = trim($parameters['idUtil']);
  1000.         $tab[4] = trim($parameters['idFournisseur']);
  1001.         $tab[6] = 1;
  1002.         $tab[5] = trim($parameters['codeGenere']);  //$request->request->get('codeGenere');            
  1003.         $this->saveLigneCommande($em$tab,  $objetInfoLivrer$objetCommande$objetProduit$objetPrixRigueur$quantite$idLigneCommande 0$etat 1);
  1004.         //Envoi des donnée
  1005.         $dataSend =  $this->get('serializer')->serialize(array('server_response' => $responce), 'json');
  1006.         $response = new Response($dataSend);
  1007.         $response->headers->set('Content-Type''application/json');
  1008.         return $response;
  1009.     }
  1010.     /**
  1011.      * Creates a new user entity.
  1012.      *
  1013.      * @Route("/save/fournisseur/intention", name="api_save_producteur_intention")
  1014.      * @Method({"GET","POST"})
  1015.      */
  1016.     public function saveFournisseurIntentionAction(
  1017.         Request $request,
  1018.         ProduitRepository $produitRepository,
  1019.         VilleRepository $villeRepository,
  1020.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1021.         ProducteurRepository $producteurRepository,
  1022.         UtilisateurRepository $utilisateurRepository,
  1023.         SurfaceRepository $surfaceRepository,
  1024.         AnneeCampagneRepository $anneeCampagneRepository,
  1025.         PrixRigueurRepository $prixRigueurRepository,
  1026.         SurfaceAnneeHistoriqueRepository $surfaceAnneeHistoriqueRepository,
  1027.         ProduitAbonneRepository $produitAbonneRepository
  1028.     ) {
  1029.         $responce true;
  1030.         $em $this->getDoctrine()->getManager();
  1031.         //$data = $request->getContent();
  1032.         $em->getConnection()->beginTransaction();
  1033.         try {
  1034.             $parameters json_decode($request->getContent(), true);
  1035.             $valSurface trim($parameters['valSurface']); // email saisie
  1036.             $prodCodeGenere trim($parameters['prodCodeGenere']);
  1037.             $codeGenere trim($parameters['codeGenere']);
  1038.             $codeParcelle trim($parameters['codeParcelle']);
  1039.             $typeParcelle trim($parameters['typeParcelle']);
  1040.             $explCodeGenere trim($parameters['explCodeGenere']);
  1041.             $idVille trim($parameters['idVille']);
  1042.             $idUtil trim($parameters['idUtil']);
  1043.             $idVariete trim($parameters['idVariete']);
  1044.             $donnee $valSurface "#" $prodCodeGenere "#" $codeGenere "#" $codeParcelle "#" $idVille  "#" $idVariete "#0#" $idUtil "#" $explCodeGenere "#" $typeParcelle "#0#0#3";
  1045.             //$produit =2;
  1046.             $objetProduit $produitRepository->find($idVariete);
  1047.             $objetVille $villeRepository->find($idVille);
  1048.             $objetUtilisateur $utilisateurRepository->find($idUtil);
  1049.             $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit->getProduit(), "etatAnneeCampagne" => 1));
  1050.             //$anneecampagne_id = 
  1051.             //$campagne_id = $objetAnneeCampagne->getId();//$request->request->get('producteur_id');    
  1052.             //$campagne_id = 1;//$request->request->get('producteur_id');         
  1053.             //Creation de l'objet fournisseur
  1054.             // $objetAnneeCampagne = $em->getRepository($this->prodBundle . 'AnneeCampagne')->find($campagne_id) ; 
  1055.             //$objetProducteur = $em->getRepository($this->prodBundle . 'Producteur')->find($producteur_id) ; 
  1056.             $objetProducteur $producteurRepository->findOneBy(array("codeGenere" => $prodCodeGenere"abonne" => $objetUtilisateur->getAbonne()));
  1057.             $objetExploitation $surfaceAnneeRepository->findOneBy(array("codeSurface" => $explCodeGenere"abonne" => $objetUtilisateur->getAbonne()));
  1058.             $objetSurface $surfaceRepository->findOneBy(array('valSurface' => $valSurface));
  1059.             //Tester si la surface existe deja
  1060.             $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $codeGenere'anneecampagne' => $objetAnneeCampagne));
  1061.             $siPrincipale 0;
  1062.             $newAdd 1;
  1063.             if ($objetSurfaceAnnee == null) {
  1064.                 $objetSurfaceAnnee = new SurfaceAnnee();
  1065.                 $siPrincipale 1;
  1066.                 $newAdd 0;
  1067.             }
  1068.             $objetSurfaceAnnee->setSuperficie($valSurface);
  1069.             $objetSurfaceAnnee->setCodeParcelle($codeParcelle);
  1070.             $objetSurfaceAnnee->setCodeSurface($codeParcelle);
  1071.             $objetSurfaceAnnee->setCodeGenere($codeGenere);
  1072.             $objetSurfaceAnnee->setVille($objetVille);
  1073.             if ($objetAnneeCampagne != null) {
  1074.                 $objetSurfaceAnnee->setAnneeCampagne($objetAnneeCampagne);
  1075.             }
  1076.             $objetSurfaceAnnee->setProduit($objetProduit);
  1077.             $objetSurfaceAnnee->setSurface($objetSurface);
  1078.             $objetSurfaceAnnee->setProducteur($objetProducteur);
  1079.             $objetSurfaceAnnee->setUtilisateur($objetUtilisateur);
  1080.             $objetSurfaceAnnee->setTypeParcelle($typeParcelle);
  1081.             if ($objetExploitation != null)
  1082.                 $objetSurfaceAnnee->setSurfaceannee($objetExploitation);
  1083.             $objetSurfaceAnnee->setAbonne($objetUtilisateur->getAbonne());
  1084.             $objetSurfaceAnnee->setProdCodeGenere($prodCodeGenere);
  1085.             $em->persist($objetSurfaceAnnee);
  1086.             $em->flush($objetSurfaceAnnee);
  1087.             //le mettre dans l'historique
  1088.             /*$objetSurfaceAnneeHistorique = new SurfaceAnneeHistorique();
  1089.             $objetSurfaceAnneeHistorique->setAnneeCampagne($objetAnneeCampagne);
  1090.             $objetSurfaceAnneeHistorique->setSurfaceAnnee($objetSurfaceAnnee);
  1091.             $em->persist($objetSurfaceAnneeHistorique);
  1092.             $em->flush($objetSurfaceAnneeHistorique);    */
  1093.             //recuparation des abonnee lie au partenaires
  1094.             if($newAdd == 0){
  1095.                 if ($objetUtilisateur->getAbonne() != null) {
  1096.                     if ($objetUtilisateur->getAbonne()->getPartenaire() != null && $objetUtilisateur->getAbonne()->getSiPrincipale()) {
  1097.                         $listeAbonnePartenaire $produitAbonneRepository->findBy(array("produit" => $objetProduit));
  1098.                         foreach ($listeAbonnePartenaire as $unAbonnePartenaire) {
  1099.                             $this->setAbonnePartenaire($em$unAbonnePartenaire->getAbonne(), $unAbonnePartenaire->getPartenaire(), $objetSurfaceAnnee$typeObjet 3$siPrincipale);
  1100.                         }
  1101.                     } else {
  1102.                         
  1103.                             $this->setAbonnePartenaire($em$objetSurfaceAnnee->getAbonne(), $objetSurfaceAnnee->getAbonne()->getPartenaire(), $objetSurfaceAnnee$typeObjet 3$siPrincipale);
  1104.                     }
  1105.                 }
  1106.             }
  1107.             $this->insertSurfaceAnneeHistorique($em$objetSurfaceAnnee$objetAnneeCampagne$surfaceAnneeHistoriqueRepository);
  1108.             /*
  1109.             $objetSurfaceAnnee = $em->getRepository($this->prodBundle . 'SurfaceAnnee')
  1110.                                 ->findOneBy(array('anneecampagne'=>$objetAnneeCampagne,'producteur'=>$objetProducteur, )) ;    
  1111.             if(count($objetSurfaceAnnee)== 0 ){                   
  1112.                     $objetSurfaceAnnee = new SurfaceAnnee();
  1113.                     $objetSurface = $this->saveSurfaceAnnee($em,$objetSurfaceAnnee,$objetAnneeCampagne,$objetSurface,$objetProduit,$objetProducteur,$codeGenere);                                      
  1114.             }else{
  1115.                     $objetSurface = $this->saveSurfaceAnnee($em,$objetSurfaceAnnee,$objetAnneeCampagne,$objetSurface,$objetProduit,$objetProducteur,$codeGenere); 
  1116.             }
  1117.             //Mettre Ã  jour l'état intention
  1118.             $objetProducteur->setSiIntention(1);
  1119.             $em->persist($objetProducteur);
  1120.             $em->flush($objetProducteur);
  1121.             //sauvegarder les données dans la table détail
  1122.             $objetDetailSurface = new DetailSurface();
  1123.             $objetDetailSurface->setValSurface($valSurface);
  1124.             $objetDetailSurface->setSurfaceannee($objetSurface);
  1125.             $em->persist($objetDetailSurface);
  1126.             $em->flush($objetDetailSurface);*/
  1127.             $this->addHistoriqueAction($em'ProducteurIntention'1$codeGenere$idUtil$objetProducteur->getId(), 1$donnee$utilisateurRepository);
  1128.             $em->getConnection()->commit();
  1129.         } catch (\Exception $e) {
  1130.             $tabInfomation["etat"] = false;
  1131.             $em->getConnection()->rollBack();
  1132.             throw $e;
  1133.         }
  1134.         //Envoi des donnée
  1135.         $tabInfomation["etat"] = true;
  1136.         $tabInfomation["codeGenere"] = $parameters['codeGenere'];
  1137.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1138.         $response = new Response($dataSend);
  1139.         $response->headers->set('Content-Type''application/json');
  1140.         return $response;
  1141.     }
  1142.     /**
  1143.      * Creates a new user entity.
  1144.      *
  1145.      * @Route("/save/achat/sac", name="api_save_achat_sac")
  1146.      * @Method({"GET","POST"})
  1147.      */
  1148.     public function saveAchatSacAction(
  1149.         Request $request,
  1150.         ProduitRepository $produitRepository,
  1151.         VilleRepository $villeRepository,
  1152.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1153.         LivrerRepository $livrerRepository,
  1154.         ProducteurRepository $producteurRepository,
  1155.         UtilisateurRepository $utilisateurRepository,
  1156.         SurfaceRepository $surfaceRepository,
  1157.         AnneeCampagneRepository $anneeCampagneRepository,
  1158.         PrixRigueurRepository $prixRigueurRepository,
  1159.         SacRepository $sacRepository
  1160.     ) {
  1161.         $responce true;
  1162.         $em $this->getDoctrine()->getManager();
  1163.         //$data = $request->getContent();
  1164.         $em->getConnection()->beginTransaction();
  1165.         try {
  1166.             //Recupération des données utilisateur
  1167.             $parameters json_decode($request->getContent(), true);
  1168.             $quantite trim($parameters['quantite']); // email saisie
  1169.             $codeSac trim($parameters['codeSac']); // email saisie
  1170.             $codeGenere trim($parameters['codeGenere']); // email saisie
  1171.             $achatCodeGenere trim($parameters['achatCodeGenere']); // email saisie
  1172.             $prodCodeGenere trim($parameters['prodCodeGenere']); // email saisie
  1173.             $idUtil trim($parameters['idUtil']); // email saisie
  1174.             //Reception des information sur le Sac 
  1175.             $objetSac $sacRepository->findOneBy(array('codeSac' => $codeSac));
  1176.             $donnee $quantite "#" $codeSac "#" $codeGenere "#L" $achatCodeGenere "#" $idUtil;
  1177.             //$objetCodeBarre = $em->getRepository($this->stockBundle . 'CodeBarre')->findOneBy(array("codeBarre"=>$codeSac)) ; 
  1178.             $objetUtilisateur $utilisateurRepository->find($idUtil);
  1179.             $objetInfoLivrer $objetSac->getInfolivrer(); //$em->getRepository($this->stockBundle . 'InfoLivrer')->findOneBy(array('refBonLivraison'=>$achatCodeGenere, 'abonne'=>$objetUtilisateur->getAbonne())) ;   
  1180.             $objetParcelle $surfaceAnneeRepository->findOneBy(array('codeGenere' => $prodCodeGenere));
  1181.             //$objetProducteur = $objetParcelle->getProducteur();    
  1182.             //Creer la ligne  de la commande
  1183.             $objetLivrer $livrerRepository->findOneBy(array("infolivrer" => $objetInfoLivrer'producteur' => $objetProducteur));
  1184.             if ($objetLivrer == null)
  1185.                 $objetLivrer = new Livrer();
  1186.             //$objetLivrer->setNombreSac($quantite); 
  1187.             $objetLivrer->setRefBonLivraison($achatCodeGenere);
  1188.             $objetLivrer->setRefBonReception($achatCodeGenere);
  1189.             $objetLivrer->setInfolivrer($objetInfoLivrer);
  1190.             $objetLivrer->setSurfaceannee($objetParcelle);
  1191.             $objetLivrer->setNbreLivre($quantite);
  1192.             $objetLivrer->setNbreReste(0);
  1193.             $em->persist($objetLivrer);
  1194.             $em->flush($objetLivrer);
  1195.             //$objetSac = $em->getRepository($this->stockBundle . 'Sac')->findOneBy(array('codeGenere'=>$codeGenere, "infolivrer"=>$objetInfoLivrer)) ;
  1196.             //$objetSac = new Sac();
  1197.             if ($objetSac != null) {
  1198.                 $objetSac->setNombreSac($quantite);
  1199.                 $objetSac->setCodeSac($codeSac);
  1200.                 $objetSac->setCodeGenere($codeGenere);
  1201.                 $objetSac->setInfolivrer($objetInfoLivrer);
  1202.                 $objetSac->setLivrer($objetLivrer);
  1203.                 $objetSac->setUtilisateur($objetUtilisateur);
  1204.                 $em->persist($objetSac);
  1205.                 $em->flush($objetSac);
  1206.             }
  1207.             $this->addHistoriqueAction($em'AchatSac'1$codeGenere111$donnee$utilisateurRepository);
  1208.             $em->getConnection()->commit();
  1209.         } catch (\Exception $e) {
  1210.             $responce false;
  1211.             $em->getConnection()->rollBack();
  1212.             throw $e;
  1213.         }
  1214.         //Envoi des donnée
  1215.         $tabInfomation["etat"] = true;
  1216.         $tabInfomation["codeGenere"] = $parameters['codeGenere'];
  1217.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1218.         $response = new Response($dataSend);
  1219.         $response->headers->set('Content-Type''application/json');
  1220.         return $response;
  1221.     }
  1222.     /**
  1223.      * Creates a new user entity.
  1224.      *
  1225.      * @Route("/payement/mes/operations", name="api_payement_operation")
  1226.      * @Method({"GET","POST"})
  1227.      */
  1228.     public function payementOperationAction(
  1229.         Request $request,
  1230.         OperationManager $operationManager,
  1231.         ProduitRepository $produitRepository,
  1232.         VilleRepository $villeRepository,
  1233.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1234.         InfoLivrerRepository $infoLivrerRepository,
  1235.         ProducteurRepository $producteurRepository,
  1236.         UtilisateurRepository $utilisateurRepository,
  1237.         SurfaceRepository $surfaceRepository,
  1238.         AnneeCampagneRepository $anneeCampagneRepository,
  1239.         CaisseRepository $caisseRepository
  1240.     ) {
  1241.         $responce true;
  1242.         $em $this->getDoctrine()->getManager();
  1243.         //$operationManager = $this->get('operation_manager');
  1244.         //$data = $request->getContent();
  1245.         $em->getConnection()->beginTransaction();
  1246.         try {
  1247.             //Recupération des données utilisateur
  1248.             //$montantOperation = 
  1249.             $telephone $request->request->get('telephone');
  1250.             $piece =  $request->request->get('message');
  1251.             $numeroTransation $request->request->get('numeroTransation');
  1252.             $produit 2;
  1253.             $objetProduit $produitRepository->find($produit);
  1254.             $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit"etatAnneeCampagne" => 1));
  1255.             //$anneecampagne_id = 
  1256.             $campagne_id $objetAnneeCampagne->getId(); //$request->request->get('producteur_id');    
  1257.             //$campagne_id = 1;
  1258.             //$request->request->get('producteur_id');         
  1259.             //Creation de l'objet fournisseur
  1260.             //Prendre le fournisseur par son numero de téléphone
  1261.             $objetUtilisateur $utilisateurRepository->findOneBy(array("tel1" => $telephone));
  1262.             $objetProducteur $producteurRepository->findOneBy(array("utilisateur" => $objetUtilisateur));
  1263.             $objetProducteur $producteurRepository->findOneBy(array("utilisateur" => $objetUtilisateur));
  1264.             $objetInfoLivrer $infoLivrerRepository->findOneBy(array("etatPayement" => 1));
  1265.             $objetInfoLivrerMondif $infoLivrerRepository->find($objetInfoLivrer->getId());
  1266.             $idTypeOp 1;
  1267.             $idVille 1//$objetUtilisateur->getVille()->getId();
  1268.             //Recuperation  de la caisse de la ville de l'utilisateur
  1269.             $tabCompteId =  $operationManager->getCompteVille($em$idVille$villeRepository$caisseRepository);
  1270.             //recuperation de l'identifiant du produit
  1271.             $idProduit 2;
  1272.             $idTypeOp \Types\stock\TypeStock::TYPEOPERACHATCACAO;
  1273.             $montantEsp $request->request->get('montantOperation');
  1274.             $tabCompteMontant $operationManager->getRecuperationCompte($em$idTypeOp$montantEsp$typeOperationRepository);
  1275.             $compteAuxi $tabCompteId['compte'];
  1276.             $infoDepo 'Paiement Tmoney Ã  ' $objetUtilisateur->getNom();
  1277.             $d = new \DateTime(); //$sessionData['dateChoisie'];
  1278.             $dateChoisie $d->format('Y/m/d H:i:s');
  1279.             //var_dump($objetInfoLivrer->getId());exit;
  1280.             $operationManager->geneLigneOperationComptable(Null$tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telephone$numeroTransation''$tabCompteMontant['compte'], $idTypeOp$piece$nomCompte ''$typePaie 1$idProduit 2$compteAuxi$dateChoisie$idVille\Types\stock\TypeStock::OPERATIONAVANCE$objetInfoLivrer->getId(), null$utilisateurRepository$caisseRepository);
  1281.             $objetInfoLivrerMondif->setSiPayement(2);
  1282.             $em->persist($objetInfoLivrerMondif);
  1283.             $em->flush($objetInfoLivrerMondif);
  1284.             $em->getConnection()->commit();
  1285.         } catch (\Exception $e) {
  1286.             $responce false;
  1287.             $em->getConnection()->rollBack();
  1288.             throw $e;
  1289.         }
  1290.         //Envoi des donnée
  1291.         $dataSend =  $this->get('serializer')->serialize(array('server_response' => $responce), 'json');
  1292.         $response = new Response($dataSend);
  1293.         $response->headers->set('Content-Type''application/json');
  1294.         return $response;
  1295.     }
  1296.     /**
  1297.      * Creates a new user entity.
  1298.      *
  1299.      * @Route("/initiliser/achat", name="api_initialisation_achat")
  1300.      * @Method({"GET","POST"})
  1301.      */
  1302.     public function initialiserAchatAction(
  1303.         Request $request,
  1304.         OperationManager $operationManager,
  1305.         ProduitRepository $produitRepository,
  1306.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1307.         InfoLivrerRepository $infoLivrerRepository,
  1308.         AnneeCampagneRepository $anneeCampagneRepository
  1309.     ) {
  1310.         $responce true;
  1311.         $em $this->getDoctrine()->getManager();
  1312.         //$data = $request->getContent();
  1313.         $em->getConnection()->beginTransaction();
  1314.         try {
  1315.             //Recupération des données utilisateur
  1316.             //$montantOperation = 
  1317.             $refAchat $request->request->get('refAchat');
  1318.             $produit 2;
  1319.             $objetProduit $produitRepository->find($produit);
  1320.             $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit"etatAnneeCampagne" => 1));
  1321.             //$anneecampagne_id = 
  1322.             $campagne_id $objetAnneeCampagne->getddId(); //$request->request->get('producteur_id');    
  1323.             //$campagne_id = 1;                        
  1324.             //$request->request->get('producteur_id');         
  1325.             //Creation de l'objet fournisseur
  1326.             //Prendre le fournisseur par son numero de téléphone
  1327.             $objetInfoLivrer $infoLivrerRepository->findOneBy(array("refBonReception" => $refAchat));
  1328.             if ($objetInfoLivrer != null) {
  1329.                 $objetInfoLivrer->setEtatPayement(1);
  1330.                 $em->persist($objetInfoLivrer);
  1331.                 $em->flush($objetInfoLivrer);
  1332.                 $responce "ok";
  1333.             } else {
  1334.                 $responce "nok";
  1335.             }
  1336.             $em->getConnection()->commit();
  1337.         } catch (\Exception $e) {
  1338.             $responce "nok";
  1339.             $em->getConnection()->rollBack();
  1340.             throw $e;
  1341.         }
  1342.         //Envoi des donnée
  1343.         $dataSend =  $this->get('serializer')->serialize(array('server_response' => $responce), 'json');
  1344.         $response = new Response($dataSend);
  1345.         $response->headers->set('Content-Type''application/json');
  1346.         return $response;
  1347.     }
  1348.     /**
  1349.      * Creates a new user entity.
  1350.      *
  1351.      * @Route("/liste/mes/new/producteurs/{id}/{profil}/{ville}/{type}", name="api_liste_mes_new_producteurs")
  1352.      * @Method({"POST"})
  1353.      */
  1354.     public function listeApiMesProducteursNewAction(
  1355.         Request $request,
  1356.         $id,
  1357.         $profil,
  1358.         $ville,
  1359.         $type,
  1360.         ClientRepository $clientRepository,
  1361.         ProducteurRepository $producteurRepository,
  1362.         UtilisateurRepository $utilisateurRepository,
  1363.         ProduitRepository $produitRepository,
  1364.         TableRepository $tableRepository,
  1365.         ZoneProducteurRepository $zoneProducteurRepository,
  1366.         PrixRigueurRepository $prixRigueurRepository,
  1367.         ProducteurGroupementRepository $producteurGroupementRepository,
  1368.         VilleRepository $villeRepository,
  1369.         AnneeCampagneRepository $anneeCampagneRepository,
  1370.         SacRepository $sacRepository,
  1371.         ImageRepository $imageRepository,
  1372.         SeTrouverRepository $seTrouverRepository,
  1373.         InfoLivrerRepository $infoLivrerRepository,
  1374.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1375.         FournisseurRepository $fournisseurRepository,
  1376.         InspectionRepository $inspectionRepository,
  1377.         EntrepotRepository $entrepotRepository,
  1378.         TypeOperationRepository $typeOperationRepository,
  1379.         CategorieProduitRepository $categorieProduitRepository,
  1380.         GroupementRepository $groupementRepository,
  1381.         EvenementRepository $evenementRepository,
  1382.         ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository,
  1383.         TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,
  1384.         CategorieQuestionInspectionRepository $categorieQuestionInspectionRepository,
  1385.         ReponseQuestionInspectionRepository $reponseQuestionInspectionRepository,
  1386.         CommandeRepository $commandeRepository,
  1387.         AbonneRepository $abonneRepository,
  1388.         ProgrammeRepository $programmeRepository,
  1389.         PlanteRepository $planteRepository,
  1390.         ArticleRepository $articleRepository,
  1391.         RubriqueRepository $rubriqueRepository,
  1392.         TransformationRepository $transformationRepository,
  1393.         EtapeProcessusRepository $etapeProcessusRepository,
  1394.         QuestionInspectionRepository $questionInspectionRepository,
  1395.         ProduitTypeOperationRepository $produitTypeOperationRepository
  1396.     ) {
  1397.         $token $this->_tokenStorage->getToken();
  1398.         if (!$token) {
  1399.             return $this->json([
  1400.                 'status' => 400,
  1401.                 'user' => null
  1402.             ], 400);
  1403.         }
  1404.         $em $this->getDoctrine()->getManager();
  1405.         $data $request->getContent();  //$request->get('id')
  1406.         $dateJour = new \DateTime();
  1407.         $objetUtilisateur =   $token->getUser(); //$utilisateurRepository->find($id) ;
  1408.         $objetAgent $fournisseurRepository->findOneBy(['utilisateur' => $objetUtilisateur]);
  1409.         /*    if($objetAgent ==null){  
  1410.             $id=0;
  1411.             $idville = $ville;
  1412.             $objetVille = $em->getRepository($this->stockBundle . 'Ville')->find($ville);
  1413.             $tabVille[0]= $em->getRepository($this->stockBundle . 'SeTrouver')->findOneBy(array("ville"=>$objetVille));
  1414.             if( $ville ==0){
  1415.                 $tabVille= $em->getRepository($this->stockBundle . 'SeTrouver')->findBy(array("fournisseur"=>$objetAgent));                    
  1416.             }
  1417.         }else{
  1418.             $id = 0;    
  1419.             //$idville = $objetAgent->getVille()->getId();
  1420.             $tabVille = $em->getRepository($this->stockBundle . 'SeTrouver')->findBy(array("fournisseur"=>$objetAgent));
  1421.             
  1422.         }*/
  1423.         $tabVille = array();
  1424.         $groupementId 0;
  1425.         $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$objetUtilisateur->getAbonne(), $abonneRepository));
  1426.         $objetProducteur $producteurRepository->findOneBy(array("utilisateur" => $objetUtilisateur));
  1427.         if ($objetUtilisateur->getTypeUtilisateur() == or $objetUtilisateur->getTypeUtilisateur() == 3) {
  1428.             $id 0;
  1429.             $tabVille $zoneProducteurRepository->findBy(array("producteur" => $objetProducteur));
  1430.             if ($objetUtilisateur->getTypeUtilisateur() == 3) {
  1431.                 $objetProducteurGroupement $producteurGroupementRepository->findOneBy(array("producteur" => $objetProducteur));
  1432.                 if ($objetProducteurGroupement->getGroupement() != null)
  1433.                     $groupementId $objetProducteurGroupement->getGroupement()->getId();
  1434.                 $queryResult[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew($id$tabVille = array(), $niveau 0$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 0$producteurId 0$objetProducteurGroupement->getGroupement()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1435.                 $queryResult[0]["intention"] = $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille = array(), 0$niveau$objetUtilisateur->getAbonne()->getId(), $objetProducteurGroupement->getGroupement()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 01);
  1436.             }
  1437.         } else {
  1438.             if ($objetAgent == null) {
  1439.                 $id 0;
  1440.                 $idville $ville;
  1441.                 $objetVille $villeRepository->find($ville);
  1442.                 $tabVille[0] = $seTrouverRepository->findOneBy(array("ville" => $objetVille));
  1443.                 if ($ville == 0) {
  1444.                     $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent"etatSeTrouver" => 1));
  1445.                 }
  1446.             } else {
  1447.                 $id 0;
  1448.                 $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent"etatSeTrouver" => 1));
  1449.             }
  1450.         }
  1451.         if ($objetUtilisateur->getTypeUtilisateur() != 3) {
  1452.             if ($objetUtilisateur->getTypeUtilisateur() == 2) {
  1453.                 $queryResult[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 0$objetProducteur->getId(), 000);
  1454.                 $queryResult[0]["localisation"] = $fournisseurRepository->getAllFournisseurProducteurLocalisationAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 0$objetProducteur->getId(), 000);
  1455.                 $queryResult[0]["image"] = $fournisseurRepository->getAllFournisseurProducteurImageAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 0$objetProducteur->getId(), 000);
  1456.             } else {
  1457.                 $queryResult[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 000$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1458.                 $queryResult[0]["localisation"] = $fournisseurRepository->getAllFournisseurProducteurLocalisationAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 000$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1459.                 $queryResult[0]["image"] = $fournisseurRepository->getAllFournisseurProducteurImageAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 000$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1460.             }
  1461.             if ($objetUtilisateur->getAbonne()->getSiExploitation() != 1) {
  1462.                 $listeExploitation $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 01);
  1463.                 $listeParcelle $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 00);
  1464.             } else {
  1465.                 $listeExploitation $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 10);
  1466.                 $listeParcelle $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 00);
  1467.             }
  1468.             $queryResult[0]["intention"] = array_merge($listeExploitation$listeParcelle);
  1469.         }
  1470.         //$tabVille=0;
  1471.         //Recuperation du comapagne
  1472.         //$objetAnneeCampagne = $anneeCampagneRepository->findOneBy(array("etatAnneeCampagne"=>1, "abonne"=>$objetUtilisateur->getAbonne()) );
  1473.         //Recuperer le prix d'achat de tout les produits
  1474.         $listePrix $prixRigueurRepository->findOneBy(array('typePrixRigueur' => 2'abonne' => $objetUtilisateur->getAbonne()));
  1475.         //Ajouter l'abonne a l'inspection 
  1476.         $listeInspection $inspectionRepository->getListeApiInspection(-1$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1477.         $tablInspection = array();
  1478.         $i 0;
  1479.         $tablInspection  $this->getInspectionInfo($em$listeInspection$objetUtilisateur$inspectionRepository$categorieQuestionInspectionRepository$reponseQuestionInspectionRepository$questionInspectionRepository);
  1480.         $queryResult[0]["inspection"] = $tablInspection;
  1481.         $queryResult[0]["configuration"] = $objetUtilisateur->getAbonne()->getConfiguration();
  1482.         /* $listeInspectionRempli = $em->getRepository($this->inspectionBundle . 'InspectionRempli')->getListeApiInspectionAbonne($objetUtilisateur->getAbonne()->getId());
  1483.             $tablInspectionRempli = array(); 
  1484.             foreach($listeInspectionRempli as $unObjetInspectionRempli){ 
  1485.             $tablInspectionRempli[$i]['id'] = $listeInspectionRempli["id"];
  1486.             $tablInspectionRempli[$i]['inspId'] = $unObjetInspection["inspId"];
  1487.             $tablInspectionRempli[$i]['reponse'] = $em->getRepository($this->inspectionBundle . 'InspectionReponse')->getListeInspectionReponse($listeInspectionRempli["id"]);
  1488.             }*/
  1489.         //    $queryResult[0]["prixAchat"] =$prix ;
  1490.         $niveau 0;
  1491.         $prod 0;
  1492.         if ($objetUtilisateur->getCaisse() != null) {
  1493.             $caisse $objetUtilisateur->getCaisse()->getId();
  1494.         } else {
  1495.             $caisse 0;
  1496.         }
  1497.         //Prendre le code du produicteur
  1498.         $objetProducteur $producteurRepository->findOneBy(["utilisateur" => $objetUtilisateur]);
  1499.         /*if($objetUtilisateur->getAbonne()->getTypeAbonne()->getId() != 1){
  1500.             $queryResult[0]["producteur"] = array();
  1501.         }*/
  1502.         if ($objetUtilisateur->getCaisse() != null)
  1503.             $queryResult[0]["client"] = $clientRepository->getAllClientCaisseAPi($objetUtilisateur->getAbonne()->getId(), $caisse);
  1504.         else
  1505.             $queryResult[0]["client"] = $clientRepository->getAllClientDirectAPi($objetUtilisateur->getAbonne()->getId());
  1506.         //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  1507.         //$queryResult[0]["tableMange"] = $em->getRepository($this->clientBundle . 'Table')->getAllClientCaisseAPi($objetUtilisateur->getAbonne()->getId(), $caisse);   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ;             
  1508.         $queryResult[0]["achat"] =  $infoLivrerRepository->getApiNewRechercheProducteurLivraison($id$tabVille00000004$type$objetUtilisateur->getAbonne()->getId());
  1509.         $queryResult[0]["semence"] = $commandeRepository->getApiNewFournisseurProducteurSemence($id00$tabVille000002014$objetUtilisateur->getAbonne()->getId());
  1510.         $queryResult[0]["entrepot"] = $entrepotRepository->getListeEntrepot($objetUtilisateur->getAbonne()->getId());
  1511.         $queryResult[0]["listeSac"] = $sacRepository->getListeSac($objetUtilisateur->getAbonne()->getId());
  1512.         $queryResult[0]["listePlante"] = $planteRepository->getListePlante($objetUtilisateur->getAbonne()->getId());
  1513.         $queryResult[0]["inspectionproduit"] = $inspectionRepository->getListeApiInspectionProduit($objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1514.         $queryResult[0]["inspectionprofil"] = $inspectionRepository->getListeApiInspectionProfil($objetUtilisateur->getAbonne()->getId());
  1515.         if ($objetAgent != null or $objetUtilisateur->getTypeUtilisateur() == or $objetUtilisateur->getTypeUtilisateur() == 3) {
  1516.             $queryResult[0]["ville"] = $villeRepository->getVilleUtilisateurAPIByZone($objetUtilisateur->getAbonne()->getId(), $tabVille$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']); //$fournisseurRepository->getFournisseurSeTrouverAPI($objetAgent->getId());//
  1517.         } else {
  1518.             $queryResult[0]["ville"] = array();
  1519.         }
  1520.         if ($objetUtilisateur->getCaisse() == null) {
  1521.             $queryResult[0]["variete"] = $produitRepository->getAllProduitCategorieAPI(0$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1522.         } else {
  1523.             $queryResult[0]["variete"] = $produitRepository->getAllProduitCaisseAPI($objetUtilisateur->getAbonne()->getId(), $caisse);
  1524.         }
  1525.         $queryResult[0]["listeFournisseur"]  = $fournisseurRepository->getAllFournisseurByType(2$objetUtilisateur->getAbonne()->getId());
  1526.         $queryResult[0]["listeTable"]  = $tableRepository->getAllTableAPI($objetUtilisateur->getAbonne()->getId());
  1527.         /*if($objetUtilisateur->getTypeUtilisateur() == 2)
  1528.             $type = 2;  //2
  1529.         else
  1530.             $type = 3;*/
  1531.         if ($objetUtilisateur->getCaisse() != null) {
  1532.             $queryResult[0]["typeOperation"]  = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type 0$objetUtilisateur->getCaisse()->getId());
  1533.         } else {
  1534.             $queryResult[0]["typeOperation"]  = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type 0);
  1535.         }
  1536.         // $queryResult[0]["inspectionRempli"] =$tablInspectionRempli;
  1537.         /*if($objetAnneeCampagne != null)
  1538.             $queryResult[0]["campagne"] = $objetAnneeCampagne->getId() ;
  1539.         else*/
  1540.         $queryResult[0]["campagne"] = $anneeCampagneRepository->getAllAnneeCampagneAPI($objetUtilisateur->getAbonne()->getId());
  1541.         //$queryResult[0]["categorie"] = $categorieProduitRepository->getAlCategorieAPI(0,0);
  1542.         if ($objetUtilisateur->getCaisse() == null)
  1543.             $queryResult[0]["prix"] = $prixRigueurRepository->getAllPrixByPartenaireAPI(0$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']); //getAllPrixDirectAPI($objetUtilisateur->getAbonne()->getId());    //getAllVarietePrixRigueurAPI(0,2,$objetUtilisateur->getAbonne()->getId());
  1544.         else
  1545.             $queryResult[0]["prix"] = $prixRigueurRepository->getAllPrixCaisseAPI($objetUtilisateur->getAbonne()->getId(), $caisse);    //getAllVarietePrixRigueurAPI(0,2,$objetUtilisateur->getAbonne()->getId());
  1546.         $queryResult[0]["prixAchat"] = 0;
  1547.         $queryResult[0]["cooperative"] = $groupementRepository->getApiAllGeneralGroupement($objetUtilisateur->getAbonne()->getId(), $groupementId$niveau$tabVille$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']); //$groupementRepository->getApiAllGroupement($objetUtilisateur->getAbonne()->getId(), $groupementId );   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  1548.         $queryResult[0]["evenement"] = $evenementRepository->getListeApiEvenement($objetUtilisateur->getAbonne()->getId());
  1549.         $queryResult[0]["listeImage"] = $imageRepository->getAllImageAPI($objetUtilisateur->getAbonne()->getId());
  1550.         $queryResult[0]["pec"] = $produitEtapeCroissanceRepository->getAllEtapeCroissanceProduit($objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1551.         $queryResult[0]["tachepec"] = $tacheProduitEtapeCroissanceRepository->getAllEtapeCroissanceProduitTache($objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  1552.         $queryResult[0]["article"] = $articleRepository->getAllOrOneArticleSousActifAPI(0$objetUtilisateur->getAbonne()->getId());
  1553.         $queryResult[0]["rubrique"] = $rubriqueRepository->getAllOrOneRubriqueSousActifAPI($objetUtilisateur->getAbonne()->getId());
  1554.         $queryResult[0]["transformation"] = $transformationRepository->getAllTransformationAPI($objetUtilisateur->getAbonne()->getId(), 1);
  1555.         $queryResult[0]["etapeprocessus"] = $etapeProcessusRepository->getAllEtapeProcessusAPI($objetUtilisateur->getAbonne()->getId());
  1556.         $queryResult[0]["produittypeoperation"] = $produitTypeOperationRepository->getAllProduitTypeOperation($objetUtilisateur->getAbonne()->getId());
  1557.         $listeProgramme1 $programmeRepository->getListeProgramme($objetUtilisateur->getAbonne()->getId(), $dateJour->format("d/m/Y H:i:s"), 0);
  1558.         $listeProgramme2 $programmeRepository->getListeProgrammeGeneral($objetUtilisateur->getAbonne()->getId(), $dateJour->format("d/m/Y H:i:s"), 1);
  1559.         $queryResult[0]["programme"] =   array_merge($listeProgramme1$listeProgramme2);
  1560.         //var_dump(count($queryResult[0]["producteur"]), count($queryResult[0]["achat"]));exit;    
  1561.         $this->setDateSynchronisation($em$objetUtilisateur);
  1562.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  1563.         $response = new Response($dataSend);
  1564.         $response->headers->set('Content-Type''application/json');
  1565.         return $response;
  1566.     }
  1567.     /**
  1568.      * Creates a new user entity.
  1569.      *
  1570.      * @Route("/liste/detail/zone", name="api_liste_detail_zone")
  1571.      * @Method({"GET","POST"})
  1572.      */
  1573.     public function listeApiDetailZoneAction(
  1574.         Request $request,
  1575.         ProduitRepository $produitRepository,
  1576.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1577.         InfoLivrerRepository $infoLivrerRepository,
  1578.         ProducteurRepository $producteurRepository,
  1579.         AnneeCampagneRepository $anneeCampagneRepository,
  1580.         VilleRepository $villeRepository,
  1581.         CommandeRepository $commandeRepository
  1582.     ) {
  1583.         $em $this->getDoctrine()->getManager();
  1584.         $prod 2;
  1585.         $dateJour = new \DateTime();
  1586.         $toutProducteur $producteurRepository->findAll();
  1587.         $listeVille =  $villeRepository->getAllActiveVille($prod);
  1588.         $nbParPage count($toutProducteur);
  1589.         $pageActuelle 1;
  1590.         $i 0;
  1591.         foreach ($listeVille as $uneVille) {
  1592.             $tabVille[0] = $uneVille;
  1593.             $listeProducteur $producteurRepository->getApiAllProducteur($prod$uneVille->getId(), 0$nbParPage$pageActuelle4$tabVille);
  1594.             $queryResult[$i]["nbreProd"] = count($listeProducteur["data"]);
  1595.             $queryResult[$i]["id"] = $uneVille->getId();
  1596.             $queryResult[$i]["ville"] = $uneVille->getNomVille();
  1597.             $statCommande $commandeRepository->getStatsRechercheCommande(0$dateJour->format("dd/mm/YY"), "01/05/2015"$uneVille->getId(), 000$prod201);
  1598.             $statLivraison $infoLivrerRepository->getRechercheTotalInfoLivrer(0$uneVille->getId(), "01/05/2015"$dateJour->format("dd/mm/YY"), 0$prod);
  1599.             if ($statCommande[0]["quantiteTotal"] == null) {
  1600.                 $semence 0;
  1601.             } else {
  1602.                 $semence $statCommande[0]["quantiteTotal"];
  1603.             }
  1604.             $queryResult[$i]["semence"] = $semence;
  1605.             if ($statCommande[0]["montantSemence"] == null) {
  1606.                 $montantSemence 0;
  1607.             } else {
  1608.                 $montantSemence $statCommande[0]["montantSemence"];
  1609.             }
  1610.             $queryResult[$i]["montantSemence"] = $montantSemence;
  1611.             if ($statLivraison[0]["nbreTotal"] == null) {
  1612.                 $nbreTotal 0;
  1613.             } else {
  1614.                 $nbreTotal $statLivraison[0]["nbreTotal"];
  1615.             }
  1616.             $queryResult[$i]["quantiteAchat"] =  $nbreTotal;
  1617.             if ($statLivraison[0]["montantTotalLivraison"] == null) {
  1618.                 $montantTotalLivraison 0;
  1619.             } else {
  1620.                 $montantTotalLivraison $statLivraison[0]["montantTotalLivraison"];
  1621.             }
  1622.             $queryResult[$i]["montantAchat"] = $montantTotalLivraison;
  1623.             $i++;
  1624.         }
  1625.         //    var_dump($detailUtil);exit;       
  1626.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  1627.         $response = new Response($dataSend);
  1628.         $response->headers->set('Content-Type''application/json');
  1629.         return $response;
  1630.     }
  1631.     /**
  1632.      * Creates a new user entity.
  1633.      *
  1634.      * @Route("/modif/tel", name="api_modif_telephone")
  1635.      * @Method({"GET","POST"})
  1636.      */
  1637.     public function savModifTelephoneAction(
  1638.         Request $request,
  1639.         ProducteurRepository $producteurRepository,
  1640.         UtilisateurRepository $utilisateurRepository
  1641.     ) {
  1642.         $em $this->getDoctrine()->getManager();
  1643.         //$data = $request->getContent();
  1644.         $em->getConnection()->beginTransaction();
  1645.         $responce true;
  1646.         try {
  1647.             $parameters json_decode($request->getContent(), true);
  1648.             $codeGenere trim($parameters['codeGenere']); // email saisie
  1649.             $telephone trim($parameters['telephone']); // email saisie
  1650.             $objetUtil null;
  1651.             $objetProd $producteurRepository->findOneBy(array("codeGenere" => $codeGenere));
  1652.             //    if($objetProd != null){
  1653.             $objetUtil $utilisateurRepository->find($objetProd->getUtilisateur()->getId());
  1654.             //    }
  1655.             //    if($objetUtil != null){
  1656.             $objetUtil->setTel1($telephone);
  1657.             $em->persist($objetUtil);
  1658.             //Enregestre ces données comme livraison
  1659.             $em->flush();
  1660.             //    }
  1661.             $em->getConnection()->commit();
  1662.         } catch (\Exception $e) {
  1663.             $responce false;
  1664.             $em->getConnection()->rollBack();
  1665.             throw $e;
  1666.         }
  1667.         $tabInfomation["etat"] = true;
  1668.         $tabInfomation["codeGenere"] = $parameters['codeGenere'];
  1669.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1670.         $response = new Response($dataSend);
  1671.         $response->headers->set('Content-Type''application/json');
  1672.         return $response;
  1673.     }
  1674.     /**
  1675.      * Creates a new user entity.
  1676.      *
  1677.      * @Route("/save/visite/inspecteur/producteur", name="api_save_visite_inspecteur_producteur")
  1678.      * @Method({"GET","POST"})
  1679.      */
  1680.     public function saveVisiteInspecteurProducteurAction(
  1681.         Request $request,
  1682.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1683.         ProgrammeRepository $programmeRepository,
  1684.         InspecteurRepository $inspecteurRepository
  1685.     ) {
  1686.         $token $this->_tokenStorage->getToken();
  1687.         if (!$token) {
  1688.             return $this->json([
  1689.                 'status' => 400,
  1690.                 'user' => null
  1691.             ], 400);
  1692.         }
  1693.         $em $this->getDoctrine()->getManager();
  1694.         $dateJour = new \DateTime();
  1695.         $parameters json_decode($request->getContent(), true);
  1696.         $parCodeGenere trim($parameters['parCodeGenere']); // email saisie
  1697.         /*$latidute = $request->request->get('latitude');
  1698.             $logitude = $request->request->get('longitude');
  1699.             $idPar = $request->request->get('id');*/
  1700.         $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(['codeGenere' => $parCodeGenere]);
  1701.         $objetProgramme $programmeRepository->findOneBy(['abonne' => $objetSurfaceAnnee->getAbonne(), 'etatProgramme' => 1]);
  1702.         $objetInspecteur $inspecteurRepository->findOneBy(['etatInspecteur' => 1]);
  1703.         $objetProgrammeProducteurInspecteur = new ProgrammeProducteurInspecteur();
  1704.         $objetProgrammeProducteurInspecteur->setProgramme($objetProgramme);
  1705.         $objetProgrammeProducteurInspecteur->setInspecteur($objetInspecteur);
  1706.         $objetProgrammeProducteurInspecteur->setSurfaceannee($objetSurfaceAnnee);
  1707.         $em->persist($objetProgrammeProducteurInspecteur);
  1708.         $em->flush($objetProgrammeProducteurInspecteur);
  1709.         $queryResult = array(); //$em->getRepository($this->prodBundle . 'SurfaceAnnee')->getIntentionProducteur($idProd) ;             
  1710.         //    var_dump($detailUtil);exit;       
  1711.         $tabInfomation["etat"] = true;
  1712.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1713.         $response = new Response($dataSend);
  1714.         $response->headers->set('Content-Type''application/json');
  1715.         return $response;
  1716.     }
  1717.     /**
  1718.      * Creates a new user entity.
  1719.      *
  1720.      * @Route("/get/geolocalisation/producteur", name="api_get_geolocalisation_producteur")
  1721.      * @Method({"GET","POST"})
  1722.      */
  1723.     public function getGeolocalisationProducteurAction(
  1724.         Request $request,
  1725.         ProducteurRepository $producteurRepository,
  1726.         ProducteurAbonneRepository $producteurAbonneRepository
  1727.     ) {
  1728.         $token $this->_tokenStorage->getToken();
  1729.         if (!$token) {
  1730.             return $this->json([
  1731.                 'status' => 400,
  1732.                 'user' => null
  1733.             ], 400);
  1734.         }
  1735.         $em $this->getDoctrine()->getManager();
  1736.         $dateJour = new \DateTime();
  1737.         $parameters json_decode($request->getContent(), true);
  1738.         $latitude trim($parameters['latitude']); // email saisie
  1739.         $longitude trim($parameters['longitude']); // email saisie
  1740.         $idProd trim($parameters['id']); // email saisie
  1741.         /*$latidute = $request->request->get('latitude');
  1742.             $logitude = $request->request->get('longitude');
  1743.             $idPar = $request->request->get('id');*/
  1744.         $objetProducteur $producteurRepository->find($idProd);
  1745.         $objetProducteurAbonne $producteurAbonneRepository->findOneBy(['abonne' => $objetProducteur->getAbonne(), 'producteur' => $objetProducteur]);
  1746.         $objetLocalisation = new Localisation();
  1747.         $objetLocalisation->setLatitude($latitude);
  1748.         $objetLocalisation->setLongitude($longitude);
  1749.         $objetLocalisation->setProducteurabonne($objetProducteurAbonne);
  1750.         $objetLocalisation->setProducteur($objetProducteur);
  1751.         $objetLocalisation->setDatePublication($dateJour);
  1752.         $em->persist($objetLocalisation);
  1753.         $em->flush($objetLocalisation);
  1754.         $queryResult = array(); //$em->getRepository($this->prodBundle . 'SurfaceAnnee')->getIntentionProducteur($idProd) ;             
  1755.         //    var_dump($detailUtil);exit;     
  1756.         $tabInfomation["etat"] = true;
  1757.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1758.         $response = new Response($dataSend);
  1759.         $response->headers->set('Content-Type''application/json');
  1760.         return $response;
  1761.     }
  1762.     /**
  1763.      * Creates a new user entity.
  1764.      *
  1765.      * @Route("/get/geolocalisation/parcelle", name="api_get_geolocalisation_parcelle")
  1766.      * @Method({"GET","POST"})
  1767.      */
  1768.     public function getGeolocalisationParcelleAction(
  1769.         Request $request,
  1770.         UtilisateurRepository $utilisateurRepository,
  1771.         SurfaceAnneeRepository $surfaceAnneeRepository,
  1772.         FournisseurRepository $fournisseurRepository,
  1773.         LocalisationRepository $localisationRepository,
  1774.         SurfaceAbonneRepository $surfaceAbonneRepository,
  1775.         EntrepotRepository $entrepotRepository,
  1776.         AnneeCampagneRepository $anneeCampagneRepository
  1777.         PlanteRepository $planteRepository
  1778.         ProjetRepository $projetRepository
  1779.         ProducteurRepository $producteurRepository
  1780.     ) {
  1781.         $token $this->_tokenStorage->getToken();
  1782.         if (!$token) {
  1783.             return $this->json([
  1784.                 'status' => 400,
  1785.                 'user' => null
  1786.             ], 400);
  1787.         }
  1788.         $em $this->getDoctrine()->getManager();
  1789.         $dateJour = new \DateTime();
  1790.         $parameters json_decode($request->getContent(), true);
  1791.         $latidute trim($parameters['latitude']); // email saisie
  1792.         $logitude trim($parameters['longitude']); // email saisie
  1793.         $codeGenere trim($parameters['codeGenere']); // email saisie
  1794.         $parCodeGenere trim($parameters['parCodeGenere']); // email saisie
  1795.         $idUtil trim($parameters['idUtil']); // email saisie
  1796.         $typeLocalisation trim($parameters['typeLocalisation']);
  1797.         $tabLocalisation trim($parameters['tabLocalisation']);
  1798.         $superficie trim($parameters['superficie']);
  1799.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  1800.         /*$latidute = $request->request->get('latitude');
  1801.         $logitude = $request->request->get('longitude');
  1802.         $codeGenere = $request->request->get('codeGenere');
  1803.         $idUtil = $request->request->get('idUtil');*/
  1804.         if ($typeLocalisation != 3) {
  1805.             $objetSurface $surfaceAnneeRepository->findOneBy(array('codeGenere' => $parCodeGenere,'abonne' => $objetUtilisateur->getAbonne()));
  1806.         }else if ($typeLocalisation == 6) { //Quand c'est un entrepot
  1807.             $objetEntrepot$entrepotRepository->findOneBy(array('codeGenere' => $parCodeGenere,'abonne' => $objetUtilisateur->getAbonne()));
  1808.         } else {
  1809.             $objetFournisseur $fournisseurRepository->findOneBy(array('codeGenere' => $parCodeGenere,'abonne' => $objetUtilisateur->getAbonne()));
  1810.             //$typeLocalisation = 1;
  1811.         }
  1812.        
  1813.         if ($typeLocalisation == 3) {
  1814.             $objetLocalisation $localisationRepository->findOneBy(['fournisseur' => $objetFournisseur'typeLocalisation' => $typeLocalisation]);
  1815.         } else {
  1816.             $objetLocalisation $localisationRepository->findOneBy(['surfaceannee' => $objetSurface'typeLocalisation' => $typeLocalisation]);
  1817.         }
  1818.         if($objetLocalisation !=null ){
  1819.             //if($objetSurface  != null)
  1820.                 //$this->initialiserLesAncienPolygon($em, $objetSurface->getId(), $typeLocalisation=1);
  1821.             //rénitialisation pour un nouveau point
  1822.         }
  1823.         if ($typeLocalisation != && $typeLocalisation != 6) {
  1824.             $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurface]);
  1825.         }
  1826.         if ($objetLocalisation == null)
  1827.             $objetLocalisation = new Localisation();
  1828.         $dateOperation =  new \DateTime();
  1829.         $objetLocalisation->setLatitude($latidute);
  1830.         $objetLocalisation->setLongitude($logitude);
  1831.         if ($typeLocalisation != 3) {
  1832.             $objetLocalisation->setSurfaceannee($objetSurface);
  1833.         } else if($typeLocalisation == 6) { //Quand c'est un entrepot
  1834.             $objetLocalisation->setEntrepot($objetEntrepot);
  1835.         } else {
  1836.             $objetLocalisation->setFournisseur($objetFournisseur);
  1837.         }
  1838.         $objetLocalisation->setUtilisateur($objetUtilisateur);
  1839.         $objetLocalisation->setAbonne($objetUtilisateur->getAbonne());
  1840.         if ($typeLocalisation != 3)
  1841.             $objetLocalisation->setSurfaceabonne($objetSurfaceAbonne);
  1842.         $objetLocalisation->setCodeGenere($codeGenere);
  1843.         $objetLocalisation->setTypeLocalisation($typeLocalisation);
  1844.         $objetLocalisation->setTabPolygone($tabLocalisation);
  1845.         $objetLocalisation->setDatePublication($dateJour);
  1846.         $em->persist($objetLocalisation);
  1847.         $em->flush($objetLocalisation);
  1848.         $queryResult = array(); //$em->getRepository($this->prodBundle . 'SurfaceAnnee')->getIntentionProducteur($idProd) ;             
  1849.         if ($typeLocalisation != && $typeLocalisation != ) {
  1850.             $pointLocalisation = new Point($logitude$latidutenull);
  1851.             if($objetSurface != null){
  1852.                 $objetSurface->setLocalisation($pointLocalisation);
  1853.                 //if($typeLocalisation == 1)
  1854.                 if($superficie != null && $superficie != '0' && $superficie != 'null' )
  1855.                     $objetSurface->setSuperficieRelle($superficie);
  1856.                 $em->persist($objetSurface);
  1857.                 $em->flush($objetSurface);
  1858.                 $idVille 0;
  1859.                 $explCodeGenere0;
  1860.                 if($objetSurface->getVille()!=null)
  1861.                     $idVille $objetSurface->getVille()->getId();
  1862.                 if($objetSurface->getSurfaceannee()!= null)
  1863.                     $explCodeGenere $objetSurface->getSurfaceannee()->getCodeGenere();
  1864.                 $donnee $objetSurface->getSuperficie(). "#" $objetSurface->getProducteur()->getCodeGenere() . "#" $parCodeGenere "#" $parCodeGenere"#" $idVille  "#" $objetSurface->getProduit()->getId() . "#0#" $idUtil "#" $explCodeGenere "#" $objetSurface->getTypeParcelle() . "#0#".$objetSurface->getSuperficieRelle()."#3" ;
  1865.                 $this->addHistoriqueAction($em'ProducteurIntention'1$codeGenere$idUtil$objetSurface->getId(), 1$donnee$utilisateurRepository);
  1866.             }
  1867.             /*$objetSurface->setLocalisation($pointLocalisation);
  1868.             $em->persist($objetSurface);
  1869.             $em->flush($objetSurface);*/
  1870.         }
  1871.         if ($typeLocalisation != && $typeLocalisation != )
  1872.             if($objetSurface != null)
  1873.                 $prodCodeGenere $objetSurface->getProducteur()->getCodeGenere();
  1874.         if ($objetSurface != null && $typeLocalisation != 3) {
  1875.             $objetLocalisation->setSurfaceannee($objetSurface);
  1876.             
  1877.             $titre "LocalisationAdd : " $objetSurface->getProducteur()->getUtilisateur()->getNom() . " " $objetSurface->getProducteur()->getUtilisateur()->getPrenoms() . "_" $latidute "_" $logitude;
  1878.             $codeGenere $objetSurface->getProducteur()->getCodeGenere();
  1879.         } else if($typeLocalisation == 6) { //Quand c'est un entrepot
  1880.             $codeGenere $objetEntrepot->getCodeGenere();
  1881.             $objetLocalisation->setEntrepot($objetEntrepot);
  1882.         } else {
  1883.             $codeGenere $objetFournisseur->getCodeGenere();
  1884.             $objetLocalisation->setFournisseur($objetFournisseur);
  1885.         }
  1886.            
  1887.         $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $codeGenere0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull); 
  1888.         $tabPolygone 0;
  1889.         if($objetLocalisation->getTabPolygone() != "")
  1890.             $tabPolygone $objetLocalisation->getTabPolygone();
  1891.         $donnee $idUtil "#" $parCodeGenere "#" $objetLocalisation->getCodeGenere() . "#" .  $objetLocalisation->getLatitude() . "#" $objetLocalisation->getLongitude()  . "#" $objetLocalisation->getTypeLocalisation() . "#" .  $tabPolygone ;
  1892.         $this->addHistoriqueAction($em"ProducteurLocalisation"1$parCodeGenere$objetUtilisateur->getId(), $objetSurface->getProducteur()->getId(), 1$donnee$utilisateurRepository);
  1893.         $tabInfomation = ["prodCodeGenere" => $prodCodeGenere"parCodeGenere" => $parCodeGenere];
  1894.         $tabInfomation["etat"] = true;
  1895.         $tabInfomation["codeGenere"] = $codeGenere;
  1896.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  1897.         $response = new Response($dataSend);
  1898.         $response->headers->set('Content-Type''application/json');
  1899.         return $response;
  1900.     }
  1901.     /**
  1902.      * Creates a new user entity.
  1903.      *
  1904.      * @Route("/liste/event", name="api_liste_event")
  1905.      * @Method({"GET","POST"})
  1906.      */
  1907.     public function listeApiEventAction(Request $requestEvenementRepository $evenementRepository)
  1908.     {
  1909.         $em $this->getDoctrine()->getManager();
  1910.         $data $request->getContent();
  1911.         $abonneId 1;
  1912.         $queryResult $evenementRepository->getListeApiEvenement($abonneId);
  1913.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  1914.         $response = new Response($dataSend);
  1915.         $response->headers->set('Content-Type''application/json');
  1916.         return $response;
  1917.     }
  1918.     /**
  1919.      * Creates a new user entity.
  1920.      *
  1921.      * @Route("/liste/inspection/{id}", name="api_liste_inspection")
  1922.      * @Method({"GET","POST"})
  1923.      */
  1924.     public function listeApiInspectionAction(Request $request$idInspectionRepository $inspectionRepositoryReponseQuestionInspectionRepository $reponseQuestionInspectionRepositoryCategorieQuestionInspectionRepository $categorieQuestionInspectionRepository)
  1925.     {
  1926.         $em $this->getDoctrine()->getManager();
  1927.         $data $request->getContent();
  1928.         $listeInspection $inspectionRepository->getInfoApiInspection($id);
  1929.         $tablInspection = array();
  1930.         $i 0;
  1931.         foreach ($listeInspection as $unObjetInspection) {
  1932.             $tablInspection[$i]['id'] = $unObjetInspection["id"];
  1933.             $tablInspection[$i]['label'] = $unObjetInspection["label"];
  1934.             $tablInspection[$i]['description'] = $unObjetInspection["description"];
  1935.             $tablInspection[$i]['etat'] = $unObjetInspection["etatInspection"];
  1936.             $tablInspection[$i]['type'] = $unObjetInspection["typeInspection"];
  1937.             $uneInspection $inspectionRepository->find($unObjetInspection["id"]);
  1938.             $listeCategorieQuestionInspection $categorieQuestionInspectionRepository->findBy(array("inspection" => $uneInspection));
  1939.             $j 0;
  1940.             foreach ($listeCategorieQuestionInspection as $unCategorieQuestionInspection) {
  1941.                 $tablInspection[$i]['categorie'][$j]["id"] = $unCategorieQuestionInspection->getId(); //Tratement des catégories                    
  1942.                 $tablInspection[$i]['categorie'][$j]["label"] = $unCategorieQuestionInspection->getLabel(); //Tratement des catégories
  1943.                 $tablInspection[$i]['categorie'][$j]["description"] = $unCategorieQuestionInspection->getDescription();
  1944.                 $tablInspection[$i]['categorie'][$j]["type"] = $unCategorieQuestionInspection->getTypeCategorieQuestionInspection();
  1945.                 $tablInspection[$i]['categorie'][$j]["ordre"] = $unCategorieQuestionInspection->getOrdre();
  1946.                 $tablInspection[$i]['categorie'][$j]["etat"] = $unCategorieQuestionInspection->getEtatCategorieQuestionInspection();
  1947.                 $tablInspection[$i]['categorie'][$j]["inspectionId"] = $unCategorieQuestionInspection->getInspection()->getId();
  1948.                 $k 0;
  1949.                 foreach ($unCategorieQuestionInspection->getQuestioninspections() as $unQuestionInspection) {
  1950.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["id"] = $unQuestionInspection->getId();
  1951.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["label"] = $unQuestionInspection->getLabel();
  1952.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["description"] = $unQuestionInspection->getDescription();
  1953.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["type"] = $unQuestionInspection->getTypeQuestionInspection();
  1954.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["etat"] = $unQuestionInspection->getEtatQuestionInspection();
  1955.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["ordre"] = $unQuestionInspection->getOrdre();
  1956.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["siQuestionInter"] = $unQuestionInspection->getSiQuestionIntermediaire();
  1957.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["siQuestionIssue"] = $unQuestionInspection->getSiQuestionIssueIntermediaire();
  1958.                     if ($unQuestionInspection->getTypeQuestionInspection() != 1) {
  1959.                         $tablInspection[$i]['categorie'][$j]["question"][$k]['reponse'] = $reponseQuestionInspectionRepository->getListeApiReponseQuestionInspection($unQuestionInspection->getId());
  1960.                     }
  1961.                     ++$k;
  1962.                 }
  1963.                 ++$j;
  1964.             }
  1965.             ++$i;
  1966.         }
  1967.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tablInspection), 'json');
  1968.         $response = new Response($dataSend);
  1969.         $response->headers->set('Content-Type''application/json');
  1970.         return $response;
  1971.     }
  1972.     private function userNotFound()
  1973.     {
  1974.         return \FOS\RestBundle\View\View::create(['message' => 'User not found'], Response::HTTP_NOT_FOUND);
  1975.     }
  1976.     /**
  1977.      * Creates a new user entity.
  1978.      *
  1979.      * @Route("/save/producteur/event", name="api_save_producteur_event")
  1980.      * @Method({"GET","POST"})
  1981.      */
  1982.     public function saveProducteurEvenementAction(
  1983.         Request $request,
  1984.         ProducteurRepository $producteurRepository,
  1985.         EvenementRepository $evenementRepository,
  1986.         UtilisateurRepository $utilisateurRepository,
  1987.         AnneeCampagneRepository $anneeCampagneRepository,
  1988.         ProducteurEvenementRepository $producteurEvenementRepository
  1989.     ) {
  1990.         $token $this->_tokenStorage->getToken();
  1991.         if (!$token) {
  1992.             return $this->json([
  1993.                 'status' => 400,
  1994.                 'user' => null
  1995.             ], 400);
  1996.         }
  1997.         $em $this->getDoctrine()->getManager();
  1998.         //$data = $request->getContent();
  1999.         $em->getConnection()->beginTransaction();
  2000.         $responce true;
  2001.         try {
  2002.             $parameters json_decode($request->getContent(), true);
  2003.             $JSONData trim($parameters['JSONData']); // email saisie
  2004.             //Recupération des données utilisateur
  2005.             //$JSONData = $request->request->get('JSONData');
  2006.             $JSONData str_replace("PE:"""$JSONData);
  2007.             //$JSONData = '[{"anneeId":2,"codeGenere":"PES111","etat":0,"eventId":1,"producteurId":90,"utilisateurId":0}]' ;
  2008.             $listeProducteurEvent json_decode($JSONDatatrue);
  2009.             //un appel evenement 
  2010.             $i 0;
  2011.             //var_dump($listeProducteurEvent);exit;
  2012.             foreach ($listeProducteurEvent as $unProducteurEvent) {
  2013.                 if ($i == 0) {
  2014.                     $evenement $evenementRepository->find($unProducteurEvent["eventId"]);
  2015.                     $unAppelEvenement = new  AppelEvenement();
  2016.                     $unAppelEvenement->setEvenement($evenement);
  2017.                     $unAppelEvenement->setCodeGenere($unProducteurEvent["codeGenere"]);
  2018.                     $em->persist($unAppelEvenement);
  2019.                 }
  2020.                 $producteur $producteurRepository->find($unProducteurEvent["producteurId"]);
  2021.                 $anneeCampagne $anneeCampagneRepository->find($unProducteurEvent["anneeId"]);
  2022.                 $objetUtilisateur $utilisateurRepository->find($unProducteurEvent["utilisateurId"]);
  2023.                 $siExiste $producteurEvenementRepository->findOneBy(array("producteur" => $producteur"appelevenement" => $unAppelEvenement)); //, "anneecampagne" => $anneeCampagne
  2024.                 if ($siExiste == null) {
  2025.                     $producteurEvenement = new ProducteurEvenement();
  2026.                     $producteurEvenement->setProducteur($producteur);
  2027.                     $producteurEvenement->setAppelevenement($unAppelEvenement);
  2028.                     $producteurEvenement->setAnneecampagne($anneeCampagne);
  2029.                     $producteurEvenement->setUtilisateur($objetUtilisateur);
  2030.                     $producteurEvenement->setCodeGenere($unProducteurEvent["codeGenere"]);
  2031.                     $em->persist($producteurEvenement);
  2032.                 }
  2033.                 $i++;
  2034.             }
  2035.             $em->flush($producteurEvenement);
  2036.             $em->getConnection()->commit();
  2037.         } catch (\Exception $e) {
  2038.             $responce false;
  2039.             $em->getConnection()->rollBack();
  2040.             throw $e;
  2041.         }
  2042.         ///$listeProducteurEvent = json_dedddcode($JSONData,true);        
  2043.         //Envoi des donnée
  2044.         $tabInfomation["etat"] = true;
  2045.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2046.         $response = new Response($dataSend);
  2047.         $response->headers->set('Content-Type''application/json');
  2048.         return $response;
  2049.     }
  2050.     /**
  2051.      * Creates a new user entity.
  2052.      *
  2053.      * @Route("/liste/api/question/inspection/{id}", name="api_liste_api_question_inspection")
  2054.      * @Method({"GET","POST"})
  2055.      */
  2056.     public function listeApiQuestionInspectionAction(Request $request$idInspectionRepository $inspectionRepositoryReponseQuestionInspectionRepository $reponseQuestionInspectionRepositoryCategorieQuestionInspectionRepository $categorieQuestionInspectionRepository)
  2057.     {
  2058.         $token $this->_tokenStorage->getToken();
  2059.         if (!$token) {
  2060.             return $this->json([
  2061.                 'status' => 400,
  2062.                 'user' => null
  2063.             ], 400);
  2064.         }
  2065.         $em $this->getDoctrine()->getManager();
  2066.         $data $request->getContent();
  2067.         $this->em $this->getDoctrine()->getManager();
  2068.         $uneInspection $inspectionRepository->find($id);
  2069.         $listeCategorieQuestionInspection $categorieQuestionInspectionRepository->findBy(array("inspection" => $uneInspection));
  2070.         $tablQuestionInspection = array();
  2071.         $i 0;
  2072.         foreach ($listeCategorieQuestionInspection as $unCategorieQuestionInspection) {
  2073.             //Tratement des catégories
  2074.             $tablQuestionInspection[$unCategorieQuestionInspection->getId()]["label"] = $unCategorieQuestionInspection->getLabel();
  2075.             $tablQuestionInspection[$unCategorieQuestionInspection->getId()]["description"] = $unCategorieQuestionInspection->getDescription();
  2076.             $i 0;
  2077.             foreach ($unCategorieQuestionInspection->getQuestioninspections() as $unQuestionInspection) {
  2078.                 $tablQuestionInspection[$unCategorieQuestionInspection->getId()][$i]["label"] = $unQuestionInspection->getLabel();
  2079.                 $tablQuestionInspection[$unCategorieQuestionInspection->getId()][$i]["description"] = $unQuestionInspection->getDescription();
  2080.                 $tablQuestionInspection[$unCategorieQuestionInspection->getId()][$i]["typeQuestionInspection"] = $unQuestionInspection->getTypeQuestionInspection();
  2081.                 if ($unQuestionInspection->getTypeQuestionInspection() == 0) {
  2082.                     $tablQuestionInspection[$i]["reponsequestioninspections"] = $reponseQuestionInspectionRepository->getListeApiReponseQuestionInspection($unQuestionInspection->getId());
  2083.                 }
  2084.                 ++$i;
  2085.             }
  2086.         }
  2087.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tablQuestionInspection), 'json');
  2088.         $response = new Response($dataSend);
  2089.         $response->headers->set('Content-Type''application/json');
  2090.         return $response;
  2091.     }
  2092.     /**
  2093.      * Creates a new user entity.
  2094.      *
  2095.      * @Route("/save/producteur/inspection", name="api_save_producteur_inspection")
  2096.      * @Method({"GET","POST"})
  2097.      */
  2098.     public function saveInspectionReponseAction(
  2099.         Request $request,
  2100.         UtilisateurRepository $utilisateurRepository,
  2101.         InspectionRepository $inspectionRepository,
  2102.         AnneeCampagneRepository $anneeCampagneRepository,
  2103.         SurfaceAnneeRepository $surfaceAnneeRepository,
  2104.         InspectionRempliRepository $inspectionRempliRepository,
  2105.         QuestionInspectionRepository $questionInspectionRepository,
  2106.         InspectionReponseRepository $inspectionReponseRepository,
  2107.         VilleRepository $villeRepository,
  2108.         ProducteurRepository $producteurRepository,
  2109.         PlanteRepository  $planteRepository,
  2110.         ProjetRepository $projetRepository,
  2111.         SurfaceAbonneRepository $surfaceAbonneRepository,
  2112.         ProducteurAbonneRepository $producteurAbonneRepository,
  2113.         ProgrammeRepository $programmeRepository,
  2114.         GroupementRepository $groupementRepository,
  2115.         EvenementRepository $evenementRepository,
  2116.         ClientRepository  $clientRepository,
  2117.         FournisseurRepository  $fournisseurRepository
  2118.     ) {
  2119.         $token $this->_tokenStorage->getToken();
  2120.         if (!$token) {
  2121.             return $this->json([
  2122.                 'status' => 400,
  2123.                 'user' => null
  2124.             ], 400);
  2125.         }
  2126.         $em $this->getDoctrine()->getManager();
  2127.         $tabCodeGenere = array();
  2128.         //$data = $request->getContent();
  2129.         //$em->getConnection()->beginTransaction();
  2130.         $responce true;
  2131.         try {
  2132.             //Recupération des données utilisateur
  2133.             $parameters json_decode($request->getContent(), true);
  2134.             $JSONData trim($parameters['JSONData']); // email saisie
  2135.             $tabInfomation $this->traiteDonneeInspection(
  2136.                 $em,
  2137.                 $JSONData,
  2138.                 $utilisateurRepository,
  2139.                 $inspectionRepository,
  2140.                 $anneeCampagneRepository,
  2141.                 $surfaceAnneeRepository,
  2142.                 $inspectionRempliRepository,
  2143.                 $questionInspectionRepository,
  2144.                 $inspectionReponseRepository,
  2145.                 $villeRepository,
  2146.                 $producteurRepository,
  2147.                 $planteRepository,
  2148.                 $projetRepository,
  2149.                 $surfaceAbonneRepository,
  2150.                 $producteurAbonneRepository,
  2151.                 $programmeRepository,
  2152.                 $groupementRepository,
  2153.                 $evenementRepository,
  2154.                 $clientRepository,
  2155.                 $fournisseurRepository
  2156.             );
  2157.         } catch (\Exception $e) {
  2158.             $responce false;
  2159.             $em->getConnection()->rollBack();
  2160.             $tabInfomation["etat"] = false;
  2161.             throw $e;
  2162.         }
  2163.         ///$listeProducteurEvent = json_dedddcode($JSONData,true);        
  2164.         //Envoi des donnée
  2165.         $tabInfomation["etat"] = true;
  2166.         //$tabInfomation["etat"]=true;
  2167.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2168.         $response = new Response($dataSend);
  2169.         $response->headers->set('Content-Type''application/json');
  2170.         return $response;
  2171.     }
  2172.     /**
  2173.      * Creates a new user entity.
  2174.      *
  2175.      * @Route("/save/producteur/add", name="api_save_producteur_add")
  2176.      * @Method({"GET","POST"})
  2177.      */
  2178.     public function saveProducteurAddAction(
  2179.         Request $request,
  2180.         VilleRepository $villeRepository,
  2181.         ProducteurRepository $producteurRepository,
  2182.         UtilisateurRepository $utilisateurRepository,
  2183.         GroupementRepository $groupementRepository,
  2184.         ProducteurGroupementRepository $producteurGroupementRepository,
  2185.         ZoneProducteurRepository $zoneProducteurRepository,
  2186.         SurfaceAnneeRepository $surfaceAnneeRepository,
  2187.         PlanteRepository $planteRepository,
  2188.         ProjetRepository $projetRepository,
  2189.         AnneeCampagneRepository $anneeCampagneRepository
  2190.     ) {
  2191.         $token $this->_tokenStorage->getToken();
  2192.         if (!$token) {
  2193.             return $this->json([
  2194.                 'status' => 400,
  2195.                 'user' => null
  2196.             ], 400);
  2197.         }
  2198.         $em $this->getDoctrine()->getManager();
  2199.         //$data = $request->getContent();
  2200.         $em->getConnection()->beginTransaction();
  2201.         $responce true;
  2202.         try {
  2203.             $parameters json_decode($request->getContent(), true);
  2204.             $nom trim($parameters['nom']); // email saisie
  2205.             $prenoms trim($parameters['prenoms']); // email saisie
  2206.             $cni trim($parameters['cni']); // email saisie
  2207.             $groupement trim($parameters['groupement']); // email saisie
  2208.             $telephone trim($parameters['telephone']); // email saisie
  2209.             $codeGenere trim($parameters['codeGenere']); // email saisie
  2210.             $idVille trim($parameters['idVille']); // email saisie
  2211.             $sexe trim($parameters['sexe']);
  2212.             if (array_key_exists("dateNaiss"$parameters))
  2213.                 $dateNaissance trim($parameters['dateNaiss']);
  2214.             else
  2215.                 $dateNaissance 0;
  2216.             $donnee $nom "#" $prenoms "#" $cni "#" $groupement "#" $telephone  "#" $codeGenere "#" $idVille "#" $sexe "#" $groupement "#" $dateNaissance "#3";
  2217.             $objetVille $villeRepository->find($idVille);                   //$em->getRepository($this->stockBundle . 'Ville')->findOneBy(array('nomVille'=>$groupement));
  2218.             //Recuperation de la personne qui a
  2219.             $id trim($parameters['id']); //$request->request->get('id');
  2220.             $objetAgent $utilisateurRepository->find($id);
  2221.             // $objetProduit= $em->getRepository($this->stockBundle . 'Produit')->find(1);
  2222.             //$objetAnneeCampagne = $em->getRepository($this->prodBundle . 'AnneeCampagne')->findOneBy(array("produit"=>$objetProduit,"etatAnneeCampagne"=>1 )) ;
  2223.             ///$ligneCommande = $em->getRepository($this->stockBundle . 'Commande')->getLigneCommandeOperation($producteur_id, $anneecampagne_id);
  2224.             $d = new \DateTime();
  2225.             $an $d->format('Y');
  2226.             $m $d->format('m');
  2227.             $j $d->format('d');
  2228.             $objetUtilisateur $utilisateurRepository->findOneBy(['codeGenere' => $codeGenere'abonne' => $objetAgent->getAbonne()]);                   //$em->getRepository($this->stockBundle . 'Ville')->findOneBy(array('nomVille'=>$groupement));
  2229.             
  2230.             if ($objetUtilisateur == null) {
  2231.                 $objetUtilisateur = new Utilisateur();
  2232.                 
  2233.             }
  2234.             //Enregestre ces données comme livraison                        
  2235.             $objetUtilisateur->setNom($nom);
  2236.             $objetUtilisateur->setPrenoms($prenoms);
  2237.             $objetUtilisateur->setCni($cni);
  2238.             $objetUtilisateur->setSexe($sexe);
  2239.             if ($objetVille != null)
  2240.                 $objetUtilisateur->setVille($objetVille);
  2241.             $objetUtilisateur->setTel1($telephone);
  2242.             $objetUtilisateur->setCodeGenere($codeGenere);
  2243.             $objetUtilisateur->setAbonne($objetAgent->getAbonne());
  2244.             if ($dateNaissance != 0) {
  2245.                 if (\DateTime::createFromFormat('d-m-Y'$dateNaissance) !== false) {
  2246.                     // it's a date
  2247.                     $objetUtilisateur->setDateNaissance(new \DateTime($dateNaissance));
  2248.                 }
  2249.             }
  2250.             // $
  2251.             //$objetInfoLivrer->setGenereCode($codeGenere);    
  2252.             $em->persist($objetUtilisateur);
  2253.             $em->flush($objetUtilisateur);
  2254.             $newAdd=1;
  2255.             $objetProducteur $producteurRepository->findOneBy(['utilisateur' => $objetUtilisateur]);                   //$em->getRepository($this->stockBundle . 'Ville')->findOneBy(array('nomVille'=>$groupement));
  2256.             if ($objetProducteur == null) {
  2257.                 $objetProducteur = new Producteur();
  2258.                 $newAdd=0;
  2259.             }
  2260.             //Generer un code pour les producteurs
  2261.             $objetProducteur->setCodeProd($codeGenere);
  2262.             $objetProducteur->setCodeGenere($codeGenere);
  2263.             $objetProducteur->setVille($objetVille);
  2264.             $objetProducteur->setUtilisateur($objetUtilisateur);
  2265.             $objetProducteur->setAbonne($objetAgent->getAbonne());
  2266.             $objetProducteur->setAgent($objetAgent);
  2267.             $em->persist($objetProducteur);
  2268.             $em->flush($objetProducteur);
  2269.             $dateOperation = new \DateTime();
  2270.             $titre "ProducteurAdd : " $objetProducteur->getUtilisateur()->getNom() . " " $objetProducteur->getUtilisateur()->getPrenoms();
  2271.             $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetProducteur->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  2272.             if($newAdd==0)
  2273.                 $this->setAbonnePartenaire($em$objetProducteur->getAbonne(), $objetProducteur->getAbonne()->getPartenaire(), $objetProducteur$typeObjet 2);
  2274.             $this->saveAutreInfoProducteur($em$groupement$objetProducteur$idVille$villeRepository$groupementRepository$producteurGroupementRepository$zoneProducteurRepository);
  2275.             $this->addHistoriqueAction($em"ProducteurAdd"1$codeGenere$id$objetProducteur->getId(), 1$donnee$utilisateurRepository);
  2276.             $em->getConnection()->commit();
  2277.         } catch (\Exception $e) {
  2278.             $tabInfomation["etat"] = false;
  2279.             $em->getConnection()->rollBack();
  2280.             throw $e;
  2281.         }
  2282.         //Envoi des donnée
  2283.         $tabInfomation["etat"] = true;
  2284.         $tabInfomation["codeGenere"] = $parameters['codeGenere'];
  2285.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2286.         $response = new Response($dataSend);
  2287.         $response->headers->set('Content-Type''application/json');
  2288.         return $response;
  2289.     }
  2290.     /**
  2291.      * Creates a new user entity.
  2292.      *
  2293.      * @Route("/get/synchronisation/data", name="api_get_synchronisation_data")
  2294.      * @Method({"GET","POST"})
  2295.      * 
  2296.      */
  2297.     public function getSynchronisationDataAction(
  2298.         Request $request,
  2299.         ClientRepository $clientRepository,
  2300.         ProducteurRepository $producteurRepository,
  2301.         UtilisateurRepository $utilisateurRepository,
  2302.         ProduitRepository $produitRepository,
  2303.         TableRepository $tableRepository,
  2304.         ProducteurGroupementRepository $producteurGroupementRepository,
  2305.         CommandeRepository $commandeRepository,
  2306.         VilleRepository $villeRepository,
  2307.         SurfaceRepository $surfaceRepository,
  2308.         PrixRigueurRepository $prixRigueurRepository,
  2309.         SacRepository $sacRepository,
  2310.         ImageRepository $imageRepository,
  2311.         InspectionRepository $inspectionRepository,
  2312.         GroupementRepository $groupementRepository,
  2313.         AnneeCampagneRepository $anneeCampagneRepository,
  2314.         FournisseurRepository $fournisseurRepository,
  2315.         LocalisationRepository $localisationRepository,
  2316.         CibleRepository $cibleRepository,
  2317.         CaracteristiquePrixRepository $caracteristiquePrixRepository,
  2318.         InfoInventaireRepository $infoInventaireRepository,
  2319.         LigneCommandeRepository $ligneCommandeRepository,
  2320.         TypeOperationRepository $typeOperationRepository,
  2321.         InventaireRepository $inventaireRepository,
  2322.         OperationRepository $operationRepository,
  2323.         SurfaceAnneeRepository $surfaceAnneeRepository,
  2324.         InspectionRempliRepository $inspectionRempliRepository,
  2325.         QuestionInspectionRepository $questionInspectionRepository,
  2326.         ZoneProducteurRepository $zoneProducteurRepository,
  2327.         InspectionReponseRepository $inspectionReponseRepository,
  2328.         ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository,
  2329.         TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,
  2330.         PlanteRepository $planteRepository,
  2331.         ProjetRepository $projetRepository,
  2332.         SurfaceAbonneRepository $surfaceAbonneRepository,
  2333.         ProducteurAbonneRepository $producteurAbonneRepository,
  2334.         LivrerRepository $livrerRepository,
  2335.         OperationManager $operationManager,
  2336.         CaisseRepository $caisseRepository,
  2337.         InfoLivrerRepository  $infoLivrerRepository,
  2338.         HistoriqueActionRepository $historiqueActionRepository,
  2339.         AbonneRepository $abonneRepository,
  2340.         SeTrouverRepository $seTrouverRepository,
  2341.         EtatOpportuniteRepository $etatOpportuniteRepository,
  2342.         ProgrammeRepository $programmeRepository,
  2343.         EntrepotRepository $entrepotRepository,
  2344.         CategorieQuestionInspectionRepository $categorieQuestionInspectionRepository,
  2345.         ReponseQuestionInspectionRepository $reponseQuestionInspectionRepository,
  2346.         ArticleRepository $articleRepository,
  2347.         EvenementRepository $evenementRepository,
  2348.         RubriqueRepository $rubriqueRepository,
  2349.         TransformationRepository $transformationRepository,
  2350.         EtapeProcessusRepository $etapeProcessusRepository,
  2351.         ProduitTypeOperationRepository $produitTypeOperationRepository
  2352.     ) {
  2353.         $token $this->_tokenStorage->getToken();
  2354.         if (!$token) {
  2355.             return $this->json([
  2356.                 'status' => 400,
  2357.                 'user' => null
  2358.             ], 400);
  2359.         }
  2360.         $em $this->getDoctrine()->getManager();
  2361.         // $em->getConnection()->beginTransaction();
  2362.         $dateJour = new \DateTime();
  2363.         $parameters json_decode($request->getContent(), true);
  2364.         $JSONData $parameters['msgInspection'];
  2365.         $JSONDataFacture $parameters['msgFacture'];
  2366.         $JSONDataProducteur $parameters['msgProducteur'];
  2367.         $JSONDataIntention $parameters['msgIntention'];
  2368.         $JSONDataLocalisation $parameters['msgLocalisation'];
  2369.         $JSONDataClient $parameters['msgClient'];
  2370.         $JSONDataImage $parameters['msgImage'];
  2371.         $idUtil $parameters['idUtil'];
  2372.         // $this->addHistoriqueAction($em, "SynchronisationLocalisation", 1, "test", 0, 0, 1,$JSONDataFacture);
  2373.         $objetAgent NULL;
  2374.         //var_dump($idUtil );exit;
  2375.         $objetUtilisateur null;
  2376.         $oldDateSynchronisation =  new \DateTime();
  2377.         if ($idUtil != null) {
  2378.             $objetUtilisateur $utilisateurRepository->find($idUtil);
  2379.             $oldDateSynchronisation $this->setDateSynchronisation($em$objetUtilisateur);
  2380.             $objetAgent $fournisseurRepository->findOneBy(['utilisateur' => $objetUtilisateur]);
  2381.             $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$objetUtilisateur->getAbonne(), $abonneRepository));
  2382.         }
  2383.         $queryResul = array();
  2384.         //Liste des donnes a prendre #endregion          
  2385.         //Mise a jour des donnees
  2386.         
  2387.         // $JSONData = str_replace("QE#","",$JSONData);
  2388.         $this->traiteDonneeAjoutProducteur(
  2389.             $em,
  2390.             $JSONDataProducteur,
  2391.             $utilisateurRepository,
  2392.             $inspectionRepository,
  2393.             $anneeCampagneRepository,
  2394.             $villeRepository,
  2395.             $producteurRepository,
  2396.             $groupementRepository,
  2397.             $producteurGroupementRepository,
  2398.             $zoneProducteurRepository,
  2399.             $surfaceAnneeRepository,
  2400.             $planteRepository,
  2401.             $projetRepository
  2402.         );
  2403.         $this->traiteDonneeAjoutParcelle(
  2404.             $em,
  2405.             $JSONDataIntention,
  2406.             $produitRepository,
  2407.             $villeRepository,
  2408.             $surfaceRepository,
  2409.             $utilisateurRepository,
  2410.             $producteurRepository,
  2411.             $anneeCampagneRepository,
  2412.             $surfaceAnneeRepository,
  2413.             $planteRepository,
  2414.             $projetRepository
  2415.         );
  2416.         $this->traiteDonneeAjoutClient(
  2417.             $em,
  2418.             $JSONDataClient,
  2419.             $idUtil,
  2420.             $utilisateurRepository,
  2421.             $villeRepository,
  2422.             $producteurRepository,
  2423.             $clientRepository,
  2424.             $prixRigueurRepository
  2425.         );
  2426.         $this->traiteDonneeInspection(
  2427.             $em,
  2428.             $JSONData,
  2429.             $utilisateurRepository,
  2430.             $inspectionRepository,
  2431.             $anneeCampagneRepository,
  2432.             $surfaceAnneeRepository,
  2433.             $inspectionRempliRepository,
  2434.             $questionInspectionRepository,
  2435.             $inspectionReponseRepository,
  2436.             $villeRepository,
  2437.             $producteurRepository,
  2438.             $planteRepository,
  2439.             $projetRepository,
  2440.             $surfaceAbonneRepository,
  2441.             $producteurAbonneRepository,
  2442.             $programmeRepository,
  2443.             $groupementRepository,
  2444.             $evenementRepository,
  2445.             $clientRepository,
  2446.             $fournisseurRepository
  2447.         );
  2448.        $this->traiteDonneeFacture(
  2449.             $em,
  2450.             $JSONDataFacture,
  2451.             $produitRepository,
  2452.             $villeRepository,
  2453.             $clientRepository,
  2454.             $surfaceRepository,
  2455.             $commandeRepository,
  2456.             $prixRigueurRepository,
  2457.             $utilisateurRepository,
  2458.             $producteurRepository,
  2459.             $anneeCampagneRepository,
  2460.             $fournisseurRepository,
  2461.             $surfaceAnneeRepository,
  2462.             $localisationRepository,
  2463.             $cibleRepository,
  2464.             $caracteristiquePrixRepository,
  2465.             $infoInventaireRepository,
  2466.             $ligneCommandeRepository,
  2467.             $typeOperationRepository,
  2468.             $inventaireRepository,
  2469.             $operationRepository,
  2470.             $tableRepository,
  2471.             $surfaceAbonneRepository,
  2472.             $producteurAbonneRepository,
  2473.             $livrerRepository,
  2474.             $operationManager,
  2475.             $caisseRepository,
  2476.             $infoLivrerRepository,
  2477.             $etatOpportuniteRepository
  2478.         );
  2479.         $this->traiteDonneeImage($em$JSONDataImage$parameters$surfaceAnneeRepository$inspectionRempliRepository$producteurRepository$imageRepository$type=1);
  2480.         $this->traiteDonneeAjoutLocalisation(
  2481.             $em,
  2482.             $JSONDataLocalisation,
  2483.             $produitRepository,
  2484.             $villeRepository,
  2485.             $surfaceRepository,
  2486.             $utilisateurRepository,
  2487.             $producteurRepository,
  2488.             $anneeCampagneRepository,
  2489.             $surfaceAnneeRepository,
  2490.             $localisationRepository,
  2491.             $planteRepository,
  2492.             $projetRepository,
  2493.             $surfaceAbonneRepository,
  2494.             $inspectionRempliRepository,
  2495.             $commandeRepository
  2496.         );
  2497.         // $em->getConnection()->commit();
  2498.         $objetProducteur $producteurRepository->findOneBy(array("utilisateur" => $objetUtilisateur));
  2499.         if ($objetUtilisateur->getTypeUtilisateur() == or $objetUtilisateur->getTypeUtilisateur() == 3) {
  2500.             $id 0;
  2501.             $tabVille $zoneProducteurRepository->findBy(array("producteur" => $objetProducteur));
  2502.             if ($objetUtilisateur->getTypeUtilisateur() == 3) {
  2503.                 $objetProducteurGroupement $producteurGroupementRepository->findOneBy(array("producteur" => $objetProducteur));
  2504.                 if ($objetProducteurGroupement->getGroupement() != null)
  2505.                     $groupementId $objetProducteurGroupement->getGroupement()->getId();
  2506.             }
  2507.         } else {
  2508.             $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent"etatSeTrouver" => 1));
  2509.         }
  2510.         if ($idUtil != null)
  2511.             $queryResult[0]['historique'] = $this->getHistoriqueAction($em$objetUtilisateur->getAbonne()->getId(), 1$oldDateSynchronisation->format("Y-m-d H:i:s"));
  2512.         else
  2513.             $queryResult[0]['historique'] = array();
  2514.         $queryResult[0]["listeFournisseur"]  = array();
  2515.         $queryResult[0]["variete"] = array();
  2516.         if ($idUtil != null) {
  2517.             if ($objetUtilisateur->getCaisse() != null) {
  2518.                 $caisseId $objetUtilisateur->getCaisse()->getId();
  2519.             } else {
  2520.                 $caisseId 0;
  2521.             }
  2522.             $queryResult[0]["client"] = $clientRepository->getAllClientCaisseAPi($objetUtilisateur->getAbonne()->getId(), $caisseId);   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  2523.             if ($objetUtilisateur->getCaisse() == null) {
  2524.                 $queryResult[0]["variete"] = $produitRepository->getAllProduitCategorieAPI(0$objetUtilisateur->getAbonne()->getId());
  2525.             } else {
  2526.                 $queryResult[0]["variete"] = $produitRepository->getAllProduitCaisseAPI($objetUtilisateur->getAbonne()->getId(), $objetUtilisateur->getCaisse()->getId());
  2527.             }
  2528.             $queryResult[0]["listeFournisseur"]  = $fournisseurRepository->getAllFournisseurByType(2$objetUtilisateur->getAbonne()->getId());
  2529.             $queryResult[0]["listeTable"]  = $tableRepository->getAllTableAPI($objetUtilisateur->getAbonne()->getId());
  2530.             $groupementId 0;
  2531.             if ($objetUtilisateur->getTypeUtilisateur() == 3) {
  2532.                 $objetProducteur $producteurRepository->findOneBy(array("utilisateur" => $objetUtilisateur));
  2533.                 $objetProducteurGroupement $producteurGroupementRepository->findOneBy(array("producteur" => $objetProducteur));
  2534.                 if ($objetProducteurGroupement->getGroupement() != null)
  2535.                     $groupementId $objetProducteurGroupement->getGroupement()->getId();
  2536.             }
  2537.             // $queryResult[0]["cooperative"] = $groupementRepository->getApiAllGroupement($objetUtilisateur->getAbonne()->getId(), $groupementId);   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  2538.             $queryResult[0]["cooperative"] = $groupementRepository->getApiAllGeneralGroupement($objetUtilisateur->getAbonne()->getId(), $groupementId$niveau 3$tabVille$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']); //$groupementRepository->getApiAllGroupement($objetUtilisateur->getAbonne()->getId(), $groupementId );   //getApiAllClient(0,0,0,2,0,0,[],$objetUtilisateur->getAbonne()->getId()) ; 
  2539.             $queryResult[0]["inspectionproduit"] = $inspectionRepository->getListeApiInspectionProduit($objetUtilisateur->getAbonne()->getId());
  2540.             $queryResult[0]["inspectionprofil"] = $inspectionRepository->getListeApiInspectionProfil($objetUtilisateur->getAbonne()->getId());
  2541.             $queryResult[0]["listeSac"] = $sacRepository->getListeSac($objetUtilisateur->getAbonne()->getId());
  2542.             $queryResult[0]["listePlante"] = $planteRepository->getListePlante($objetUtilisateur->getAbonne()->getId());
  2543.             $queryResult[0]["entrepot"] = $entrepotRepository->getListeEntrepot($objetUtilisateur->getAbonne()->getId());
  2544.             /*  $listeInspection = $inspectionRepository->getListeApiInspection($id, $objetUtilisateur->getAbonne()->getId())  ;       
  2545.                 $tablInspection = array();   
  2546.                 $i=0;
  2547.                 $tablInspection  = $this->getInspectionInfo($em, $listeInspection, $objetUtilisateur,$inspectionRepository,$categorieQuestionInspectionRepository, $reponseQuestionInspectionRepository);
  2548.                 $queryResult[0]["inspection"] =$tablInspection; */
  2549.             $queryResult[0]["configuration"] = $objetUtilisateur->getAbonne()->getConfiguration();
  2550.             //$queryResult[0]["ville"] =$villeRepository->getVilleUtilisateurAPI($objetUtilisateur->getAbonne()->getId());
  2551.             if ($objetAgent != null or $objetUtilisateur->getTypeUtilisateur() == or $objetUtilisateur->getTypeUtilisateur() == 3) {
  2552.                 $queryResult[0]["ville"] = $villeRepository->getVilleUtilisateurAPIByZone($objetUtilisateur->getAbonne()->getId(), $tabVille); //$fournisseurRepository->getFournisseurSeTrouverAPI($objetAgent->getId());//
  2553.             } else {
  2554.                 $queryResult[0]["ville"] = array();
  2555.             }
  2556.             //activite de travail
  2557.             $queryResult[0]["pec"] = $produitEtapeCroissanceRepository->getAllEtapeCroissanceProduit($objetUtilisateur->getAbonne()->getId());
  2558.             $queryResult[0]["tachepec"] = $tacheProduitEtapeCroissanceRepository->getAllEtapeCroissanceProduitTache($objetUtilisateur->getAbonne()->getId());
  2559.             if ($objetUtilisateur->getTypeUtilisateur() == 2)
  2560.                 $type 2;
  2561.             else
  2562.                 $type 3;
  2563.             if ($objetUtilisateur->getCaisse() != null) {
  2564.                 $queryResult[0]["typeOperation"]  = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type$objetUtilisateur->getCaisse()->getId());
  2565.             } else {
  2566.                 $queryResult[0]["typeOperation"]  = $typeOperationRepository->getListeTypeOperationAPI($objetUtilisateur->getAbonne()->getId(), $type);
  2567.             }
  2568.             //Ajouter l'abonne a l'inspection 
  2569.             $id 0;
  2570.             //$listeInspection = $inspectionRepository->getListeApiInspection($id, $objetUtilisateur->getAbonne()->getId())  ;   
  2571.             $queryResult[0]["listeImage"] = $imageRepository->getAllImageAPI($objetUtilisateur->getAbonne()->getId());
  2572.             $tablInspection = array();
  2573.             //$objetHistoriqueAction = $historiqueActionRepository->findBy(array("fournisseur"=>$objetAgent,"operation"=>2));
  2574.             $objetHistoriqueAction $this->getHistoriqueAgentAction($em$objetUtilisateur->getAbonne()->getId(), 1$oldDateSynchronisation->format("Y-m-d H:i:s"));
  2575.             $queryResult[0]["producteur"] = array();
  2576.             $queryResult[0]["intention"] = array();
  2577.             if (count($objetHistoriqueAction) > 0) {
  2578.                 $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$objetUtilisateur->getAbonne(), $abonneRepository));
  2579.                 if ($objetAgent == null) {
  2580.                     $id 0;
  2581.                     $idville 1;
  2582.                     $objetVille $villeRepository->find($idville);
  2583.                     $tabVille[0] = $seTrouverRepository->findOneBy(array("ville" => $objetVille));
  2584.                     if ($idville == 0) {
  2585.                         $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent"etatSeTrouver" => 1));
  2586.                     }
  2587.                 } else {
  2588.                     $id 0;
  2589.                     //$idville = $objetAgent->getVille()->getId();
  2590.                     $tabVille $seTrouverRepository->findBy(array("fournisseur" => $objetAgent"etatSeTrouver" => 1));
  2591.                 }
  2592.                 if ($objetUtilisateur->getTypeUtilisateur() != 3) {
  2593.                     if ($objetUtilisateur->getTypeUtilisateur() == 2) {
  2594.                         $queryResult[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 0$objetProducteur->getId(), 000);
  2595.                     } else {
  2596.                         $queryResult[0]["producteur"] = $fournisseurRepository->getAllFournisseurProducteurAPINew($id$tabVille$niveau 3$prod 0$type 0$objetUtilisateur->getAbonne()->getId(), $caisse 000$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  2597.                     }
  2598.                     if ($objetUtilisateur->getAbonne()->getSiExploitation() != 1) {
  2599.                         $queryResult[0]["intention"] = $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 01);
  2600.                     } else {
  2601.                         $listeExploitation $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 10);
  2602.                         $listeParcelle $surfaceAnneeRepository->getApiNewIntentionProducteurFournisseur($id$tabVille0$niveau 3$objetUtilisateur->getAbonne()->getId(), 0$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], 00);
  2603.                         $queryResult[0]["intention"] = array_merge($listeExploitation$listeParcelle);
  2604.                     }
  2605.                 }
  2606.             }
  2607.             $i 0;
  2608.             // $tablInspection  = $this->getInspectionInfo($em, $listeInspection, $objetUtilisateur);
  2609.             // $queryResult[0]["inspection"] =$tablInspection;
  2610.         } else {
  2611.             $queryResult[0]["variete"] = array();
  2612.         }
  2613.         $queryResult[0]["configuration"] = $objetUtilisateur->getAbonne()->getConfiguration();
  2614.         
  2615.         $listeProgramme1 $programmeRepository->getListeProgramme($objetUtilisateur->getAbonne()->getId(), $dateJour->format("d/m/Y H:i:s"), 0);
  2616.         $listeProgramme2 $programmeRepository->getListeProgrammeGeneral($objetUtilisateur->getAbonne()->getId(), $dateJour->format("d/m/Y H:i:s"), 1);
  2617.         $queryResult[0]["programme"] =   array_merge($listeProgramme1$listeProgramme2);
  2618.         $queryResult[0]["article"] = $articleRepository->getAllOrOneArticleSousActifAPI(0$objetUtilisateur->getAbonne()->getId());
  2619.         $queryResult[0]["rubrique"] = $rubriqueRepository->getAllOrOneRubriqueSousActifAPI($objetUtilisateur->getAbonne()->getId());
  2620.         $queryResult[0]["transformation"] = $transformationRepository->getAllTransformationAPI($objetUtilisateur->getAbonne()->getId(), 1);
  2621.         $queryResult[0]["etapeprocessus"] = $etapeProcessusRepository->getAllEtapeProcessusAPI($objetUtilisateur->getAbonne()->getId());
  2622.         if ($objetUtilisateur->getCaisse() == null)
  2623.             $queryResult[0]["prix"] = $prixRigueurRepository->getAllPrixByPartenaireAPI(0$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']); //getAllPrixDirectAPI($objetUtilisateur->getAbonne()->getId());    //getAllVarietePrixRigueurAPI(0,2,$objetUtilisateur->getAbonne()->getId());
  2624.         else
  2625.             $queryResult[0]["prix"] = $prixRigueurRepository->getAllPrixCaisseAPI($objetUtilisateur->getAbonne()->getId(), $caisseId);    //getAllVarietePrixRigueurAPI(0,2,$objetUtilisateur->getAbonne()->getId());
  2626.         $queryResult[0]["etatUtilisateur"] = $objetUtilisateur->getEtat();
  2627.         $queryResult[0]["produittypeoperation"] = $produitTypeOperationRepository->getAllProduitTypeOperation($objetUtilisateur->getAbonne()->getId());
  2628.         $queryResult[0]["evenement"] = $evenementRepository->getListeApiEvenement($objetUtilisateur->getAbonne()->getId());
  2629.        
  2630.         //fin de la sychronisation
  2631.         if($objetUtilisateur!=null){
  2632.             $dateFinSynchronisation =  new \DateTime();
  2633.             $interval $dateFinSynchronisation->diff($objetUtilisateur->getDateSynchronisation());
  2634.             $duree $interval->format("%H:%I:%S ");
  2635.             $historiqueActionUtilisateur = new HistoriqueActionUtilisateur();
  2636.             $historiqueActionUtilisateur->setDureeSynchronisation($duree);
  2637.             $historiqueActionUtilisateur->setUtilisateur($objetUtilisateur);
  2638.             $historiqueActionUtilisateur->setDatePublication($dateFinSynchronisation);
  2639.             $em->persist($historiqueActionUtilisateur);
  2640.             $em->flush($historiqueActionUtilisateur);
  2641.         }
  2642.         //$queryResult['variete'] = $this->getHistoriqueAction($em, $idUtil, 1) ; 
  2643.         //    var_dump($detailUtil);exit;       
  2644.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  2645.         $response = new Response($dataSend);
  2646.         $response->headers->set('Content-Type''application/json');
  2647.         return $response;
  2648.     }
  2649.     /**
  2650.      * Creates a new user entity.
  2651.      *
  2652.      * @Route("/save/image/inspection/rempli", name="api_save_image_inspection_rempli")
  2653.      * @Method({"GET","POST"})
  2654.      */
  2655.     public function saveImageInspectionRempliAction(Request $requestInspectionRempliRepository $inspectionRempliRepository)
  2656.     {
  2657.         $token $this->_tokenStorage->getToken();
  2658.         if (!$token) {
  2659.             return $this->json([
  2660.                 'status' => 400,
  2661.                 'user' => null
  2662.             ], 400);
  2663.         }
  2664.         $em $this->getDoctrine()->getManager();
  2665.         $data $request->getContent();
  2666.         $this->em $this->getDoctrine()->getManager();
  2667.         $codeGenere $request->request->get('codeGenere');
  2668.         $tablQuestionInspection = array();
  2669.         $objetInspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $codeGenere));
  2670.         $file_path =   __DIR__ '/../../../public/inspection/';;
  2671.         $file_path $file_path basename($_FILES['uploaded_file']['name']);
  2672.         $objetImage = new Image();
  2673.         $objetImage->setUrlImage(basename($_FILES['uploaded_file']['name']));
  2674.         $objetImage->setInspectionrempli($objetInspectionRempli);
  2675.         $objetImage->setCodeGenere($codeGenere);
  2676.         $objetImage->setTitreImage("Inspection Signature");
  2677.         $em->persist($objetImage);
  2678.         $em->flush($objetImage);
  2679.         if (move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
  2680.             echo "success";
  2681.         } else {
  2682.             echo "fail";
  2683.         }
  2684.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tablQuestionInspection), 'json');
  2685.         $response = new Response($dataSend);
  2686.         $response->headers->set('Content-Type''application/json');
  2687.         return $response;
  2688.     }
  2689.     /**
  2690.      * Creates a new user entity.
  2691.      *
  2692.      * @Route("/save/info/map/data", name="api_save_info_map_data")
  2693.      * @Method({"GET","POST"})
  2694.      * 
  2695.      */
  2696.     public function saveInfoMapDataAction(Request $requestUtilisateurRepository $utilisateurRepositorySurfaceAnneeRepository $surfaceAnneeRepositorySurfaceAbonneRepository $surfaceAbonneRepository,
  2697.     AnneeCampagneRepository $anneeCampagneRepositoryPlanteRepository $planteRepositoryProjetRepository $projetRepositoryProducteurRepository $producteurRepository)
  2698.     {
  2699.         $token $this->_tokenStorage->getToken();
  2700.         if (!$token) {
  2701.             return $this->json([
  2702.                 'status' => 400,
  2703.                 'user' => null
  2704.             ], 400);
  2705.         }
  2706.         $em $this->getDoctrine()->getManager();
  2707.         $parameters json_decode($request->getContent(), true);
  2708.         $idUtil trim($parameters['idUtil']);
  2709.         $parCodeGenere trim($parameters['parCodeGenere']);
  2710.         $superficieRelle trim($parameters['superficieRelle']);
  2711.         $margeErreur trim($parameters['margeErreur']);
  2712.         $LatLngJSONData trim($parameters['JSONData']);
  2713.         $dateOperation = new \DateTime();
  2714.         $queryResult = array();
  2715.         //Liste des donnes a prendre #endregion
  2716.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  2717.         // $listeAction = $this->getHistoriqueAction($em,$idUtil,1);
  2718.         $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $parCodeGenere));
  2719.         if( $objetSurfaceAnnee == null ){
  2720.             $tabInfomation["etat"] = false;
  2721.             $tabInfomation["codeGenere"] = "";
  2722.             $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2723.             $response = new Response($dataSend);
  2724.             $response->headers->set('Content-Type''application/json');
  2725.             return $response;
  2726.         }
  2727.         if ($superficieRelle != null) {
  2728.             if($superficieRelle != null && $superficieRelle != '0' && $superficieRelle != 'null' )
  2729.                 $objetSurfaceAnnee->setSuperficieRelle($superficieRelle);
  2730.         }
  2731.         $em->persist($objetSurfaceAnnee);
  2732.         $em->flush($objetSurfaceAnnee);
  2733.         $tabPoint = array();
  2734.         $idVille 0;
  2735.         $explCodeGenere0;
  2736.         if($objetSurfaceAnnee->getVille()!=null)
  2737.             $idVille $objetSurfaceAnnee->getVille()->getId();
  2738.         if($objetSurfaceAnnee->getSurfaceannee()!= null)
  2739.             $explCodeGenere $objetSurfaceAnnee->getSurfaceannee()->getCodeGenere();
  2740.         $donnee $objetSurfaceAnnee->getSuperficie(). "#" $objetSurfaceAnnee->getProducteur()->getCodeGenere() . "#" $parCodeGenere "#" $parCodeGenere"#" $idVille  "#" $objetSurfaceAnnee->getProduit()->getId() . "#0#" $idUtil "#" $explCodeGenere "#" $objetSurfaceAnnee->getTypeParcelle() . "#0#".$objetSurfaceAnnee->getSuperficieRelle()."#3" ;
  2741.         if($objetSurfaceAnnee->getSiPolygon()== 1)
  2742.             $this->initialiserLesAncienPolygon($em$objetSurfaceAnnee->getId(), $typeLocalisation=2);
  2743.         //Mise a jour des donnees
  2744.         $listLocalisation json_decode($LatLngJSONDatatrue);
  2745.         $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurfaceAnnee]);
  2746.         $i 0;
  2747.         $firstPoint 0;
  2748.         $donnee1 $LatLngJSONData;
  2749.         $this->addHistoriqueAction($em"P"1$parCodeGenere$objetUtilisateur->getId(), $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee1$utilisateurRepository);
  2750.         $this->addHistoriqueAction($em'ProducteurIntention'1$parCodeGenere$idUtil11$donnee$utilisateurRepository);
  2751.      
  2752.         if (count($listLocalisation) != 0) {
  2753.             foreach ($listLocalisation as $localisation) {
  2754.                 if ($i == 0)
  2755.                     $firstPoint = new Point($localisation["longitude"], $localisation["latitude"], null);
  2756.                 $uneLocalisation = new Localisation();
  2757.                 $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  2758.                 $uneLocalisation->setSurfaceabonne($objetSurfaceAbonne);
  2759.                 $uneLocalisation->setLatitude($localisation["latitude"]);
  2760.                 $uneLocalisation->setLongitude($localisation["longitude"]);
  2761.                 $uneLocalisation->setTypeLocalisation($localisation["typeLocalisation"]);
  2762.                 $uneLocalisation->setCodeGenere($localisation["codeGenere"]);
  2763.                 $uneLocalisation->setAbonne($objetUtilisateur->getAbonne());
  2764.                 // $uneLocalisation->setEtatLocalisation(2);
  2765.                 $uneLocalisation->setUtilisateur($objetUtilisateur);
  2766.                 //$donnee = $localisation["latitude"]."-".$localisation["longitude"]."-".$localisation["typeLocalisation"]."-".$localisation["codeGenere"]."-".$objetUtilisateur->getAbonne()->getId();
  2767.                 
  2768.                 $em->persist($uneLocalisation);
  2769.                 $em->flush($uneLocalisation);
  2770.                 $tabPoint[$i] = new Point($localisation["longitude"], $localisation["latitude"], null);
  2771.                 $i++;
  2772.                 $tabPolygone 0;
  2773.                 if($localisation['tabLocalisation'] != "")
  2774.                     $tabPolygone $localisation['tabLocalisation'];
  2775.                 $donnee $localisation['utilisateurId'] . "#" $localisation['parCodeGenere'] . "#" $localisation['codeGenere'] . "#" $localisation['latitude'] . "#" $localisation['longitude'] . "#" $localisation['typeLocalisation']."#" $tabPolygone;
  2776.                 $this->addHistoriqueAction($em"ProducteurLocalisation"1$parCodeGenere$objetUtilisateur->getId(), $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee$utilisateurRepository);
  2777.             }
  2778.             //if($firstPoint != 0) {
  2779.             //if($firstPoint != 0)
  2780.             $tabPoint[$i] = $firstPoint;
  2781.             $infoPolygon = array(
  2782.                 new LineString(
  2783.                     $tabPoint
  2784.                 )
  2785.             );
  2786.             $polygon = new Polygon($infoPolygon);
  2787.             $objetSurfaceAnnee->setSiPolygon(1);
  2788.             $objetSurfaceAnnee->setPolygon($polygon);
  2789.             $em->persist($objetSurfaceAnnee);
  2790.             $em->flush($objetSurfaceAnnee);
  2791.             $titre "polygonAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  2792.             $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  2793.             $donnee2 $objetSurfaceAnnee->getSuperficie() . "#" $objetSurfaceAnnee->getProducteur()->getCodeGenere() . "#" $objetSurfaceAnnee->getCodeGenere() . "#" $objetSurfaceAnnee->getCodeGenere() . "#1#" $objetSurfaceAnnee->getProduit()->getId() . "#0#" $idUtil "#" $objetSurfaceAnnee->getCodeGenere() . "#" $objetSurfaceAnnee->getTypeParcelle() . "#1#".$objetSurfaceAnnee->getSuperficieRelle()."#3";
  2794.             $this->addHistoriqueAction($em'ProducteurIntention'1$objetSurfaceAnnee->getCodeGenere(), $idUtil$objetSurfaceAnnee->getProducteur()->getId(), 1$donnee2$utilisateurRepository);
  2795.             // }
  2796.         }
  2797.         $queryResult $surfaceAnneeRepository->getIntentionProducteur($objetSurfaceAnnee->getProducteur()->getId());
  2798.         $tabInfomation["etat"] = true;
  2799.         $tabInfomation["codeGenere"] = $parameters['parCodeGenere'];
  2800.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2801.         $response = new Response($dataSend);
  2802.         $response->headers->set('Content-Type''application/json');
  2803.         return $response;
  2804.     }
  2805.     /**
  2806.      * Creates a new user entity.
  2807.      *
  2808.      * @Route("/get/synchro/data/parcelle/producteur", name="api_get_synchro_data_parcelle_producteur")
  2809.      * @Method({"GET","POST"})
  2810.      * 
  2811.      */
  2812.     public function getSynchroDataParcelleProducteurAction(
  2813.         Request $request,
  2814.         ProducteurRepository $producteurRepository,
  2815.         UtilisateurRepository $utilisateurRepository,
  2816.         ProduitRepository $produitRepository,
  2817.         ProducteurGroupementRepository $producteurGroupementRepository,
  2818.         VilleRepository $villeRepository,
  2819.         SurfaceRepository $surfaceRepository,
  2820.         InspectionRepository $inspectionRepository,
  2821.         GroupementRepository $groupementRepository,
  2822.         AnneeCampagneRepository $anneeCampagneRepository,
  2823.         SurfaceAnneeRepository $surfaceAnneeRepository,
  2824.         ZoneProducteurRepository $zoneProducteurRepository,
  2825.         PlanteRepository $planteRepository,
  2826.         ProjetRepository $projetRepository,
  2827.         
  2828.     ) {
  2829.         $token $this->_tokenStorage->getToken();
  2830.         if (!$token) {
  2831.             return $this->json([
  2832.                 'status' => 400,
  2833.                 'user' => null
  2834.             ], 400);
  2835.         }
  2836.         $em $this->getDoctrine()->getManager();
  2837.         // $em->getConnection()->beginTransaction();
  2838.         $dateJour = new \DateTime();
  2839.         $parameters json_decode($request->getContent(), true);
  2840.         $JSONDataProducteur $parameters['msgProducteur'];
  2841.         $JSONDataIntention $parameters['msgIntention'];
  2842.         // $JSONData = str_replace("QE#","",$JSONData);
  2843.         $this->traiteDonneeAjoutProducteur(
  2844.             $em,
  2845.             $JSONDataProducteur,
  2846.             $utilisateurRepository,
  2847.             $inspectionRepository,
  2848.             $anneeCampagneRepository,
  2849.             $villeRepository,
  2850.             $producteurRepository,
  2851.             $groupementRepository,
  2852.             $producteurGroupementRepository,
  2853.             $zoneProducteurRepository,
  2854.             $surfaceAnneeRepository,
  2855.             $planteRepository,
  2856.             $projetRepository
  2857.         );
  2858.         $this->traiteDonneeAjoutParcelle(
  2859.             $em,
  2860.             $JSONDataIntention,
  2861.             $produitRepository,
  2862.             $villeRepository,
  2863.             $surfaceRepository,
  2864.             $utilisateurRepository,
  2865.             $producteurRepository,
  2866.             $anneeCampagneRepository,
  2867.             $surfaceAnneeRepository,
  2868.             $planteRepository,
  2869.             $projetRepository
  2870.         ); 
  2871.         //Envoi des donnée
  2872.         $tabInfomation["etat"] = true;
  2873.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2874.         $response = new Response($dataSend);
  2875.         $response->headers->set('Content-Type''application/json');
  2876.         return $response;
  2877.        
  2878.     }
  2879.     /**
  2880.      * Creates a new user entity.
  2881.      *
  2882.      * @Route("/save/synchro/info/map/data", name="api_save_synchro_info_map_data")
  2883.      * @Method({"GET","POST"})
  2884.      * 
  2885.      */
  2886.     public function saveSynchroInfoMapDataAction(Request $requestUtilisateurRepository $utilisateurRepositorySurfaceAnneeRepository $surfaceAnneeRepositorySurfaceAbonneRepository $surfaceAbonneRepository,
  2887.     AnneeCampagneRepository $anneeCampagneRepositoryPlanteRepository $planteRepositoryProjetRepository $projetRepositoryProducteurRepository $producteurRepository,
  2888.     LocalisationRepository $localisationRepository,InspectionRempliRepository  $inspectionRempliRepositoryCommandeRepository $commandeRepository,)
  2889.     {
  2890.         $token $this->_tokenStorage->getToken();
  2891.         if (!$token) {
  2892.             return $this->json([
  2893.                 'status' => 400,
  2894.                 'user' => null
  2895.             ], 400);
  2896.         }
  2897.         $em $this->getDoctrine()->getManager();
  2898.         $parameters json_decode($request->getContent(), true);
  2899.         $idUtil trim($parameters['idUtil']);
  2900.         $parCodeGenere trim($parameters['parCodeGenere']);
  2901.         $superficieRelle trim($parameters['superficieRelle']);
  2902.         $margeErreur trim($parameters['margeErreur']);
  2903.         $LatLngJSONData trim($parameters['JSONData']);
  2904.         $dateOperation = new \DateTime();
  2905.         $queryResult = array();
  2906.         //Liste des donnes a prendre #endregion
  2907.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  2908.         
  2909.         // $listeAction = $this->getHistoriqueAction($em,$idUtil,1);
  2910.         $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $parCodeGenere));
  2911.         if( $objetSurfaceAnnee == null ){
  2912.             $tabInfomation["etat"] = false;
  2913.             $tabInfomation["codeGenere"] = "";
  2914.             $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2915.             $response = new Response($dataSend);
  2916.             $response->headers->set('Content-Type''application/json');
  2917.             return $response;
  2918.         }
  2919.         if ($superficieRelle != null) {
  2920.             if( $superficieRelle != '0' && $superficieRelle != 'null' )
  2921.                 $objetSurfaceAnnee->setSuperficieRelle($superficieRelle);
  2922.         }
  2923.         $em->persist($objetSurfaceAnnee);
  2924.         $em->flush($objetSurfaceAnnee);
  2925.         $tabPoint = array();
  2926.         if($objetSurfaceAnnee->getSiPolygon()== 1)
  2927.             $this->initialiserLesAncienPolygon($em$objetSurfaceAnnee->getId(), $typeLocalisation=2);
  2928.         //Mise a jour des donnees
  2929.         $tabLocalisation json_decode($LatLngJSONDatatrue);
  2930.         $listLocalisation $tabLocalisation["audit"];
  2931.         $infoLocalisation $tabLocalisation["simple"];
  2932.         $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurfaceAnnee]);
  2933.         $i 0;
  2934.         $firstPoint 0;
  2935.         $listLocalisation json_decode($listLocalisationtrue);
  2936.         $tabLocalisationSimple json_decode($infoLocalisationtrue);
  2937.         if(count($tabLocalisationSimple)!=0)
  2938.             $this->saveLocalisation($em,000$parCodeGenere$listLocalisation$tabLocalisationSimple[0], $surfaceAnneeRepository$utilisateurRepository,$localisationRepository,$surfaceAbonneRepository$inspectionRempliRepository,  $commandeRepository,$anneeCampagneRepository,$planteRepository$projetRepository$producteurRepository);
  2939.         $donnee1 $LatLngJSONData;
  2940.         $this->addHistoriqueAction($em"P"1$parCodeGenere$objetUtilisateur->getId(), $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee1$utilisateurRepository);
  2941.         if (count($listLocalisation) != 0) {
  2942.             foreach ($listLocalisation as $localisation) {
  2943.                 if ($i == 0)
  2944.                     $firstPoint = new Point($localisation["longitude"], $localisation["latitude"], null);
  2945.                 $uneLocalisation $localisationRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'codeGenere' => $localisation["codeGenere"]]);
  2946.                 if($uneLocalisation == null)
  2947.                     $uneLocalisation = new Localisation();
  2948.                 $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  2949.                 $uneLocalisation->setSurfaceabonne($objetSurfaceAbonne);
  2950.                 $uneLocalisation->setLatitude($localisation["latitude"]);
  2951.                 $uneLocalisation->setLongitude($localisation["longitude"]);
  2952.                 $uneLocalisation->setTypeLocalisation($localisation["typeLocalisation"]);
  2953.                 $uneLocalisation->setCodeGenere($localisation["codeGenere"]);
  2954.                 $uneLocalisation->setTabPolygone($localisation["tabLocalisation"]);
  2955.                 $uneLocalisation->setAbonne($objetUtilisateur->getAbonne());
  2956.                 // $uneLocalisation->setEtatLocalisation(2);
  2957.                 $uneLocalisation->setUtilisateur($objetUtilisateur);
  2958.                 //$donnee = $localisation["latitude"]."-".$localisation["longitude"]."-".$localisation["typeLocalisation"]."-".$localisation["codeGenere"]."-".$objetUtilisateur->getAbonne()->getId();
  2959.                 $donnee $localisation['utilisateurId'] . "#" $localisation['parCodeGenere'] . "#" $localisation['codeGenere'] . "#" $localisation['latitude'] . "#" $localisation['longitude'] . "#" $localisation['typeLocalisation']. "#" $localisation['tabLocalisation'];
  2960.                 $em->persist($uneLocalisation);
  2961.                 $em->flush($uneLocalisation);
  2962.                 $tabPoint[$i] = new Point($localisation["longitude"], $localisation["latitude"], null);
  2963.                 $i++;
  2964.                 $tabPolygone 0;
  2965.                 if($localisation['tabLocalisation'] != "" )
  2966.                     $tabPolygone $localisation['tabLocalisation'];
  2967.                 $donnee $localisation['utilisateurId'] . "#" $localisation['parCodeGenere'] . "#" $localisation['codeGenere'] . "#" $localisation['latitude'] . "#" $localisation['longitude'] . "#" $localisation['typeLocalisation']. "#" $tabPolygone;
  2968.                 $this->addHistoriqueAction($em"ProducteurLocalisation"1$parCodeGenere$objetUtilisateur->getId(), $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee$utilisateurRepository);
  2969.             }
  2970.             //if($firstPoint != 0) {
  2971.             //if($firstPoint != 0)
  2972.             $tabPoint[$i] = $firstPoint;
  2973.             $infoPolygon = array(
  2974.                 new LineString(
  2975.                     $tabPoint
  2976.                 )
  2977.             );
  2978.             $polygon = new Polygon($infoPolygon);
  2979.             $objetSurfaceAnnee->setSiPolygon(1);
  2980.             $objetSurfaceAnnee->setPolygon($polygon);
  2981.             $em->persist($objetSurfaceAnnee);
  2982.             $em->flush($objetSurfaceAnnee);
  2983.             $titre "polygonAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  2984.             $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  2985.             $donnee2 $objetSurfaceAnnee->getSuperficie() . "#" $objetSurfaceAnnee->getProducteur()->getCodeGenere() . "#" $objetSurfaceAnnee->getCodeGenere() . "#" $objetSurfaceAnnee->getCodeGenere() . "#1#" $objetSurfaceAnnee->getProduit()->getId() . "#0#" $idUtil "#" $objetSurfaceAnnee->getCodeGenere() . "#" $objetSurfaceAnnee->getTypeParcelle() . "#1#".$objetSurfaceAnnee->getSuperficieRelle()."#3";
  2986.             $this->addHistoriqueAction($em'ProducteurIntention'1$objetSurfaceAnnee->getCodeGenere(), $idUtil$objetSurfaceAnnee->getProducteur()->getId(), 1$donnee2$utilisateurRepository);
  2987.             // }
  2988.         }
  2989.         $queryResult $surfaceAnneeRepository->getIntentionProducteur($objetSurfaceAnnee->getProducteur()->getId());
  2990.         $tabInfomation["etat"] = true;
  2991.         $tabInfomation["codeGenere"] = $parameters['parCodeGenere'];
  2992.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  2993.         $response = new Response($dataSend);
  2994.         $response->headers->set('Content-Type''application/json');
  2995.         return $response;
  2996.     }
  2997.     /**
  2998.      * Creates a new user entity.
  2999.      *
  3000.      * @Route("/save/activite/culturale/data", name="api_save_activite_culturalle_data")
  3001.      * @Method({"GET","POST"})
  3002.      * 
  3003.      */
  3004.     public function saveActiviteCulturalleDataAction(
  3005.         Request $request,
  3006.         SurfaceAnneeRepository $surfaceAnneeRepository,
  3007.         UtilisateurRepository $utilisateurRepository,
  3008.         TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,
  3009.         AnneeCampagneRepository $anneeCampagneRepository,
  3010.         PlanteRepository $planteRepository,
  3011.         ProjetRepository $projetRepository,
  3012.         ProducteurRepository $producteurRepository
  3013.     ) {
  3014.         $token $this->_tokenStorage->getToken();
  3015.         if (!$token) {
  3016.             return $this->json([
  3017.                 'status' => 400,
  3018.                 'user' => null
  3019.             ], 400);
  3020.         }
  3021.         $em $this->getDoctrine()->getManager();
  3022.         $parameters json_decode($request->getContent(), true);
  3023.         $idUtil trim($parameters['idUtil']);
  3024.         $tachepecId trim($parameters['tachepecId']);
  3025.         $idOperation trim($parameters['varCodeGenere']);
  3026.         $datePublication trim($parameters['datePublication']);
  3027.         $description trim($parameters['description']);
  3028.         $typeActivite trim($parameters['typeActivite']);
  3029.         $codeGenere trim($parameters['codeGenere']);
  3030.         $objetTacheProduitEtapeCroissance $tacheProduitEtapeCroissanceRepository->find($tachepecId);
  3031.         $titre =  $objetTacheProduitEtapeCroissance->getActivite()->getTitreActivite();
  3032.         $tabIdUtil = [$idUtil];
  3033.         $queryResult = array();
  3034.         //Liste des donnes a prendre #endregion
  3035.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  3036.         $dateOperation = new \DateTime($datePublication);
  3037.         $this->saveTacheFormulaire($em$titre$description$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $heuredeb "00:00:00"$heurefin "00:00:00"$idOperation$tabIdUtil$idUtil,  $typeActivite$utilisateurRepository$anneCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3038.         //$queryResult = $surfaceAnneeRepository->getIntentionProducteur($idProd) ;             
  3039.         //    var_dump($detailUtil);exit;    
  3040.         $tabInfomation["etat"] = true;
  3041.         $tabInfomation["codeGenere"] = $parameters['codeGenere'];
  3042.         $dataSend =  $this->get('serializer')->serialize(array('data' => $tabInfomation), 'json');
  3043.         $response = new Response($dataSend);
  3044.         $response->headers->set('Content-Type''application/json');
  3045.         return $response;
  3046.     }
  3047.     function traiteDonneeInspection(
  3048.         $em,
  3049.         $JSONData,
  3050.         $utilisateurRepository,
  3051.         $inspectionRepository,
  3052.         $anneeCampagneRepository,
  3053.         $surfaceAnneeRepository,
  3054.         $inspectionRempliRepository,
  3055.         $questionInspectionRepository,
  3056.         $inspectionReponseRepository,
  3057.         $villeRepository,
  3058.         $producteurRepository,
  3059.         $planteRepository,
  3060.         $projetRepository,
  3061.         $surfaceAbonneRepository,
  3062.         $producteurAbonneRepository,
  3063.         $programmeRepository,
  3064.         $groupementRepository,
  3065.         $evenementRepository,
  3066.         $clientRepository,
  3067.         $fournisseurRepository
  3068.     ) {
  3069.         $prodCodeGenere "";
  3070.         $parCodeGenere "";
  3071.         $JSONData str_replace("QE#"""$JSONData);
  3072.         $tabJSONData explode("|||"$JSONData);
  3073.         $listInspectionRempli json_decode($tabJSONData[0], true);
  3074.         $em->getConnection()->beginTransaction();
  3075.         $dateOperation = new \DateTime();
  3076.         $objetEvenement null;
  3077.         if (count($tabJSONData) > 1) {
  3078.             if ($listInspectionRempli != NULL) {
  3079.                 foreach ($listInspectionRempli as $unInspectionRempli) {
  3080.                     $utilisateurId $unInspectionRempli["utilisateurId"];
  3081.                     $objetUtilisateur $utilisateurRepository->find($unInspectionRempli["utilisateurId"]);
  3082.                     $objetInspection $inspectionRepository->find($unInspectionRempli["inpectionId"]);
  3083.                     $prodCodeGenere $unInspectionRempli["producteurId"];
  3084.                     $parCodeGenere $unInspectionRempli["parCodeGenere"];
  3085.                     //$objetAnnee = $anneeCampagneRepository->find($unInspectionRempli["anneeId"]);
  3086.                     $objetProducteur $producteurRepository->findOneBy(["codeGenere" => $unInspectionRempli["producteurId"], 'abonne' => $objetUtilisateur->getAbonne()]);
  3087.                     $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $unInspectionRempli["parCodeGenere"], 'abonne' => $objetUtilisateur->getAbonne()));
  3088.                     $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurfaceAnnee]);
  3089.                     //if($objetInspection->getTypeInspection() == 2)
  3090.                         //$objetEvenement = $evenementRepository->find((int)$unInspectionRempli["prodCodeGenere"]);
  3091.                     if($objetInspection->getTypeInspection() == 2){
  3092.                         $objetEvenement $evenementRepository->find((int)$prodCodeGenere);
  3093.                     }else if($objetInspection->getTypeInspection() == 3){
  3094.                         $objetClient $clientRepository->find((int)$prodCodeGenere);
  3095.                     }else if($objetInspection->getTypeInspection() == 4){
  3096.                         $objetFournisseur $fournisseurRepository->find((int)$prodCodeGenere);
  3097.                     }else if($objetInspection->getTypeInspection() == 11){
  3098.                         $objetGroupement $groupementRepository->find((int)$prodCodeGenere);
  3099.                     }
  3100.                     
  3101.                        
  3102.                     $objetProduit null;
  3103.                     if ($objetSurfaceAnnee != null)
  3104.                         $objetProduit $objetSurfaceAnnee->getProduit(); 
  3105.                     if ($objetSurfaceAnnee != null)
  3106.                         $objetSurfaceAnnee->setDateVisite(new \DateTime($unInspectionRempli["datePublication"]));
  3107.                     $objetAnnee $anneeCampagneRepository->findOneBy(['produit' => $objetProduit'etatAnneeCampagne' => 1]);
  3108.                     $objetProducteurAbonne $producteurAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'producteur' => $objetProducteur'abonne' => $objetUtilisateur->getAbonne()]);
  3109.                     $inspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $unInspectionRempli["codeGenere"]));
  3110.                     $objetProgramme $programmeRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'etatProgramme' => 1]);
  3111.                     //{
  3112.                     if ($objetInspection != null) {
  3113.                         
  3114.                         if ($objetInspection->getTypeInspection() == 0) {
  3115.                             if ($objetInspection->getSiRepetitif() != 1){
  3116.                                 //if ( $objetProducteur != null  && $inspectionRempli != null )
  3117.                                     //$this->initialiserInspectionRempliProducteur($em,  $objetProducteur->getId(), $unInspectionRempli["inpectionId"]);
  3118.                             }
  3119.                         } else if ($objetInspection->getTypeInspection() == 1) {
  3120.                             if ($objetInspection->getSiRepetitif() != ) {
  3121.                                 //if ($objetSurfaceAnnee != null && $inspectionRempli != null)
  3122.                                     //$this->initialiserInspectionRempliSurface($em, $objetSurfaceAnnee->getId(), $unInspectionRempli["inpectionId"]);
  3123.                             }
  3124.                         }
  3125.                         //mise Ã  jour les etat des ancienne inspection rempli pour cette parcelle
  3126.                         //if ($objetSurfaceAnnee != null) {
  3127.                             //if ($objetInspection->getSiRepetitif() != 1)
  3128.                                 //$this->initialiserInspectionRempli($em, $objetInspection->getId(), $objetSurfaceAnnee->getId());
  3129.                         //}
  3130.                         //En registrer la nouvelle inspection rempli par l'utilisateur 
  3131.                         if ($inspectionRempli == null)
  3132.                             $inspectionRempli = new InspectionRempli();
  3133.                         $inspectionRempli->setUtilisateur($objetUtilisateur);
  3134.                         $inspectionRempli->setInspection($objetInspection);
  3135.                         $inspectionRempli->setProgramme($objetProgramme);
  3136.                         if ($objetAnnee != null)
  3137.                             $inspectionRempli->setAnneecampagne($objetAnnee);
  3138.                         $inspectionRempli->setProducteur($objetProducteur);
  3139.                         $inspectionRempli->setSurfaceannee($objetSurfaceAnnee);
  3140.                         $inspectionRempli->setProducteurAbonne($objetProducteurAbonne);
  3141.                         $inspectionRempli->setSurfaceabonne($objetSurfaceAbonne);
  3142.                         $inspectionRempli->setEtatInspectionRempli(1);
  3143.                         if($objetInspection->getTypeInspection() == 2){
  3144.                             $inspectionRempli->setEvenement($objetEvenement);
  3145.                         }else if($objetInspection->getTypeInspection() == 3){
  3146.                             $inspectionRempli->setClient($objetClient);
  3147.                         }else if($objetInspection->getTypeInspection() == 4){
  3148.                             $inspectionRempli->setFournisseur($objetFournisseur);
  3149.                         }else if($objetInspection->getTypeInspection() == 11){
  3150.                             $inspectionRempli->setGroupement($objetGroupement);
  3151.                         }
  3152.                         $inspectionRempli->setCodeGenere($unInspectionRempli["codeGenere"]);
  3153.                         $inspectionRempli->setAbonne($objetUtilisateur->getAbonne());
  3154.                         // $inspectionRempli->setEtat($unInspectionRempli["etat"]);
  3155.                         $parCodeGenere =  $unInspectionRempli["producteurId"];
  3156.                         if ($unInspectionRempli["parCodeGenere"] != "") {
  3157.                             $parCodeGenere $unInspectionRempli["parCodeGenere"];
  3158.                         }
  3159.                         $donnee $unInspectionRempli["inpectionId"] . "#" $unInspectionRempli["producteurId"] . "#" $unInspectionRempli["utilisateurId"] . "#" $unInspectionRempli["anneeId"] . "#" $unInspectionRempli["codeGenere"] . "#" $parCodeGenere."#3";
  3160.                         $em->persist($inspectionRempli);
  3161.                         $em->flush($inspectionRempli);
  3162.                         $this->addHistoriqueAction($em"ProducteurInspectionRempli"1$unInspectionRempli["codeGenere"], $utilisateurId11$donnee$utilisateurRepository);
  3163.                     }
  3164.                     // }
  3165.                     if ($objetInspection != null) {
  3166.                         if ($objetProducteur != null) {
  3167.                             $titre "ProducteurInspection : " $objetProducteur->getUtilisateur()->getNom() . ":  " $objetInspection->getLabel();
  3168.                             $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetProducteur->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3169.                         } else {
  3170.                             $titre "AgentInspection : " $objetUtilisateur->getNom() . ":  " $objetInspection->getLabel();
  3171.                             $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetUtilisateur->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3172.                         }
  3173.                         //$titre="ProducteurInspection : ".$objetProducteur->getUtilisateur()->getNom().":  ".$objetInspection->getLabel();
  3174.                     }
  3175.                     // $this->addHistoriqueAction($em, "ProducteurInspectionRempli", 1, $unInspectionRempli["codeGenere"], $objetUtilisateur->getId(), $objetProducteur->getId(), 1, $donnee ,$utilisateurRepository);
  3176.                 }
  3177.             }
  3178.             //$JSONData = '[{"anneeId":2,"codeGenere":"PES111","etat":0,"eventId":1,"producteurId":90,"utilisateurId":0}]' ;
  3179.             $listInspectionReponse json_decode($tabJSONData[1], true);
  3180.             if ($listInspectionReponse != NULL) {
  3181.                 foreach ($listInspectionReponse as $unInspectionReponse) {
  3182.                     $questionInspection $questionInspectionRepository->find($unInspectionReponse["questionId"]);
  3183.                     $inspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $unInspectionReponse["codeGenereRempli"]));
  3184.                     $inspectionReponse $inspectionReponseRepository->findOneBy(array("codeGenere" => $unInspectionReponse["codeGenere"], "inspectionrempli" => $inspectionRempli));
  3185.                     if ($inspectionReponse == null//{
  3186.                         $inspectionReponse = new InspectionReponse();
  3187.                         $inspectionReponse->setQuestioninspection($questionInspection);
  3188.                         $inspectionReponse->setInspectionrempli($inspectionRempli);
  3189.                         $inspectionReponse->setCodeGenere($unInspectionReponse["codeGenere"]);
  3190.                         $inspectionReponse->setReponse($unInspectionReponse["reponse"]);
  3191.                         if ($objetUtilisateur != null)
  3192.                             $inspectionReponse->setAbonne($objetUtilisateur->getAbonne());
  3193.                         $em->persist($inspectionReponse);
  3194.                         $em->flush($inspectionReponse);
  3195.                         $donnee $unInspectionReponse["questionId"] . "#" $unInspectionReponse["codeGenereRempli"] . "#" $unInspectionReponse["reponse"] . "#" $unInspectionReponse["codeGenere"]."#3";
  3196.                         //  $this->addHistoriqueAction($em, "ProducteurInspectionReponse", 1, $unInspectionReponse["codeGenere"], $objetUtilisateur->getId(), $objetProducteur->getId(), 1,$donnee);
  3197.                         //$this->addHistoriqueAction($em, "ProducteurInspectionReponse", 1, $unInspectionRempli["codeGenere"], $utilisateurId, 1, 1, $donnee, $utilisateurRepository);
  3198.                     //}
  3199.                 }
  3200.             }
  3201.             // Image enregistre
  3202.             /* $listImage = json_decode($tabJSONData[2],true);
  3203.             if($listImage !=NULL){
  3204.                 foreach($listImage as $uneImage){
  3205.                     $objetInspectionRempli = $em->getRepository($this->inspectionBundle . 'InspectionRempli')->findOneBy(array("codeGenere"=>$uneImage['inspectionRempliCodeGenere']));
  3206.                         
  3207.                     $objetImage = new Image();
  3208.                     $objetImage->setUrlImage($uneImage['titreImage']);
  3209.                     $objetImage->setInspectionrempli($objetInspectionRempli);                        
  3210.                     $objetImage->setTitreImage("Inspection Signature");     
  3211.                     $objetImage->setCodeGenere($uneImage['codeGenere']);               
  3212.                     $em->persist($objetImage);    
  3213.                     $em->flush($objetImage);
  3214.                 }
  3215.             }*/
  3216.         }
  3217.         //$this->addHistoriqueAction($em, "ProducteurInspection", 1, '-', $objetUtilisateur->getId(), $objetProducteur->getId(), 1,$tabJSONData );
  3218.         $em->getConnection()->commit();
  3219.         return ["prodCodeGenere" => $prodCodeGenere"parCodeGenere" => $parCodeGenere];
  3220.     }
  3221.     function traiteDonneeAjoutProducteur(
  3222.         $em,
  3223.         $JSONData,
  3224.         $utilisateurRepository,
  3225.         $inspectionRepository,
  3226.         $anneeCampagneRepository,
  3227.         $villeRepository,
  3228.         $producteurRepository,
  3229.         $groupementRepository,
  3230.         $producteurGroupementRepository,
  3231.         $zoneProducteurRepository,
  3232.         $surfaceAnneeRepository,
  3233.         $planteRepository,
  3234.         $projetRepository
  3235.     ) { ///Revoir comment ajouter l'abonne
  3236.         $listProducteur json_decode($JSONDatatrue);
  3237.         $em->getConnection()->beginTransaction();
  3238.         if ($listProducteur  != null) {
  3239.             foreach ($listProducteur as $unProducteur) {
  3240.                 //$donnee = $unProducteur["nom"] ."#". $unProducteur["prenoms"] ."#".$unProducteur["telephone"] ."#". $unProducteur["idVille"] ."#".$unProducteur["codeGenere"]  ."#".$unProducteur["idutil"] ."#".$unProducteur["sexe"]."#".$unProducteur["cni"]  ;
  3241.                 $objetVille $villeRepository->find($unProducteur["idVille"]);
  3242.                 $objetUtilisateur $utilisateurRepository->find($unProducteur["idutil"]);
  3243.                 //$unProducteur['idVille']                 //$em->getRepository($this->stockBundle . 'Ville')->findOneBy(array('nomVille'=>$groupement));
  3244.                 // $objetProduit= $em->getRepository($this->stockBundle . 'Produit')->find(1);
  3245.                 //$objetAnneeCampagne = $em->getRepository($this->prodBundle . 'AnneeCampagne')->findOneBy(array("produit"=>$objetProduit,"etatAnneeCampagne"=>1 )) ;
  3246.                 ///$ligneCommande = $em->getRepository($this->stockBundle . 'Commande')->getLigneCommandeOperation($producteur_id, $anneecampagne_id);
  3247.                 $d = new \DateTime();
  3248.                 $an $d->format('Y');
  3249.                 $m $d->format('m');
  3250.                 $j $d->format('d');
  3251.                 $newAdd 1;
  3252.                 $objetUtilisateurProd $utilisateurRepository->findOneBy(array('codeGenere' => $unProducteur["codeGenere"]));
  3253.                 if ($objetUtilisateurProd == null) {
  3254.                     $objetUtilisateurProd = new Utilisateur();
  3255.                     
  3256.                 }
  3257.                 //Enregestre ces données comme livraison                        
  3258.                 $objetUtilisateurProd->setNom($unProducteur["nom"]);
  3259.                 $objetUtilisateurProd->setPrenoms($unProducteur["prenoms"]);
  3260.                 $objetUtilisateurProd->setCni($unProducteur["cni"]);
  3261.                 if (array_key_exists("dateNaiss"$unProducteur)) {
  3262.                     $dateNaissance $unProducteur["dateNaiss"];
  3263.                     //if($dateNaissance !=0){
  3264.                     //if(array_key_exists("dateNaiss", $unProducteur)){
  3265.                     if (\DateTime::createFromFormat('d-m-Y'$unProducteur["dateNaiss"]) !== false) {
  3266.                         // it's a date
  3267.                         $infoDateNaissance = new \DateTime($unProducteur["dateNaiss"]);
  3268.                         $objetUtilisateurProd->setDateNaissance(new \DateTime($infoDateNaissance->format("Y-m-d")));
  3269.                     }
  3270.                     // }
  3271.                     //}
  3272.                 } else {
  3273.                     $dateNaissance 0;
  3274.                 }
  3275.                 //if($dateNaissance !=0 )
  3276.                 //$objetUtilisateurProd->setDateNaissance(new \DateTime($dateNaissance));
  3277.                 if ($objetVille != null) {
  3278.                     $objetUtilisateurProd->setVille($objetVille);
  3279.                 }
  3280.                 $objetUtilisateurProd->setSexe($unProducteur["sexe"]);
  3281.                 $objetUtilisateurProd->setTel1($unProducteur["telephone"]);
  3282.                 $objetUtilisateurProd->setCodeGenere($unProducteur["codeGenere"]);
  3283.                 if ($objetUtilisateur != null)
  3284.                     $objetUtilisateurProd->setAbonne($objetUtilisateur->getAbonne());
  3285.                 //$objetInfoLivrer->setGenereCode($codeGenere);                    
  3286.                 $em->persist($objetUtilisateurProd);
  3287.                 $em->flush($objetUtilisateurProd);
  3288.                 $objetProducteur $producteurRepository->findOneBy(array('codeGenere' => $unProducteur["codeGenere"]));
  3289.                 if ($objetProducteur == null) {
  3290.                     $objetProducteur = new Producteur();
  3291.                     $newAdd 0;
  3292.                 }
  3293.                 $groupement $unProducteur['groupement'];
  3294.                 $donnee $unProducteur["nom"] . "#" $unProducteur["prenoms"] . "#" $unProducteur["cni"] . "#" $unProducteur['groupement'] . "#" $unProducteur["telephone"] . "#" $unProducteur["codeGenere"] . "#" $unProducteur["idVille"] . "#" $unProducteur["sexe"] . "#" $unProducteur["idVille"] . "#" $dateNaissance "#3";
  3295.                 //Generer un code pour les producteurs
  3296.                 $objetProducteur->setCodeProd($unProducteur["codeGenere"]);
  3297.                 $objetProducteur->setCodeGenere($unProducteur["codeGenere"]);
  3298.                 if ($objetVille != null) {
  3299.                     $objetProducteur->setVille($objetVille);
  3300.                 }
  3301.                 $objetProducteur->setUtilisateur($objetUtilisateurProd);
  3302.                 $objetProducteur->setAgent($objetUtilisateur);
  3303.                 if ($objetUtilisateur != null)
  3304.                     $objetProducteur->setAbonne($objetUtilisateur->getAbonne());
  3305.                 $em->persist($objetProducteur);
  3306.                 $em->flush($objetProducteur);
  3307.                 $dateOperation = new \DateTime();
  3308.                 $titre "ProducteurAdd : " $objetProducteur->getUtilisateur()->getNom() . " " $objetProducteur->getUtilisateur()->getPrenoms();
  3309.                 $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetProducteur->getCodeGenere(), 0$objetProducteur->getUtilisateur()->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3310.                 if($objetProducteur->getAbonne() != null &&  $newAdd==0)
  3311.                     $this->setAbonnePartenaire($em$objetProducteur->getAbonne(), $objetProducteur->getAbonne()->getPartenaire(), $objetProducteur$typeObjet 2);
  3312.                 //Groupement et Zone Producteur
  3313.                 $this->saveAutreInfoProducteur($em$groupement$objetProducteur$unProducteur["idVille"], $villeRepository$groupementRepository$producteurGroupementRepository$zoneProducteurRepository);
  3314.                 //Groupementif8)
  3315.                 if($objetUtilisateurProd != null)
  3316.                     $this->addHistoriqueAction($em"ProducteurAdd"1$unProducteur["codeGenere"], $objetUtilisateurProd->getId(), $objetProducteur->getId(), 1$donnee$utilisateurRepository);
  3317.             }
  3318.         }
  3319.         $em->getConnection()->commit();
  3320.     }
  3321.     function traiteDonneeAjoutClient(
  3322.         $em,
  3323.         $JSONData,
  3324.         $idUtil,
  3325.         $utilisateurRepository,
  3326.         $villeRepository,
  3327.         $producteurRepository,
  3328.         $clientRepository,
  3329.         $prixRigueurRepository
  3330.     ) { ///Revoir comment ajouter l'abonne
  3331.         $listClient json_decode($JSONDatatrue);
  3332.         $em->getConnection()->beginTransaction();
  3333.         //  $ddsse;
  3334.         //$donnee = $unProducteur["nom"] ."#". $unProducteur["prenoms"] ."#".$unProducteur["telephone"] ."#". $unProducteur["idVille"] ."#".$unProducteur["codeGenere"]  ."#".$unProducteur["idutil"] ."#".$unProducteur["sexe"]."#".$unProducteur["cni"]  ;
  3335.         if ($listClient  != null) {
  3336.             foreach ($listClient as $unClient) {
  3337.                 $this->saveClient($em$unClient["nom"], $unClient["prenoms"], $unClient["cni"], $unClient["telephone"], $unClient["codeGenere"], $unClient["idVille"], $unClient["sexe"], $idUtil''$utilisateurRepository$villeRepository$clientRepository$prixRigueurRepository$this->etatClientRepository);
  3338.             }
  3339.         }
  3340.         $em->getConnection()->commit();
  3341.     }
  3342.     
  3343.     function traiteDonneeAjoutParcelle(
  3344.         $em,
  3345.         $JSONData,
  3346.         $produitRepository,
  3347.         $villeRepository,
  3348.         $surfaceRepository,
  3349.         $utilisateurRepository,
  3350.         $producteurRepository,
  3351.         $anneeCampagneRepository,
  3352.         $surfaceAnneeRepository,
  3353.         $planteRepository,
  3354.         $projetRepository
  3355.     ) {
  3356.         $listParcelle json_decode($JSONDatatrue);
  3357.         $em->getConnection()->beginTransaction();
  3358.         if ($listParcelle != null) {
  3359.             foreach ($listParcelle as $uneParcelle) {
  3360.                 // $donnee = $localisation['utilisateurId']."#".$localisation['parCodeGenere'] ."#".$localisation['codeGenere'] ."#".$localisation['latitude'] ."#".$localisation['longitude'] ."#".$localisation['idVariete'] 
  3361.                 $valSurface $uneParcelle["valSurface"];
  3362.                 $prodCodeGenere $uneParcelle["prodCodeGenere"];
  3363.                 $codeGenere $uneParcelle["codeGenere"];
  3364.                 $codeParcelle $uneParcelle["codeGenere"];
  3365.                 $typeParcelle $uneParcelle['typeParcelle'];
  3366.                 $explCodeGenere $uneParcelle['explCodeGenere'];
  3367.                 $valSurfaceAudit $uneParcelle["valSurfaceAudit"];
  3368.                 $idVille $uneParcelle["idVille"];; //$uneParcelle[];
  3369.                 $idVariete $uneParcelle["idVariete"];
  3370.                 $idUtil $uneParcelle["idUtil"];
  3371.                 #if($valSurfaceAudit ==null)
  3372.                     #$valSurfaceAudit = 0;
  3373.                 //$produit =2;
  3374.                 $objetProduit $produitRepository->find($idVariete); //$idVariete
  3375.                 $objetVille $villeRepository->find($idVille);
  3376.                 $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit"etatAnneeCampagne" => 1));
  3377.                 //$anneecampagne_id = 
  3378.                 //$campagne_id = $objetAnneeCampagne->getId();//$request->request->get('producteur_id');    
  3379.                 $objetProducteur $producteurRepository->findOneBy(array("codeGenere" => $prodCodeGenere));
  3380.                 $objetExploitation $surfaceAnneeRepository->findOneBy(array("codeSurface" => $explCodeGenere));
  3381.                 $objetUtilisateur $utilisateurRepository->find($idUtil);
  3382.                 $objetSurface $surfaceRepository->findOneBy(array('valSurface' => $valSurface));
  3383.                 //Tester si la surface existe deja
  3384.                 $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $codeGenere));
  3385.                 $donnee $valSurface "#" $prodCodeGenere "#" $codeGenere "#" $codeParcelle "#" $idVille  "#" $idVariete "#0#" $idUtil "#" $explCodeGenere "#" $typeParcelle "#0#".$valSurfaceAudit."#3" ;
  3386.                 // $donnee = $valSurface ."#".$prodCodeGenere ."#".$codeGenere ."#".$codeParcelle ."#".$idVille  ."#".$idVariete ;
  3387.                 $siPrincipale 0;
  3388.                 $newAdd 1;
  3389.                 if ($objetSurfaceAnnee == null)  {
  3390.                     $objetSurfaceAnnee = new SurfaceAnnee();
  3391.                     $siPrincipale 1;
  3392.                     $newAdd 0;
  3393.                 }
  3394.                     
  3395.                     $objetSurfaceAnnee->setSuperficie((float)$valSurface);
  3396.                     $objetSurfaceAnnee->setCodeParcelle($codeParcelle);
  3397.                     $objetSurfaceAnnee->setCodeSurface($codeParcelle);
  3398.                     if($valSurfaceAudit != null && $valSurfaceAudit != '0' && $valSurfaceAudit != 'null' )
  3399.                         $objetSurfaceAnnee->setSuperficieRelle($valSurfaceAudit);
  3400.                     $objetSurfaceAnnee->setCodeGenere($codeGenere);
  3401.                     $objetSurfaceAnnee->setVille($objetVille);
  3402.                     if ($objetAnneeCampagne != null) {
  3403.                         $objetSurfaceAnnee->setAnneeCampagne($objetAnneeCampagne);
  3404.                     }
  3405.                     if($objetProduit != null)
  3406.                         $objetSurfaceAnnee->setProduit($objetProduit);
  3407.                         
  3408.                     $objetSurfaceAnnee->setProducteur($objetProducteur);
  3409.                     $objetSurfaceAnnee->setUtilisateur($objetUtilisateur);
  3410.                     $objetSurfaceAnnee->setTypeParcelle($typeParcelle);
  3411.                     if ($objetExploitation != null)
  3412.                         $objetSurfaceAnnee->setSurfaceannee($objetExploitation);
  3413.                     if ($objetUtilisateur != null)
  3414.                         $objetSurfaceAnnee->setAbonne($objetUtilisateur->getAbonne());
  3415.                     //$   
  3416.                     $objetSurfaceAnnee->setProdCodeGenere($prodCodeGenere);
  3417.                     $em->persist($objetSurfaceAnnee);
  3418.                     $em->flush($objetSurfaceAnnee);
  3419.                 
  3420.                 $dateOperation = new \DateTime();
  3421.                 $titre "ParcelleAdd : " $objetProducteur->getUtilisateur()->getNom() . " " $objetProducteur->getUtilisateur()->getPrenoms() . "_" $objetSurfaceAnnee->getCodeGenere() . "_" $objetSurfaceAnnee->getSuperficie();
  3422.                 $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetProducteur->getCodeGenere(), 0$objetProducteur->getUtilisateur()->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3423.                 //le mettre dans l'historique
  3424.                 $objetSurfaceAnneeHistorique = new SurfaceAnneeHistorique();
  3425.                 $objetSurfaceAnneeHistorique->setAnneeCampagne($objetAnneeCampagne);
  3426.                 $objetSurfaceAnneeHistorique->setSurfaceAnnee($objetSurfaceAnnee);
  3427.                 $em->persist($objetSurfaceAnneeHistorique);
  3428.                 $em->flush($objetSurfaceAnneeHistorique);
  3429.                 if($objetUtilisateur != null){
  3430.                     if ($objetUtilisateur->getAbonne() != null && $newAdd == 0)
  3431.                         $this->setAbonnePartenaire($em$objetSurfaceAnnee->getAbonne(), $objetSurfaceAnnee->getAbonne()->getPartenaire(), $objetSurfaceAnnee$typeObjet 3$siPrincipale);
  3432.                 }
  3433.                 $this->addHistoriqueAction($em'ProducteurIntention'1$codeGenere$idUtil11$donnee$utilisateurRepository);
  3434.             }
  3435.         }
  3436.         $em->getConnection()->commit();
  3437.     }
  3438.     function traiteDonneeAjoutLocalisation(
  3439.         $em,
  3440.         $JSONData,
  3441.         $produitRepository,
  3442.         $villeRepository,
  3443.         $surfaceRepository,
  3444.         $utilisateurRepository,
  3445.         $producteurRepository,
  3446.         $anneeCampagneRepository,
  3447.         $surfaceAnneeRepository,
  3448.         $localisationRepository,
  3449.         $planteRepository,
  3450.         $projetRepository,
  3451.         $surfaceAbonneRepository,
  3452.         $inspectionRempliRepository,
  3453.         $commandeRepository
  3454.     ) {
  3455.         $listLocalisation json_decode($JSONDatatrue);
  3456.         $em->getConnection()->beginTransaction();
  3457.         $parCodeGenere "";
  3458.         try {
  3459.             $firstPoint 0;
  3460.             if ($listLocalisation != NULL) {
  3461.                 $k 0;
  3462.                 $i 0;
  3463.                 $l 1;
  3464.                 foreach ($listLocalisation as $localisation) {
  3465.                     if (array_key_exists("parCodeGenere"$localisation)) {
  3466.                         if ($parCodeGenere != $localisation['parCodeGenere']) {
  3467.                             $parCodeGenere $localisation['parCodeGenere'];
  3468.                         }
  3469.                         $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3470.                         $objetUtilisateur $utilisateurRepository->find($localisation["utilisateurId"]);
  3471.             
  3472.                         $uneLocalisation $localisationRepository->findOneBy(array("codeGenere" => $localisation["codeGenere"], "typeLocalisation" => $localisation['typeLocalisation']));
  3473.                         $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurfaceAnnee]);
  3474.                         $siTestLocalisation $localisationRepository->findOneBy(array("typeLocalisation" => $localisation['typeLocalisation'], "surfaceannee"=>$objetSurfaceAnnee));
  3475.                         if($localisation['typeLocalisation'] == 1){
  3476.                             if($siTestLocalisation != null && $uneLocalisation  == null ){
  3477.                                 //$this->initialiserLesAncienPolygon($em, $objetSurfaceAnnee->getId(), $typeLocalisation=1);
  3478.                             }
  3479.                         }
  3480.             
  3481.                         if($localisation['typeLocalisation'] == && $i==&& $objetSurfaceAnnee != null && $objetSurfaceAnnee->getSiPolygon()==1){
  3482.                             if($siTestLocalisation != null && $uneLocalisation  == null ){
  3483.                                 //$this->initialiserLesAncienPolygon($em, $objetSurfaceAnnee->getId(), $typeLocalisation=2);
  3484.                                 //continue;
  3485.                             }
  3486.                         }
  3487.             
  3488.                         if ($localisation['typeLocalisation'] == 2) {
  3489.                             if ($i == 0)
  3490.                                 $firstPoint = new Point($localisation["longitude"], $localisation["latitude"], null);
  3491.                         }
  3492.                         $tabPolygone 0;
  3493.                         if($localisation['tabLocalisation'] != "")
  3494.                             $tabPolygone $localisation['tabLocalisation'];
  3495.                             
  3496.                         
  3497.                         $donnee $localisation['utilisateurId'] . "#" $localisation['parCodeGenere'] . "#" $localisation['codeGenere'] . "#" $localisation['latitude'] . "#" $localisation['longitude'] . "#" $localisation['typeLocalisation']. "#" $tabPolygone;
  3498.                         //$test;
  3499.                         //Liste des donnes a prendre #endregion
  3500.                         
  3501.                         // $listeAction = $this->getHistoriqueAction($em,$idUtil,1);
  3502.                         $dateOperation = new \DateTime();
  3503.             
  3504.                         //if($localisation['typeLocalisation'] == 2)
  3505.                         $uneLocalisation $localisationRepository->findOneBy(array("latitude" => $localisation['latitude'],"longitude" => $localisation['longitude'], "surfaceannee"=>$objetSurfaceAnnee"typeLocalisation"=>$localisation['typeLocalisation'] ));
  3506.                         
  3507.                         if ($uneLocalisation == null
  3508.                             $uneLocalisation = new Localisation();
  3509.                         
  3510.             
  3511.                         if($localisation["typeLocalisation"]== || $localisation["typeLocalisation"]== 2) {
  3512.                             $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3513.                             $uneLocalisation->setSurfaceabonne($objetSurfaceAbonne);
  3514.                         }
  3515.                         if($localisation["typeLocalisation"]== 7) { //Enregistrement des données sur la l'inspect
  3516.                                 $objetInspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3517.                                 if($objetInspectionRempli != null ){ 
  3518.                                     $objetSurfaceAnnee $objetInspectionRempli->getSurfaceannee();
  3519.                                     $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3520.                                 }
  3521.             
  3522.                                 $uneLocalisation->setInspectionrempli($objetInspectionRempli);
  3523.                         }else if($localisation["typeLocalisation"]== 8) { //Enregistrement des données sur la l'inspect
  3524.                             $objetCommande $commandeRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3525.                             if($objetCommande != null ){ 
  3526.                                 $objetSurfaceAnnee $objetCommande->getSurfaceannee();
  3527.                                 $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3528.                             }
  3529.             
  3530.                             $uneLocalisation->setCommande($objetCommande);
  3531.                         }
  3532.             
  3533.                         $uneLocalisation->setLatitude($localisation["latitude"]);
  3534.                         $uneLocalisation->setLongitude($localisation["longitude"]);
  3535.                         $uneLocalisation->setTypeLocalisation($localisation["typeLocalisation"]);
  3536.                         $uneLocalisation->setTabPolygone($localisation["tabLocalisation"]);
  3537.                         $uneLocalisation->setCodeGenere($localisation["codeGenere"]);
  3538.                         $uneLocalisation->setEtatLocalisation(1);
  3539.                         $uneLocalisation->setUtilisateur($objetUtilisateur);
  3540.                         if($objetUtilisateur != null )
  3541.                             $uneLocalisation->setAbonne($objetUtilisateur->getAbonne());
  3542.                         $em->persist($uneLocalisation);
  3543.                         $em->flush($uneLocalisation);
  3544.                         if ($localisation['typeLocalisation'] == 2) {
  3545.                             $tabPoint[$i] = new Point($localisation["longitude"], $localisation["latitude"], null);
  3546.                             $i++;
  3547.                         }
  3548.             
  3549.                         if ($localisation['typeLocalisation'] == 2) {
  3550.                             //if(!array_key_exists($l,$listLocalisation) || $listLocalisation[$k]['parCodeGenere'] != $listLocalisation[$l]['parCodeGenere']){
  3551.                             if (!array_key_exists($l$listLocalisation) || ($listLocalisation[$k]['parCodeGenere'] != $listLocalisation[$l]['parCodeGenere']) || ($listLocalisation[$k]['parCodeGenere'] == $listLocalisation[$l]['parCodeGenere'] && $listLocalisation[$l]['typeLocalisation'] == 1)) {
  3552.                                 //if($firstPoint != 0){
  3553.                                 $tabPoint[$i] = $firstPoint;
  3554.                                 $infoPolygon = array(
  3555.                                     new LineString(
  3556.                                         $tabPoint
  3557.                                     )
  3558.                                 );
  3559.             
  3560.                                 ///if($infoPolygon != null)
  3561.                                 $polygon = new Polygon($infoPolygon);
  3562.                                 $objetSurfaceAnnee->setSiPolygon(1);
  3563.                                 $objetSurfaceAnnee->setPolygon($polygon);
  3564.             
  3565.                                 //$k = 0;
  3566.                                 $i 0;
  3567.                                 //$l = 1;
  3568.                                 $tabPoint = array();
  3569.             
  3570.                                 $titre "polygonAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  3571.                                 $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3572.                                 
  3573.                             }
  3574.                         }
  3575.                         $k++;
  3576.                         $l++;
  3577.             
  3578.                         if ($objetSurfaceAnnee != null) {
  3579.                             if ($localisation['typeLocalisation'] == 1) {
  3580.                                 //$dateOperation = new \DateTime();
  3581.                                 $titre "LocalisationAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  3582.                                 $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3583.                                 $this->addHistoriqueAction($em'ProducteurLocalisation'1$uneLocalisation->getCodeGenere(), $localisation["utilisateurId"], $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee$utilisateurRepository);
  3584.                             }
  3585.                         }
  3586.             
  3587.                         if ($localisation["typeLocalisation"]  == 1) {
  3588.                             $objetLocalisation = new Point($localisation["longitude"], $localisation["latitude"], null);
  3589.                             $objetSurfaceAnnee->setLocalisation($objetLocalisation);
  3590.                         }
  3591.                         if($localisation["typeLocalisation"]  == || $localisation["typeLocalisation"]  == 2){
  3592.                             $em->persist($objetSurfaceAnnee);
  3593.                             $em->flush($objetSurfaceAnnee);
  3594.                         }
  3595.                     }      
  3596.                 }
  3597.             }
  3598.             $em->getConnection()->commit();
  3599.         } catch (\Exception $e) {
  3600.             $responce false;
  3601.             $em->getConnection()->rollBack();
  3602.             throw $e;
  3603.         }
  3604.     }
  3605.     function saveLocalisation($em,$i$k$l$parCodeGenere$listLocalisation$localisation$surfaceAnneeRepository$utilisateurRepository,$localisationRepository,$surfaceAbonneRepository$inspectionRempliRepository,  $commandeRepository,$anneeCampagneRepository,$planteRepository$projetRepository$producteurRepository){
  3606.         if (array_key_exists("parCodeGenere"$localisation)) {
  3607.             if ($parCodeGenere != $localisation['parCodeGenere']) {
  3608.                 $parCodeGenere $localisation['parCodeGenere'];
  3609.             }
  3610.             $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3611.             $objetUtilisateur $utilisateurRepository->find($localisation["utilisateurId"]);
  3612.             $uneLocalisation $localisationRepository->findOneBy(array("codeGenere" => $localisation["codeGenere"], "typeLocalisation" => $localisation['typeLocalisation']));
  3613.             $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurfaceAnnee]);
  3614.             $siTestLocalisation $localisationRepository->findOneBy(array("typeLocalisation" => $localisation['typeLocalisation'], "surfaceannee"=>$objetSurfaceAnnee));
  3615.             if($localisation['typeLocalisation'] == 1){
  3616.                 if($siTestLocalisation != null && $uneLocalisation  == null ){
  3617.                     $this->initialiserLesAncienPolygon($em$objetSurfaceAnnee->getId(), $typeLocalisation=1);
  3618.                 }
  3619.             }
  3620.             if($localisation['typeLocalisation'] == && $i==&& $objetSurfaceAnnee != null && $objetSurfaceAnnee->getSiPolygon()==1){
  3621.                 if($siTestLocalisation != null && $uneLocalisation  == null ){
  3622.                     $this->initialiserLesAncienPolygon($em$objetSurfaceAnnee->getId(), $typeLocalisation=2);
  3623.                 }
  3624.             }
  3625.             if ($localisation['typeLocalisation'] == 2) {
  3626.                 if ($i == 0)
  3627.                     $firstPoint = new Point($localisation["longitude"], $localisation["latitude"], null);
  3628.             }
  3629.             $tabPolygone 0;
  3630.             if($localisation['tabLocalisation'] != "")
  3631.                 $tabPolygone $localisation['tabLocalisation'];
  3632.             $donnee $localisation['utilisateurId'] . "#" $localisation['parCodeGenere'] . "#" $localisation['codeGenere'] . "#" $localisation['latitude'] . "#" $localisation['longitude'] . "#" $localisation['typeLocalisation']. "#".$tabPolygone ;
  3633.             //$test;
  3634.             //Liste des donnes a prendre #endregion
  3635.             
  3636.             // $listeAction = $this->getHistoriqueAction($em,$idUtil,1);
  3637.             $dateOperation = new \DateTime();
  3638.             //if($localisation['typeLocalisation'] == 2)
  3639.             $uneLocalisation $localisationRepository->findOneBy(array("latitude" => $localisation['latitude'],"longitude" => $localisation['longitude'], "surfaceannee"=>$objetSurfaceAnnee"typeLocalisation"=>$localisation['typeLocalisation'] ));
  3640.             
  3641.             if ($uneLocalisation == null
  3642.                 $uneLocalisation = new Localisation();
  3643.             
  3644.             if($localisation["typeLocalisation"]== || $localisation["typeLocalisation"]== 2) {
  3645.                 $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3646.                 $uneLocalisation->setSurfaceabonne($objetSurfaceAbonne);
  3647.             }
  3648.             if($localisation["typeLocalisation"]== 7) { //Enregistrement des données sur la l'inspect
  3649.                     $objetInspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3650.                     if($objetInspectionRempli != null ){ 
  3651.                         $objetSurfaceAnnee $objetInspectionRempli->getSurfaceannee();
  3652.                         $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3653.                     }
  3654.                     $uneLocalisation->setInspectionrempli($objetInspectionRempli);
  3655.             }else if($localisation["typeLocalisation"]== 8) { //Enregistrement des données sur la l'inspect
  3656.                 $objetCommande $commandeRepository->findOneBy(array("codeGenere" => $localisation["parCodeGenere"]));
  3657.                 if($objetCommande != null ){ 
  3658.                     $objetSurfaceAnnee $objetCommande->getSurfaceannee();
  3659.                     $uneLocalisation->setSurfaceAnnee($objetSurfaceAnnee);
  3660.                 }
  3661.                 $uneLocalisation->setCommande($objetCommande);
  3662.             }
  3663.             $uneLocalisation->setLatitude($localisation["latitude"]);
  3664.             $uneLocalisation->setLongitude($localisation["longitude"]);
  3665.             $uneLocalisation->setTypeLocalisation($localisation["typeLocalisation"]);
  3666.             if($localisation["tabLocalisation"] != '0')
  3667.                 $uneLocalisation->setTabPolygone($localisation["tabLocalisation"]);
  3668.             $uneLocalisation->setCodeGenere($localisation["codeGenere"]);
  3669.             $uneLocalisation->setEtatLocalisation(1);
  3670.             $uneLocalisation->setUtilisateur($objetUtilisateur);
  3671.             $em->persist($uneLocalisation);
  3672.             $em->flush($uneLocalisation);
  3673.             if ($localisation['typeLocalisation'] == 2) {
  3674.                 $tabPoint[$i] = new Point($localisation["longitude"], $localisation["latitude"], null);
  3675.                 $i++;
  3676.             }
  3677.             if ($localisation['typeLocalisation'] == 2) {
  3678.                 //if(!array_key_exists($l,$listLocalisation) || $listLocalisation[$k]['parCodeGenere'] != $listLocalisation[$l]['parCodeGenere']){
  3679.                 if (!array_key_exists($l$listLocalisation) || ($listLocalisation[$k]['parCodeGenere'] != $listLocalisation[$l]['parCodeGenere']) || ($listLocalisation[$k]['parCodeGenere'] == $listLocalisation[$l]['parCodeGenere'] && $listLocalisation[$l]['typeLocalisation'] == 1)) {
  3680.                     //if($firstPoint != 0){
  3681.                     $tabPoint[$i] = $firstPoint;
  3682.                     $infoPolygon = array(
  3683.                         new LineString(
  3684.                             $tabPoint
  3685.                         )
  3686.                     );
  3687.                     ///if($infoPolygon != null)
  3688.                     $polygon = new Polygon($infoPolygon);
  3689.                     $objetSurfaceAnnee->setSiPolygon(1);
  3690.                     $objetSurfaceAnnee->setPolygon($polygon);
  3691.                     //$k = 0;
  3692.                     $i 0;
  3693.                     //$l = 1;
  3694.                     $tabPoint = array();
  3695.                     $titre "polygonAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  3696.                     $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3697.                     
  3698.                 }
  3699.             }
  3700.             $k++;
  3701.             $l++;
  3702.             if ($objetSurfaceAnnee != null) {
  3703.                 if ($localisation['typeLocalisation'] == 1) {
  3704.                     //$dateOperation = new \DateTime();
  3705.                     $titre "LocalisationAdd : " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getNom() . " " $objetSurfaceAnnee->getProducteur()->getUtilisateur()->getPrenoms() . "_" $uneLocalisation->getLatitude() . "_" $uneLocalisation->getLongitude();
  3706.                     $this->saveTacheFormulaire($em$titre$titre$dateOperation->format("Y-m-d"), $dateOperation->format("Y-m-d"), $dateOperation->format("H:i:s"), $dateOperation->format("H:i:s"), $objetSurfaceAnnee->getProducteur()->getCodeGenere(), 0$objetUtilisateur->getId(),  $typeActivite 4$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepositorynull);
  3707.                     $this->addHistoriqueAction($em'ProducteurLocalisation'1$uneLocalisation->getCodeGenere(), $localisation["utilisateurId"], $objetSurfaceAnnee->getProducteur()->getId(), 1$donnee$utilisateurRepository);
  3708.                 }
  3709.             }
  3710.             if ($localisation["typeLocalisation"]  == 1) {
  3711.                 $objetLocalisation = new Point($localisation["longitude"], $localisation["latitude"], null);
  3712.                 $objetSurfaceAnnee->setLocalisation($objetLocalisation);
  3713.             }
  3714.             if($localisation["typeLocalisation"]  == || $localisation["typeLocalisation"]  == 2){
  3715.                 $em->persist($objetSurfaceAnnee);
  3716.                 $em->flush($objetSurfaceAnnee);
  3717.             }
  3718.         }
  3719.     }
  3720.     function saveLigneCommande(
  3721.         $em,
  3722.         $tab,
  3723.         $produitRepository,
  3724.         $villeRepository,
  3725.         $surfaceRepository,
  3726.         $commandeRepository,
  3727.         $prixRigueurRepository,
  3728.         $utilisateurRepository,
  3729.         $producteurRepository,
  3730.         $anneeCampagneRepository,
  3731.         $fournisseurRepository,
  3732.         $surfaceAnneeRepository,
  3733.         $localisationRepository,
  3734.         $surfaceAbonneRepository,
  3735.         $producteurAbonneRepository
  3736.     ) {
  3737.         $em->getConnection()->beginTransaction();
  3738.         $quantitePese =  $tab[0];  //$request->request->get('val_surface');
  3739.         $quantiteReelle =  $tab[0]; //$request->request->get('val_surface');
  3740.         $montant 0//$request->request->get('montant');
  3741.         $prodCodeGenere $tab[1]; //$request->request->get('prodCodeGenere');
  3742.         $parCodeGenere $tab[2]; //$request->request->get('parCodeGenere');
  3743.         $util_id $tab[3]; //$request->request->get('util_id');
  3744.         $fournisseur_id $tab[4]; //$request->request->get('fournisseur_id');
  3745.         $donnee $quantitePese "#" $montant "#" $prodCodeGenere "#" $parCodeGenere "#" $util_id  "#" $fournisseur_id;
  3746.         $produit $tab[6];
  3747.         $produit 1;
  3748.         $util_id 1;
  3749.         $objetProduit $produitRepository->find($produit);
  3750.         $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetProduit"etatAnneeCampagne" => 1));
  3751.         //$anneecampagne_id = 
  3752.         if ($objetAnneeCampagne == null) {
  3753.             $anneecampagne_id 0;
  3754.         } else {
  3755.             $anneecampagne_id $objetAnneeCampagne->getId(); //$request->request->get('entrepot');
  3756.         //$request->request->get('producteur_id');    
  3757.         $codeGenere =  $tab[5];  //$request->request->get('codeGenere');            
  3758.         //Creation de l'objet fournisseur
  3759.         // $objetAnneeCampagne = $em->getRepository($this->prodBundle . 'AnneeCampagne')->find($campagne_id) ; 
  3760.         $d = new \DateTime();
  3761.         $an $d->format('Y');
  3762.         $m $d->format('m');
  3763.         $j $d->format('d');
  3764.         $valTotal 0;
  3765.         $objetUtilisateur $utilisateurRepository->find($util_id);
  3766.         $objetFournisseur $fournisseurRepository->findOneBy(['utilisateur' => $objetUtilisateur]);
  3767.         $objetProducteur $producteurRepository->findOneBy(array("codeGenere" => $prodCodeGenere));
  3768.         $objetParcelle $surfaceAnneeRepository->findOneBy(array("codeGenere" => $parCodeGenere));
  3769.         //Ecrire une function qui permet de sortir le total des semences recus par un producteur
  3770.         $totalFournisseur $commandeRepository->getApiFournisseurSumSemence(0000000$objetProducteur->getId(), 0201);
  3771.         // Ajouter le total des semences au semence saisie  et comparer avec la semence de son intention
  3772.         if (count($totalFournisseur) != 0) {
  3773.             $valTotal = (int)$totalFournisseur[0]['quantiteTotale'] + (int)$quantitePese;
  3774.         }
  3775.         // Fait l'opération si le semence recu n'atteint pas ou Ã©gal    
  3776.         $refCommande $this->getRefCommande($em1$an$m$entite 'COMMANDE'$taille 51);
  3777.         //Creation de l'objet fournisseur
  3778.         // $objetUtilisateur= $em->getRepository($this->userBundle . 'Utilisateur')->find($util_id) ;     
  3779.         //Revoir la gestion des produits et des prix
  3780.         $objetProduit $produitRepository->find(2);
  3781.         $objetPrix $prixRigueurRepository->find(2);
  3782.         //Enrégistrement des donnees utilisateur
  3783.         $objetCommande = new Commande();
  3784.         $objetCommande->setCodeCommande($refCommande);
  3785.         $objetCommande->setDescriptionCommande("Api send");
  3786.         $objetCommande->setMontantCommande($montant);
  3787.         $objetCommande->setMontantResteCommande(0);
  3788.         $objetCommande->setEtatCommande(1);
  3789.         $objetCommande->setTypeCommande(2);
  3790.         $objetCommande->setCodeGenere($codeGenere);
  3791.         $objetCommande->setRefBonCommande($refCommande);
  3792.         $objetCommande->setUtilisateur($objetUtilisateur);
  3793.         $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetParcelle]);
  3794.         $objetProducteurAbonne $producteurAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'producteur' => $objetParcelle->getProducteur()]);
  3795.         //$objetCommande->setSurfaceAbonne($objetSurfaceAbonne);
  3796.         $objetCommande->setProducteurabonne($objetProducteurAbonne);
  3797.         $objetCommande->setAnneecampagne($objetAnneeCampagne);
  3798.         $objetCommande->setSurfaceannee($objetParcelle);
  3799.         $objetCommande->setAbonne($objetUtilisateur->getAbonne());
  3800.         $objetCommande->setAnnule(0);
  3801.         if ($objetFournisseur != null) {
  3802.             $objetCommande->setFournisseur($objetFournisseur);
  3803.         }
  3804.         $em->persist($objetCommande);
  3805.         $em->flush($objetCommande);
  3806.         ///Enregistrement de la ligne de commande
  3807.         $objetLigneCommande = new LigneCommande();
  3808.         $objetLigneCommande->setQuantite($quantiteReelle);
  3809.         $objetLigneCommande->setQuantiteLivre($quantitePese);
  3810.         $objetLigneCommande->setQuantiteReste($quantitePese);
  3811.         $objetLigneCommande->setEtatLigneCommande(1);
  3812.         $objetLigneCommande->setProduit($objetProduit);
  3813.         $objetLigneCommande->setCommande($objetCommande);
  3814.         $objetLigneCommande->setAnnule(0);
  3815.         $objetLigneCommande->setMontantHt($montant);
  3816.         $objetLigneCommande->setMontantAutreTaxe($montant);
  3817.         $objetLigneCommande->setFournisseur($objetFournisseur);
  3818.         $objetLigneCommande->setPrixrigueur($objetPrix);
  3819.         $objetLigneCommande->setProducteur($objetProducteur);
  3820.         $objetLigneCommande->setProducteurabonne($objetProducteurAbonne);
  3821.         $objetLigneCommande->setAbonne($objetUtilisateur->getAbonne());
  3822.         $em->persist($objetLigneCommande);
  3823.         $em->flush($objetLigneCommande);
  3824.         //Mettre Ã  jour l'état semence
  3825.         $objetProducteur->setSiSemence(1);
  3826.         $em->persist($objetProducteur);
  3827.         $em->flush($objetProducteur);
  3828.         //$this->addHistoriqueAction($em, "ProducteurSemence", 1, $codeGenere, $$objetUtilisateur->getId(), $objetProducteur->getId(), 1, $donnee ,$utilisateurRepository);
  3829.         $em->getConnection()->commit();
  3830.         return $objetLigneCommande;
  3831.     }
  3832.     public function traiteDonneeFacture(
  3833.         $em,
  3834.         $JSONDataFacture,
  3835.         $produitRepository,
  3836.         $villeRepository,
  3837.         $clientRepository,
  3838.         $surfaceRepository,
  3839.         $commandeRepository,
  3840.         $prixRigueurRepository,
  3841.         $utilisateurRepository,
  3842.         $producteurRepository,
  3843.         $anneeCampagneRepository,
  3844.         $fournisseurRepository,
  3845.         $surfaceAnneeRepository,
  3846.         $localisationRepository,
  3847.         $cibleRepository,
  3848.         $caracteristiquePrixRepository,
  3849.         $infoInventaireRepository,
  3850.         $ligneCommandeRepository,
  3851.         $typeOperationRepository,
  3852.         $inventaireRepository,
  3853.         $operationRepository,
  3854.         $tableRepository,
  3855.         $surfaceAbonneRepository,
  3856.         $producteurAbonneRepository,
  3857.         $livrerRepository,
  3858.         $operationManager,
  3859.         $caisseRepository,
  3860.         $infoLivrerRepository,
  3861.         $etatOpportuniteRepository
  3862.     ) {
  3863.         $em $this->getDoctrine()->getManager();
  3864.         //$JSONData = $request->request->get('JSONData');
  3865.         $tabJSONData explode("|||"$JSONDataFacture);
  3866.         $listCommande json_decode($tabJSONData[0], true);
  3867.         //$em->getConnection()->beginTransaction();
  3868.         //$uneCommande["utilId"]
  3869.         $inc 0;
  3870.         $tabDateOperation = array();
  3871.         $siObjetCommandeTable null;
  3872.         $dejaTraite 0;
  3873.         $objetFournisseur null;
  3874.         $siClientDejaAchete 0;
  3875.         if ($listCommande != NULL) {
  3876.             foreach ($listCommande as $uneCommande) {
  3877.                 // $dateOperation = ;
  3878.                 $objetUtilisateur $utilisateurRepository->find($uneCommande["utilId"]);
  3879.                 if ($uneCommande["typeCommande"] != 2) {
  3880.                     /*if($uneCommande["typeCommande"] == 0){
  3881.                     $objetFournisseur = $fournisseurRepository->findOneBy(array("codeGenere"=>$uneCommande["clientCodeGenere"]));
  3882.                 }else  if($uneCommande["typeCommande"] != 4){
  3883.                     if($uneCommande["typeCommande"] != 7){
  3884.                         $objetClient = $clientRepository->findOneBy(array("codeGenere"=>$uneCommande["clientCodeGenere"]));
  3885.                     }
  3886.                 }*/
  3887.                     if ($uneCommande["typeCommande"] == 0) {
  3888.                         $typeCommande 0;
  3889.                         $objetFournisseur $fournisseurRepository->findOneBy(array("codeGenere" => $uneCommande["clientCodeGenere"], 'abonne' => $objetUtilisateur->getAbonne()));
  3890.                     } else {
  3891.                         if ($uneCommande["typeCommande"] != 7) {
  3892.                             $objetClient $clientRepository->findOneBy(array("codeGenere" => $uneCommande["clientCodeGenere"], 'abonne' => $objetUtilisateur->getAbonne()));
  3893.                             if ($objetClient != null) {
  3894.                                 if ($objetClient->getAbonne()->getId() == 10) {
  3895.                                     $siClientDejaAchete 1;
  3896.                                     $siObjetCommandeClient $commandeRepository->findOneBy(array("client" => $objetClient"siCredit" => 0,  "annule" => 0));
  3897.                                 }
  3898.                             }
  3899.                             if ($uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == 5) {
  3900.                                 if ($uneCommande["typePaiement"] != 0)
  3901.                                     $objetFournisseur $fournisseurRepository->find($uneCommande["typePaiement"]);
  3902.                             }
  3903.                         }
  3904.                     }
  3905.                     if ($uneCommande["typeCommande"] != 2) {
  3906.                         if ($uneCommande["typeCommande"] == 4) {
  3907.                             $objetTable $tableRepository->findOneBy(array("codeGenere" => $uneCommande["clientCodeGenere"])); //$em->getRepository($this->stockBundle . 'TableMange') 
  3908.                             $siObjetCommandeTable $commandeRepository->findOneBy(array("tableMange" => $objetTable"siCredit" => 1));
  3909.                         }
  3910.                         $objetCommande $commandeRepository->findOneBy(array("codeCommande" => $uneCommande["codeGenere"], 'abonne' => $objetUtilisateur->getAbonne()));
  3911.                         if ($objetCommande == null) {
  3912.                             $objetCommande = new Commande();
  3913.                             $dejaTraite 1;
  3914.                         }
  3915.                         if ($siObjetCommandeTable != null) {
  3916.                             $objetCommande =  $siObjetCommandeTable;
  3917.                             $dejaTraite 1;
  3918.                         }
  3919.                         if ($uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == ||  $uneCommande["typeCommande"] == ||  $uneCommande["typeCommande"] == 10) {
  3920.                             $objetSurface $surfaceAnneeRepository->findOneBy(array("codeGenere" => $uneCommande["clientCodeGenere"]));
  3921.                             $surfaceanneeId $objetSurface->getId();
  3922.                             // $siObjetCommandeTable =$em->getRepository($this->stockBundle . 'Commande')->findOneBy(array("tableMange"=>$objetTable, "siCredit"=>0));
  3923.                         }
  3924.                         $d = new \DateTime($uneCommande["dateFacture"]); //$sessionData['dateChoisie'];
  3925.                         $objetCommande->setAnnule(FALSE);
  3926.                         $objetCommande->setCodeCommande($uneCommande["codeGenere"]);
  3927.                         $objetCommande->setDescriptionCommande("Reception mobile");
  3928.                         $objetCommande->setEtatCommande(1);
  3929.                         $objetCommande->setRefBonCommande($uneCommande["codeGenere"]);
  3930.                         $objetCommande->setCodeGenere($uneCommande["codeGenere"]);
  3931.                         if ($uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == ||  $uneCommande["typeCommande"] == ||  $uneCommande["typeCommande"] == 10) {
  3932.                             $objetCommande->setSurfaceannee($objetSurface);
  3933.                             if ($objetSurface != null) {
  3934.                                 $objetCommande->setProducteur($objetSurface->getProducteur());
  3935.                                 $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetSurface->getProduit(), 'etatAnneeCampagne' => 1));
  3936.                                 //$objetCommande->setAnneeCampagne($objetAnneeCampagne); 
  3937.                             }
  3938.                             $objetSurfaceAbonne $surfaceAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'surfaceannee' => $objetSurface]);
  3939.                             $objetProducteurAbonne $producteurAbonneRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'producteur' => $objetSurface->getProducteur()]);
  3940.                             //$objetCommande->setSurfaceabonne($objetSurfaceAbonne);
  3941.                             $objetCommande->setProducteurabonne($objetProducteurAbonne);
  3942.                             $objetAnneeCampagne $anneeCampagneRepository->findOneBy(array("produit" => $objetSurface->getProduit(), "abonne" => $objetUtilisateur->getAbonne(), 'etatAnneeCampagne' => 1));
  3943.                             if ($objetAnneeCampagne != null)
  3944.                                 $objetCommande->setAnneeCampagne($objetAnneeCampagne);
  3945.                         }
  3946.                         $objetCommande->setTauxEchange(0);
  3947.                         //$objetCommande->setNumeroLot($uneCommande["numeroLot"]);
  3948.                         if (array_key_exists("numeroLot"$uneCommande))
  3949.                             $objetCommande->setNumeroLot($uneCommande["numeroLot"]);
  3950.                         else
  3951.                             $objetCommande->setNumeroLot($uneCommande["codeGenere"]);
  3952.                         $objetCommande->setDatePublication($d);
  3953.                         $objetCommande->setMontantResteCommande(0);
  3954.                         $objetCommande->setTypeCommande($uneCommande["typeCommande"]);
  3955.                         $objetCommande->setCaisse($objetUtilisateur->getCaisse());
  3956.                         if ($dejaTraite ==  0)
  3957.                             $objetCommande->setSiCredit($uneCommande["siCredit"]);
  3958.                         $objetCommande->setMontantCommande($uneCommande["montant"]);
  3959.                         $objetCommande->setUtilisateur($objetUtilisateur);
  3960.                         if ($objetUtilisateur != null) {
  3961.                             $objetCommande->setAbonne($objetUtilisateur->getAbonne());
  3962.                             $objetAbonne $objetUtilisateur->getAbonne();
  3963.                         } else {
  3964.                             $objetAbonne null;
  3965.                         }
  3966.                         if ($uneCommande["typeCommande"] == 0) {
  3967.                             $objetCommande->setFournisseur($objetFournisseur);
  3968.                         } else if ($uneCommande["typeCommande"] != 4) {
  3969.                             $objetCommande->setClient($objetClient);
  3970.                         }
  3971.                         if ($uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == || $uneCommande["typeCommande"] == 5) {
  3972.                             if ($objetFournisseur != null)
  3973.                                 $objetCommande->setFournisseur($objetFournisseur);
  3974.                         } else if ($uneCommande["typeCommande"] != 4) {
  3975.                             $objetCommande->setClient($objetClient);
  3976.                         } else {
  3977.                             $objetCommande->setTableMange($objetTable);
  3978.                         }
  3979.                         $donnee $uneCommande["codeGenere"] . "#" $uneCommande["utilId"];
  3980.                         $em->persist($objetCommande);
  3981.                         $em->flush($objetCommande);
  3982.                         if ($uneCommande["typeCommande"] == 3) {
  3983.                             $objetOpportunite $this->saveOpportuniteClient($em$objetClient$objetUtilisateur->getAbonne(), $uneCommande["codeGenere"], new \DateTime());
  3984.                             $this->saveEtatInfoOpportuniteClient($em$etatOpportuniteRepository->findOneBy(["abonne" => $objetUtilisateur->getAbonne(), 'siCommande' => 1]), $objetOpportunite);
  3985.                             $objetCommande->setOpportunite($objetOpportunite);
  3986.                         }
  3987.                         $this->addHistoriqueAction($em"OperationVenteCommande"1$uneCommande["codeGenere"], 111$donnee$utilisateurRepository);
  3988.                         $siCommande 1;
  3989.                     }
  3990.                 } else {
  3991.                     if ($uneCommande["clientCodeGenere"] == "INVENTAIRE") {
  3992.                         $objetInfoInventaire $infoInventaireRepository->findOneBy(['codeGenere' => $uneCommande["codeGenere"]]);
  3993.                         if ($objetInfoInventaire == null) {
  3994.                             $objetInfoInventaire = new InfoInventaire();
  3995.                         }
  3996.                         $dateJour = new \DateTime();
  3997.                         $objetInfoInventaire->setDateInventaire($dateJour);
  3998.                         $objetInfoInventaire->setMoisInventaire($dateJour->format("m"));
  3999.                         $objetInfoInventaire->setAnneeInventaire($dateJour->format("Y"));
  4000.                         $objetInfoInventaire->setCodeGenere($uneCommande["codeGenere"]);
  4001.                         $objetInfoInventaire->setAbonne($objetUtilisateur->getAbonne());
  4002.                         $em->persist($objetInfoInventaire);
  4003.                         $em->flush();
  4004.                     } else {
  4005.                         $tabDateOperation[$inc] = $uneCommande["dateFacture"];
  4006.                         ++$inc;
  4007.                     }
  4008.                 }
  4009.             }
  4010.             //$JSONData = '[{"anneeId":2,"codeGenere":"PES111","etat":0,"eventId":1,"producteurId":90,"utilisateurId":0}]' ;
  4011.             $listLigneCommande json_decode($tabJSONData[1], true);
  4012.             //$operationManager = $this->get('operation_manager');
  4013.             // var_dump($idCommande);exit;
  4014.             //Generation de la reference de la facture.
  4015.             $d = new \DateTime();
  4016.             $an $d->format('Y');
  4017.             $m $d->format('m');
  4018.             //Fonction pour generer une facture
  4019.             $refFacture $this->getRefLivrer($em1$an$m$entite 'LIVRER'$taille 5);
  4020.             $refFacture $refFacture rand();
  4021.             //creation de l'entite fature
  4022.             $uneFacture = new Facture();
  4023.             $uneFacture->setCodeFacture($refFacture);
  4024.             $uneFacture->setDatePublication($d);
  4025.             $uneFacture->setTypeFacture(0);
  4026.             if ($uneCommande["typeCommande"] != 2) {
  4027.                 $uneFacture->setCommande($objetCommande);
  4028.             }
  4029.             $em->persist($uneFacture);
  4030.             $em->flush();
  4031.             //Si c'est un client departement ou client interne 
  4032.             //Creer objet Commande
  4033.             if ($uneCommande["typeCommande"] != 2) {
  4034.                 if ($objetCommande->getTypeCommande() != 0) {
  4035.                     if ($objetClient != NULL) {
  4036.                         if ($objetClient->getSiInterne() == 1) {
  4037.                             $autoObjetCommande $this->saveCommande($em"R" $uneCommande["codeGenere"],  $uneCommande["montant"], $objetClient$objetUtilisateur);
  4038.                             $autoObjetLivraison $this->saveLivraison($em$autoObjetCommande$objetClient$infoLivrerRepository);
  4039.                         }
  4040.                     }
  4041.                 }
  4042.             }
  4043.             $incSuite 0;
  4044.             foreach ($listLigneCommande as $ligneCommande) {
  4045.                 $objetProduit $produitRepository->find($ligneCommande["artCodeGenere"]);
  4046.                 $objetCommande $commandeRepository->findOneBy(['codeCommande' => $ligneCommande["factCodeGenere"]]);
  4047.                 if ($objetCommande  != null) {
  4048.                     $objetPrix $prixRigueurRepository->findOneBy(['infoPrixRigueur' => $ligneCommande["prix"], 'produit' => $objetProduit'typePrixRigueur' => 2]);
  4049.                     if ($objetPrix == null) {
  4050.                         $objetCible $cibleRepository->findOneBy(['etat' => 3'abonne' => $objetUtilisateur->getAbonne()]);
  4051.                         $objetCarat $caracteristiquePrixRepository->findOneBy(['etat' => 3'abonne' => $objetUtilisateur->getAbonne()]);
  4052.                         $objetPrix = new PrixRigueur();
  4053.                         if ($objetCible != null)
  4054.                             $objetPrix->setCible($objetCible);
  4055.                         if ($objetCarat != null)
  4056.                             $objetPrix->setCaracteristiquePrix($objetCarat);
  4057.                         $objetPrix->setProduit($objetProduit);
  4058.                         $objetPrix->setInfoPrixRigueur($ligneCommande["prix"]);
  4059.                         $objetPrix->setTypePrixRigueur(2);
  4060.                         $objetPrix->setEtatPrixRigueur(1);
  4061.                         if ($objetUtilisateur != null) {
  4062.                             $objetPrix->setAbonne($objetUtilisateur->getAbonne());
  4063.                         }
  4064.                         $em->persist($objetPrix);
  4065.                         $em->flush();
  4066.                         //Enregistrer dans la prix lie Ã  la caisse
  4067.                         $unCaissePrix = new CaissePrix();
  4068.                         if ($objetUtilisateur != null) {
  4069.                             $unCaissePrix->setCaisse($objetUtilisateur->getCaisse());
  4070.                             $unCaissePrix->setPrixrigueur($objetPrix);
  4071.                             if ($objetUtilisateur != null) {
  4072.                                 $unCaissePrix->setAbonne($objetUtilisateur->getAbonne());
  4073.                             }
  4074.                             $em->persist($unCaissePrix);
  4075.                         }
  4076.                     }
  4077.                     $montant = (float)$ligneCommande["prix"] * (float)$ligneCommande["nombre"];
  4078.                     $objetLigneCommande $ligneCommandeRepository->findOneBy(array("codeGenere" => $ligneCommande["codeGenere"]));
  4079.                     $siNouveau 0;
  4080.                     if ($objetLigneCommande == null) {
  4081.                         $siNouveau 1;
  4082.                         $objetLigneCommande = new LigneCommande();
  4083.                     }
  4084.                     $objetLigneCommande->setAnnule(false);
  4085.                     $objetLigneCommande->setEtatLigneCommande(1);
  4086.                     $objetLigneCommande->setProduit($objetProduit);
  4087.                     $objetLigneCommande->setMontantAutreTaxe(0);
  4088.                     $objetLigneCommande->setMontantHt($montant);
  4089.                     $objetLigneCommande->setQuantite($ligneCommande["nombre"]);
  4090.                     $objetLigneCommande->setQuantiteLivre($ligneCommande["nombre"]);
  4091.                     $objetLigneCommande->setCodeGenere($ligneCommande["codeGenere"]);
  4092.                     $objetLigneCommande->setPrixrigueur($objetPrix);
  4093.                     //$objetLigneCommande->setCaisse($objetUtilisateur->getCaisse());
  4094.                     $objetLigneCommande->setQuantiteReste(0);
  4095.                     $objetLigneCommande->setTypeOperation(1);
  4096.                     $objetLigneCommande->setClient($objetClient);
  4097.                     $objetLigneCommande->setCommande($objetCommande);
  4098.                     if ($objetUtilisateur != null) {
  4099.                         $objetLigneCommande->setAbonne($objetUtilisateur->getAbonne());
  4100.                     }
  4101.                     $objetLigneCommande->setTypeLigneCommande(1);
  4102.                     //$montantCommande = (int) $montantCommande + (int) $ligneCommande["montant"];
  4103.                     $codeVente "V_" rand();
  4104.                     $em->persist($objetLigneCommande);
  4105.                     $em->flush();
  4106.                     if ($objetCommande->getTypeCommande() != 0) {
  4107.                         if ($objetCommande->getTypeCommande() != && $objetCommande->getTypeCommande() != 7) {
  4108.                             $objetLigneCommande->setClient($objetClient);
  4109.                         }
  4110.                         if ($objetClient != NULL) {
  4111.                             if ($objetClient->getSiInterne() == 1) {
  4112.                                 $this->validateLigneCommandeInterne($em$codeVente$autoObjetLivraison$autoObjetCommande$objetProduit$objetPrix$ligneCommande["nombre"], 0$ligneCommandeRepository$livrerRepository);
  4113.                             }
  4114.                         }
  4115.                     }
  4116.                     if ($objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == 11) {
  4117.                         $objetInfoLivrer $this->saveLivraison($em$objetCommandeNULL$infoLivrerRepository);
  4118.                         //$objetPrix= $this->savePrix($em, $request->get('prix'.$uneLigneCommande->getId()),$uneLigneCommande->getProduit(), 1, $objetUtilisateur);
  4119.                         $this->validateLigneCommandeInterne($em"L_" rand(), $objetInfoLivrer$objetCommandeNULL$objetPrix$ligneCommande["nombre"], $objetLigneCommande$ligneCommandeRepository$livrerRepository);
  4120.                     }
  4121.                     //if($siNouveau ==1){
  4122.                     if (($siNouveau == && $objetCommande->getSiCredit() == &&  $objetCommande->getTypeCommande() == 3) || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == 10) {
  4123.                         if ($objetUtilisateur->getAbonne()->getId() != 10) {
  4124.                             $idProduit $objetProduit->getId();
  4125.                             if ($objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == 10)
  4126.                                 $objetTypeOperation $typeOperationRepository->findOneBy(["categorieTypeOperation" => $uneCommande["typeCommande"], 'abonne' => $objetUtilisateur->getAbonne()]);
  4127.                             else
  4128.                                 $objetTypeOperation $typeOperationRepository->findOneBy(['abonne' => $objetUtilisateur->getAbonne(), 'codeOpInt' => $objetCommande->getTypeCommande(), 'caisse' => $objetUtilisateur->getCaisse()]);
  4129.                             if ($objetTypeOperation != null) {
  4130.                                 $idTypeOp =  $objetTypeOperation->getId();
  4131.                                 if ($objetUtilisateur->getCaisse() != null) {
  4132.                                     $caisseId $objetUtilisateur->getCaisse()->getId();
  4133.                                 } else {
  4134.                                     $objetCaisse $caisseRepository->findOneby(['abonne' => $objetUtilisateur->getAbonne()]);
  4135.                                     $caisseId $objetCaisse->getId();
  4136.                                 }
  4137.                                 $tabCompteId =  $operationManager->getCompteCaisse($em$caisseId$caisseRepository);
  4138.                                 $tabCompteMontant $operationManager->getRecuperationCompte($em$idTypeOp$montant$typeOperationRepository);
  4139.                                 $compteAuxi $tabCompteId['compte'];
  4140.                                 //$idVille = $objetUtilisateur->getVille()->getId();
  4141.                                 if ($objetUtilisateur->getVille() == null) {
  4142.                                     $idVille 1;
  4143.                                 } else {
  4144.                                     $idVille $objetUtilisateur->getVille()->getId();
  4145.                                 }
  4146.                                 $clientId 0;
  4147.                                 if ($objetClient != null) {
  4148.                                     $clientId $objetClient->getId();
  4149.                                     $nomClient $objetClient->getUtilisateur()->getNom();
  4150.                                 } else {
  4151.                                     $clientId null;
  4152.                                     if ($objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == 10)
  4153.                                         $nomClient $objetCommande->getProducteur()->getUtilisateur()->getNom() . " " $objetCommande->getProducteur()->getUtilisateur()->getPrenoms();
  4154.                                     else
  4155.                                         $nomClient "Passant";
  4156.                                 }
  4157.                                 $infoDepo $objetTypeOperation->getLibTypeOperation() . "/" $ligneCommande["nombre"] . "_" $objetProduit->getNomProduit() . "/" $nomClient;
  4158.                                 //$d = new \DateTime($dateOperation); //$sessionData['dateChoisie'];
  4159.                                 if ($objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == || $objetCommande->getTypeCommande() == 10)
  4160.                                     $producteurId $objetCommande->getProducteur()->getId();
  4161.                                 else
  4162.                                     $producteurId NULL;
  4163.                                 $dateChoisie $objetCommande->getDatePublication()->format('Y/m/d H:i:s');
  4164.                                 $fournisseurId null;
  4165.                                 if ($objetFournisseur != null)
  4166.                                     $fournisseurId $objetFournisseur->getId();
  4167.                                 $objetOperation $operationRepository->findOneBy(['commande' => $objetCommande]);
  4168.                                 if ($objetOperation == null)
  4169.                                     $operationManager->geneLigneOperationComptable($objetCommande->getId(), $tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$refFacture''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie 2$idProduit$compteAuxi$dateChoisie$idVille$objetUtilisateur->getAbonne()->getId(), 0$clientId$utilisateurRepository$caisseRepository$producteurId$fournisseurId$activiteId null$surfaceanneeId);
  4170.                                 $donnee $montant "#" $objetLigneCommande->getQuantite() . "#" $objetCommande->getCodeGenere() . "#" $objetPrix->getInfoPrixRigueur();
  4171.                                 //  $this->addHistoriqueAction($em, "ProducteurInspectionReponse", 1, $unInspectionReponse["codeGenere"], $objetUtilisateur->getId(), $objetProducteur->getId(), 1,$donnee);
  4172.                                 $this->addHistoriqueAction($em"OperationVenteLigneCommande"1"XXXX"111$donnee$utilisateurRepository);
  4173.                             }
  4174.                         }
  4175.                         if ($uneCommande["typeCommande"] == ||  $siClientDejaAchete == 1) {
  4176.                             $montantTotalCommande $ligneCommandeRepository->sumLigneCommande($objetCommande->getId());
  4177.                             $objetCommande->setMontantCommande($montantTotalCommande); //
  4178.                             $em->persist($objetCommande);
  4179.                             $em->flush($objetCommande);
  4180.                         }
  4181.                     }
  4182.                 } else {
  4183.                     $objetInfoInventaire $infoInventaireRepository->findOneBy(['codeGenere' => $ligneCommande["factCodeGenere"]]);
  4184.                     if ($ligneCommande["typeOperation"] == -1) {
  4185.                         $objetProduit $produitRepository->find($ligneCommande["artCodeGenere"]);
  4186.                         $this->initialiserInventaire($em$objetProduit->getId());
  4187.                         $objetInventaire null;
  4188.                         if (array_key_exists("numeroLot"$uneCommande))
  4189.                             $objetInventaire $inventaireRepository->findOneBy(['codeGenere' => $ligneCommande["CodeGenere"]]);
  4190.                         if ($objetInventaire == null) {
  4191.                             $siNouveau 1;
  4192.                             $objetInventaire = new Inventaire();
  4193.                         }
  4194.                         // $objetInventaire->setAnnule(false);  
  4195.                         $objetInventaire->setQuantiteSaisie($ligneCommande["nombre"]);
  4196.                         $objetInventaire->setSaveQuantiteSaisie($ligneCommande["nombre"]);
  4197.                         $objetInventaire->setCodeGenere($ligneCommande["codeGenere"]);
  4198.                         $objetInventaire->setProduit($objetProduit);
  4199.                         $objetInventaire->setInfoinventaire($objetInfoInventaire);
  4200.                         if ($objetUtilisateur != null) {
  4201.                             $objetInventaire->setAbonne($objetUtilisateur->getAbonne());
  4202.                         }
  4203.                         $em->persist($objetInventaire);
  4204.                         $em->flush();
  4205.                     } else {
  4206.                         if ($objetUtilisateur->getCaisse() != null) {
  4207.                             $caisseId $objetUtilisateur->getCaisse()->getId();
  4208.                         } else {
  4209.                             $objetCaisse $caisseRepository->findOneby(['abonne' => $objetUtilisateur->getAbonne()]);
  4210.                             $caisseId $objetCaisse->getId();
  4211.                         }
  4212.                         $tabCompteId =  $operationManager->getCompteCaisse($em$caisseId$caisseRepository);
  4213.                         $refFacture $ligneCommande["factCodeGenere"]; //$uneCommande->getCodeCommande();
  4214.                         // foreach ( $uneCommande->getlignecommandeTmps() as $uneLigneCommandeTmp) {
  4215.                         // $montantCommission =  $montant * $objetUtilisateur->getCommission();
  4216.                         $idProduit $objetProduit->getId();
  4217.                         //var_dump($uneLigneCommandeTmp->getTypeOperation(), $objetUtilisateur->getCaisse()->getId()); exit;
  4218.                         // $objetTypeOperation = $em->getRepository($this->stockBundle . 'TypeOperation')->findOneBy(['abonne'=>$objetUtilisateur->getAbonne(), 'codeOpInt'=>$ligneCommande["typeOperation"], 'caisse'=>$objetUtilisateur->getCaisse() ]); //7 commision
  4219.                         $objetTypeOperation $typeOperationRepository->find($ligneCommande["typeOperation"]);
  4220.                         $idTypeOp $objetTypeOperation->getId();
  4221.                         $montantAPaye $ligneCommande["prix"];                        //$montantEsp = $infoCommande->getMontantCommande();
  4222.                         $tabCompteMontant $operationManager->getRecuperationCompte($em$idTypeOp$montantAPaye$typeOperationRepository);
  4223.                         $compteAuxi $tabCompteId['compte'];
  4224.                         //$infoDepo = $objetTypeOperation ->getLibTypeOperation()."/".$ligneCommande["detail"]; //.$uneCommande->getClient()->getUtilisateur()->getNom();       
  4225.                         //var_dump( $idTypeOp );exit;
  4226.                         $infoDepo $objetTypeOperation->getLibTypeOperation() . "/" $objetProduit->getNomProduit() . "/" $ligneCommande["detail"]; //.$uneCommande->getClient()->getUtilisateur()->getNom();       
  4227.                         if ($objetUtilisateur->getVille() == null) {
  4228.                             $idVille 1;
  4229.                         } else {
  4230.                             $idVille $objetUtilisateur->getVille()->getId();
  4231.                         }
  4232.                         $d = new \DateTime($tabDateOperation[$incSuite]); //$sessionData['dateChoisie'];
  4233.                         $dateChoisie $d->format('Y/m/d H:i:s');
  4234.                         ++$incSuite;
  4235.                         //voir si les données existent dans la table operation
  4236.                         $siOperation $operationRepository->findOneBy(array("refFacture" => $ligneCommande["factCodeGenere"]));
  4237.                         if ($siOperation == null) {
  4238.                             $operationManager->geneLigneOperationComptable(null$tabCompteId['id'], $tabCompteMontant['montant'], $infoDepo$telDepo ''$refFacture''$tabCompteMontant['compte'], $idTypeOp$piece 0$nomCompte ''$typePaie 2$idProduit$compteAuxi$dateChoisie$idVille$objetUtilisateur->getAbonne()->getId(), 0null$utilisateurRepository$caisseRepository);
  4239.                         }
  4240.                         //} 
  4241.                     }
  4242.                 }
  4243.             }
  4244.         }
  4245.         //$em->getConnection()->commit();
  4246.         $dataSend =  $this->get('serializer')->serialize(array('server_response' => true), 'json');
  4247.         $response = new Response($dataSend);
  4248.         $response->headers->set('Content-Type''application/json');
  4249.         return $response;
  4250.     }
  4251.     function traiteDonneeImage($em$JSONData$parameters$surfaceAnneeRepository$inspectionRempliRepository$producteurRepository$imageRepository)
  4252.     { ///Revoir comment ajouter l'abonne
  4253.         $listImage json_decode($JSONDatatrue);
  4254.         $em->getConnection()->beginTransaction();
  4255.         //$donnee = $unProducteur["nom"] ."#". $unProducteur["prenoms"] ."#".$unProducteur["telephone"] ."#". $unProducteur["idVille"] ."#".$unProducteur["codeGenere"]  ."#".$unProducteur["idutil"] ."#".$unProducteur["sexe"]."#".$unProducteur["cni"]  ;
  4256.         $codeGenere "0001";
  4257.         if ($listImage  != null) {
  4258.             foreach ($listImage as $uneImage) {
  4259.                 //$votreImage = base64_decode($parameters['image'.$uneImage["id"]]);
  4260.                 $file_path =   __DIR__ '/../../../public/';
  4261.                 $dossier "producteur/";
  4262.                 
  4263.                 if(array_key_exists('image' $uneImage["id"], $parameters)){
  4264.                     if ($uneImage["typeImage"] == 2) {
  4265.                         $media str_replace('data:audio/mpeg;base64,Base64EncodedMP3Data'''$parameters['image' $uneImage["id"]]);
  4266.                         $media str_replace(' ''+'$media);
  4267.                         $nameImage "audio_" uniqid() . "_" $uneImage["id"] . '.mp3';
  4268.                     } else {
  4269.                         $media str_replace('data:image/png;base64,'''$parameters['image' $uneImage["id"]]);
  4270.                         $media str_replace(' ''+'$media);
  4271.                         $nameImage "signature_" uniqid() . "_" $uneImage["id"] . '.png';
  4272.                     }
  4273.                 
  4274.                     // Create Image path with Image name and Extension
  4275.                     $file $file_path $dossier $nameImage;
  4276.                     // Decode the Base64 encoded Image
  4277.                     if ($uneImage["typeImage"] == 2)
  4278.                         $data base64_decode($parameters['image' $uneImage["id"]]);
  4279.                     else
  4280.                         $data base64_decode($media);
  4281.                     // Save Image in the Image Directory
  4282.                     $success file_put_contents($file$data);
  4283.                     //$file_path = $file_path . base64_decode( $_FILES['image'.$uneImage["id"]]['name']);
  4284.                     $objetImage null;
  4285.                     if ($uneImage["typeImage"] != 3)
  4286.                         $objetImage $imageRepository->findOneBy(array("titreImage" => $uneImage["codeGenere"]));
  4287.                     if ($objetImage == null) {
  4288.                         $objetImage = new Image();
  4289.                         $objetImage->setUrlImage($dossier $nameImage);
  4290.                         if ($uneImage["typeImage"] == 3) {
  4291.                             $objetSurfaceAnnee $surfaceAnneeRepository->findOneBy(array("codeGenere" => $uneImage['prodCodeGenere']));
  4292.                             if ($objetSurfaceAnnee != null)
  4293.                                 $objetImage->setSurfaceannee($objetSurfaceAnnee);
  4294.                         }
  4295.                         if ($uneImage["typeImage"] == 10) {
  4296.                             $objetProducteur $producteurRepository->findOneBy(array("codeGenere" => $uneImage['prodCodeGenere']));
  4297.                             if ($objetProducteur != null)
  4298.                                 $objetImage->setProducteur($objetProducteur);
  4299.                         } else {
  4300.                             $objetInspectionRempli $inspectionRempliRepository->findOneBy(array("codeGenere" => $uneImage['prodCodeGenere']));
  4301.                             if ($objetInspectionRempli != null)
  4302.                                 $objetImage->setInspectionrempli($objetInspectionRempli);
  4303.                         }
  4304.                         $objetImage->setCodeGenere($uneImage["prodCodeGenere"]);
  4305.                         $objetImage->setElementCodeGenere($uneImage["prodCodeGenere"]);
  4306.                         $objetImage->setTitreImage($uneImage["codeGenere"]);
  4307.                         $em->persist($objetImage);
  4308.                         $em->flush($objetImage);
  4309.                     }
  4310.                 }
  4311.             }
  4312.         }
  4313.         $em->getConnection()->commit();
  4314.     }
  4315.     public function getInspectionInfo($em$listeInspection$objetUtilisateur$inspectionRepository$categorieQuestionInspectionRepository$reponseQuestionInspectionRepository$questionInspectionRepository)
  4316.     {
  4317.         $tablInspection = array();
  4318.         $i 0;
  4319.         foreach ($listeInspection as $unObjetInspection) {
  4320.             $tablInspection[$i]['id'] = $unObjetInspection["id"];
  4321.             $tablInspection[$i]['label'] = $unObjetInspection["label"];
  4322.             $tablInspection[$i]['description'] = $unObjetInspection["description"];
  4323.             $tablInspection[$i]['etat'] = $unObjetInspection["etatInspection"];
  4324.             $tablInspection[$i]['type'] = $unObjetInspection["typeInspection"];
  4325.             $tablInspection[$i]['siAudio'] = $unObjetInspection["siAudio"];
  4326.             $tablInspection[$i]['siSignature'] = $unObjetInspection["siSignature"];
  4327.             $tablInspection[$i]['siImage'] = $unObjetInspection["siImage"];
  4328.             $tablInspection[$i]['codeGenere'] = $unObjetInspection["codeGenere"];
  4329.             $tablInspection[$i]['siApresAjout'] = $unObjetInspection["siApresAjout"];
  4330.             $tablInspection[$i]['siInspectionSuivant'] = $unObjetInspection["siInspectionSuivant"];
  4331.             $tablInspection[$i]['inspectionSuivant'] = $unObjetInspection["inspectionSuivant"];
  4332.             $tablInspection[$i]['infoAutre'] = $unObjetInspection["infoAutre"];
  4333.             $tablInspection[$i]['ordre'] = $unObjetInspection["ordre"];
  4334.             $uneInspection $inspectionRepository->find($unObjetInspection["id"]);
  4335.             $listeCategorieQuestionInspection $categorieQuestionInspectionRepository->findBy(array("inspection" => $uneInspection'abonne' => $objetUtilisateur->getAbonne()));
  4336.             $j 0;
  4337.             foreach ($listeCategorieQuestionInspection as $unCategorieQuestionInspection) {
  4338.                 $tablInspection[$i]['categorie'][$j]["id"] = $unCategorieQuestionInspection->getId(); //Tratement des catégories                    
  4339.                 $tablInspection[$i]['categorie'][$j]["label"] = $unCategorieQuestionInspection->getLabel(); //Tratement des catégories
  4340.                 $tablInspection[$i]['categorie'][$j]["description"] = $unCategorieQuestionInspection->getDescription();
  4341.                 $tablInspection[$i]['categorie'][$j]["type"] = $unCategorieQuestionInspection->getTypeCategorieQuestionInspection();
  4342.                 $tablInspection[$i]['categorie'][$j]["ordre"] = $unCategorieQuestionInspection->getOrdre();
  4343.                 $tablInspection[$i]['categorie'][$j]["etat"] = $unCategorieQuestionInspection->getEtatCategorieQuestionInspection();
  4344.                 $tablInspection[$i]['categorie'][$j]["inspectionId"] = $unCategorieQuestionInspection->getInspection()->getId();
  4345.                 $tablInspection[$i]['categorie'][$j]["codeGenere"] = $unCategorieQuestionInspection->getCodeCategorieInspection();
  4346.                 $k 0;
  4347.                 $listeQuestionInspection $questionInspectionRepository->findBy(['categoriequestioninspection' => $unCategorieQuestionInspection'etatQuestionInspection' => 1], ["id" => "ASC"]);
  4348.                 foreach ($listeQuestionInspection as $unQuestionInspection) {
  4349.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["id"] = $unQuestionInspection->getId();
  4350.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["label"] = $unQuestionInspection->getLabel();
  4351.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["description"] = $unQuestionInspection->getDescription();
  4352.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["type"] = $unQuestionInspection->getTypeQuestionInspection();
  4353.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["etat"] = $unQuestionInspection->getEtatQuestionInspection();
  4354.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["ordre"] = $unQuestionInspection->getOrdre();
  4355.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["siQuestionInter"] = $unQuestionInspection->getSiQuestionIntermediaire();
  4356.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["siQuestionIssue"] = $unQuestionInspection->getSiObligatoire();
  4357.                     $tablInspection[$i]['categorie'][$j]["question"][$k]["codeGenere"] = $unQuestionInspection->getCodeQuestion();
  4358.                     if ($unQuestionInspection->getTypeQuestionInspection() != 1) {
  4359.                         $tablInspection[$i]['categorie'][$j]["question"][$k]['reponse'] = $reponseQuestionInspectionRepository->getListeApiReponseQuestionInspection($unQuestionInspection->getId());
  4360.                     }
  4361.                     ++$k;
  4362.                 }
  4363.                 ++$j;
  4364.             }
  4365.             ++$i;
  4366.         }
  4367.         return  $tablInspection;
  4368.     }
  4369.     /**
  4370.      * Creates a new user entity.
  4371.      *
  4372.      * @Route("/liste/produit/agricole", name="api_liste_produit_agricole")
  4373.      * @Method({"GET","POST"})
  4374.      */
  4375.     public function saveListeProduitAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryClientRepository $clientRepositoryProduitRepository $produitRepository)
  4376.     {
  4377.         $token $this->_tokenStorage->getToken();
  4378.         if (!$token) {
  4379.             return $this->json([
  4380.                 'status' => 400,
  4381.                 'user' => null
  4382.             ], 400);
  4383.         }
  4384.         $em $this->getDoctrine()->getManager();
  4385.         // $em->getConnection()->beginTransaction();
  4386.         $parameters json_decode($request->getContent(), true);
  4387.         $codeClientGenere $parameters['codeGenereClient'];
  4388.         $idUtil trim($parameters['idUtil']); // email saisie
  4389.         //recuperer les informations sur 
  4390.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4391.         $objetClient $clientRepository->findOneBy(["codeGenere" => $codeClientGenere]);
  4392.         //$queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4393.         $objetInitial $objetUtilisateur->getAbonne();
  4394.         if ($objetClient != null) {
  4395.             // $queryResult[0]["produit"] =$produitRepository->getAllProduitClientMobileAPI(0,$objetUtilisateur->getAbonne()->getId(), $objetClient->getId());
  4396.             $listeProduit1 $produitRepository->getAllProduitClientSiteWebAPI(3$objetInitial->getId(), $objetClient->getId());
  4397.             $listeProduit2 $produitRepository->getAllProduitProduitFini(0$objetInitial->getId(),  $objetClient->getId());
  4398.             $queryResult[0]["produit"] = array_merge($listeProduit1$listeProduit2);
  4399.             //produit Conditionné
  4400.             $listeProduitConditionne $produitRepository->getAllListeProduitConditionne($produitId 0$siCategorie 0$objetInitial->getId(), $partenaireId 0$typeAction 0);
  4401.             $listeCarateristique  $produitRepository->getAllCarateristqueProduit($objetInitial->getId());
  4402.             //getAllProduitConditionne($produitId=0, $siCategorie, $abonneId=0,$partenaireId=0, $typeAction=0)
  4403.         } else {
  4404.             if ($objetUtilisateur->getCaisse() != null) {
  4405.                 $queryResult[0]["produit"] = $produitRepository->getAllProduitMobileAPI(0$objetUtilisateur->getAbonne()->getId());
  4406.             } else {
  4407.                 //$queryResult[0]["produit"] =$produitRepository-> getAllProduitCaisseAPI($objetUtilisateur->getAbonne()->getId(), $caisse);
  4408.                 $listeProduit1 $produitRepository->getAllProduitClientSiteWebAPI(3$objetInitial->getId(), 0);
  4409.                 $listeProduit2 $produitRepository->getAllProduitProduitFini(0$objetInitial->getId(), 0);
  4410.                 $queryResult[0]["produit"] = array_merge($listeProduit1$listeProduit2);
  4411.             }
  4412.         }
  4413.         $queryResult[0]["code"] = $codeClientGenere;
  4414.         $queryResult[0]["listeProduitConditionne"] = $listeProduitConditionne;
  4415.         $queryResult[0]["listeCarateristique"] = $listeCarateristique;
  4416.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4417.         $response = new Response($dataSend);
  4418.         $response->headers->set('Content-Type''application/json');
  4419.         return $response;
  4420.     }
  4421.     /**
  4422.      * Creates a new user entity.
  4423.      *
  4424.      * @Route("/liste/commande/agricole", name="api_liste_commande_agricole")
  4425.      * @Method({"GET","POST"})
  4426.      */
  4427.     public function saveListeCommandeAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryClientRepository $clientRepositoryProduitRepository $produitRepositoryCommandeRepository $commandeRepository)
  4428.     {
  4429.         $token $this->_tokenStorage->getToken();
  4430.         if (!$token) {
  4431.             return $this->json([
  4432.                 'status' => 400,
  4433.                 'user' => null
  4434.             ], 400);
  4435.         }
  4436.         $em $this->getDoctrine()->getManager();
  4437.         // $em->getConnection()->beginTransaction();
  4438.         $parameters json_decode($request->getContent(), true);
  4439.         $codeClientGenere $parameters['codeClientGenere'];
  4440.         $idUtil trim($parameters['idUtil']); // email saisie
  4441.         //recuperer les informations sur 
  4442.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4443.         $objetClient $clientRepository->findOneBy(["codeGenere" => $codeClientGenere]);
  4444.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4445.         //$queryResult[0]["commande"] 
  4446.         $i 0;
  4447.         $listeCommande $commandeRepository->getListeRechercheCommandeAPI($nomcol 0$datefin 0$datedeb 0$ville 0$util 0$silivre 0$numcom 0$prod 0$type 301001$objetUtilisateur->getAbonne()->getId(), 0$objetClient->getId());
  4448.         foreach ($listeCommande as $uneCommande) {
  4449.             $queryResult[$i]["commande"]["code"]  =  $uneCommande["codeCommande"];
  4450.             $queryResult[$i]["commande"]["date"]  =  $uneCommande["datePublication"];
  4451.             $queryResult[$i]["commande"]["montant"]  =  $uneCommande["montantCommande"];
  4452.             $queryResult[$i]["commande"]["ligne"]  =  $commandeRepository->getListeRechercheLigneCommandeAPI($nomcol 0$datefin 0$datedeb 0$ville 0$util 0$silivre 0$uneCommande["codeCommande"], $prod 0$type 301001$objetUtilisateur->getAbonne()->getId(), 0$objetClient->getId());     //$em->getRepository($this->stockBundle . 'Commande')        
  4453.             $i++;
  4454.         }
  4455.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4456.         $response = new Response($dataSend);
  4457.         $response->headers->set('Content-Type''application/json');
  4458.         return $response;
  4459.     }
  4460.     /**
  4461.      * Creates a new user entity.
  4462.      *
  4463.      * @Route("/liste/categorie/agricole", name="api_liste_categorie_agricole")
  4464.      * @Method({"GET","POST"})
  4465.      */
  4466.     public function saveListeCategorieAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryProduitRepository $produitRepository)
  4467.     {
  4468.         $token $this->_tokenStorage->getToken();
  4469.         if (!$token) {
  4470.             return $this->json([
  4471.                 'status' => 400,
  4472.                 'user' => null
  4473.             ], 400);
  4474.         }
  4475.         $em $this->getDoctrine()->getManager();
  4476.         // $em->getConnection()->beginTransaction();
  4477.         $parameters json_decode($request->getContent(), true);
  4478.         $idUtil trim($parameters['idUtil']); // email saisie
  4479.         //recuperer les informations sur 
  4480.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4481.         $objetInitial $objetUtilisateur->getAbonne();
  4482.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4483.         if ($objetUtilisateur->getCaisse() == null) {
  4484.             $queryResult[0]["categorie"] = $produitRepository->getAllCategorieMobileAPI(0$objetUtilisateur->getAbonne()->getId(), 1);
  4485.         } else {
  4486.             //$queryResult[0]["categorie"] =$produitRepository-> getAllProduitCaisseAPI($objetUtilisateur->getAbonne()->getId(), $objetUtilisateur->getCaisse()->getId());
  4487.             //var_dump($listeCategorie1);
  4488.             $listeCategorie1 $produitRepository->getAllCategorieProduitParent(0$objetInitial->getId(), 1);
  4489.             //var_dump($listeCategorie1);
  4490.             $listeCategorie2 $produitRepository->getAllCategorieProduitFini(0$objetInitial->getId(), 0);
  4491.             //var_dump($listeCategorie2);exit;
  4492.             $listeCategorie3 $produitRepository->getAllCategorieTransforme(0$objetInitial->getId(), 0);
  4493.             //var_dump($listeCategorie3);
  4494.             $queryResult[0]["categorie"] = $listeCategorie array_merge($listeCategorie1$listeCategorie2$listeCategorie3);
  4495.         }
  4496.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4497.         $response = new Response($dataSend);
  4498.         $response->headers->set('Content-Type''application/json');
  4499.         return $response;
  4500.     }
  4501.     /**
  4502.      * Creates a new user entity.
  4503.      *
  4504.      * @Route("/liste/article/agricole", name="api_liste_article_agricole")
  4505.      * @Method({"GET","POST"})
  4506.      */
  4507.     public function saveListeArticleAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryArticleRepository $articleRepository,
  4508.     RubriqueRepository $rubriqueRepositoryImageRepository $imageRepositoryLangueRepository $langueRepository)
  4509.     {
  4510.         $token $this->_tokenStorage->getToken();
  4511.         if (!$token) {
  4512.             return $this->json([
  4513.                 'status' => 400,
  4514.                 'user' => null
  4515.             ], 400);
  4516.         }
  4517.         $em $this->getDoctrine()->getManager();
  4518.         // $em->getConnection()->beginTransaction();
  4519.         $parameters json_decode($request->getContent(), true);
  4520.         $idUtil trim($parameters['idUtil']); // email saisie
  4521.         //recuperer les informations sur 
  4522.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4523.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4524.         $queryResult[0]["rubrique"] = $rubriqueRepository->getAllOrOneRubriqueByProduitSousActifAPI($objetUtilisateur->getAbonne()->getId());
  4525.         $queryResult[0]["artice"] = $articleRepository->getAllOrOneArticleSousActifAPI(0$objetUtilisateur->getAbonne()->getId());
  4526.         $queryResult[0]["image"] = $imageRepository->getAllImageAPI($objetUtilisateur->getAbonne()->getId());
  4527.         $queryResult[0]["langueImage"] = $imageRepository->getAllLangueImageAPI(0$objetUtilisateur->getAbonne()->getId());
  4528.         $queryResult[0]["langue"] = $langueRepository->getAllLangue($objetUtilisateur->getAbonne()->getId());
  4529.         
  4530.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4531.         $response = new Response($dataSend);
  4532.         $response->headers->set('Content-Type''application/json');
  4533.         return $response;
  4534.     }
  4535.     /**
  4536.      * Creates a new user entity.
  4537.      *
  4538.      * @Route("/liste/carateristique/prix/agricole", name="api_liste_carateristique_prix_agricole")
  4539.      * @Method({"GET","POST"})
  4540.      */
  4541.     public function saveListeCarateristiquePrixAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryPrixRigueurRepository $prixRigueurRepository)
  4542.     {
  4543.         $token $this->_tokenStorage->getToken();
  4544.         if (!$token) {
  4545.             return $this->json([
  4546.                 'status' => 400,
  4547.                 'user' => null
  4548.             ], 400);
  4549.         }
  4550.         $em $this->getDoctrine()->getManager();
  4551.         // $em->getConnection()->beginTransaction();
  4552.         $parameters json_decode($request->getContent(), true);
  4553.         $idUtil trim($parameters['idUtil']); // email saisie
  4554.         //recuperer les informations sur 
  4555.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4556.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4557.         $queryResult[0]["carateristiqueprix"] = $prixRigueurRepository->getAllCarateristiquePrixAPI($objetUtilisateur->getAbonne()->getId());
  4558.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4559.         $response = new Response($dataSend);
  4560.         $response->headers->set('Content-Type''application/json');
  4561.         return $response;
  4562.     }
  4563.     /**
  4564.      * Creates a new user entity.
  4565.      *
  4566.      * @Route("/liste/prix/agricole", name="api_liste_prix_agricole")
  4567.      * @Method({"GET","POST"})
  4568.      */
  4569.     public function saveListePrixAgricoleAction(Request $requestUtilisateurRepository $utilisateurRepositoryPrixRigueurRepository $prixRigueurRepository)
  4570.     {
  4571.         $token $this->_tokenStorage->getToken();
  4572.         if (!$token) {
  4573.             return $this->json([
  4574.                 'status' => 400,
  4575.                 'user' => null
  4576.             ], 400);
  4577.         }
  4578.         $em $this->getDoctrine()->getManager();
  4579.         // $em->getConnection()->beginTransaction();
  4580.         $parameters json_decode($request->getContent(), true);
  4581.         $idUtil trim($parameters['idUtil']); // email saisie
  4582.         //recuperer les informations sur 
  4583.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4584.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4585.         $queryResult[0]["prix"] = $prixRigueurRepository->getAllPrixAPI($objetUtilisateur->getAbonne()->getId());
  4586.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4587.         $response = new Response($dataSend);
  4588.         $response->headers->set('Content-Type''application/json');
  4589.         return $response;
  4590.     }
  4591.     /**
  4592.      * Creates a new user entity.
  4593.      *
  4594.      * @Route("/liste/info/logistique/agricole", name="api_liste_info_logistique_agricole")
  4595.      * @Method({"GET","POST"})
  4596.      */
  4597.     public function saveListeInfoLogisitiqueAgricoleAction(
  4598.         Request $request,
  4599.         UtilisateurRepository $utilisateurRepository,
  4600.         EntrepotRepository $entrepotRepository,
  4601.         FournisseurRepository $fournisseurRepository,
  4602.         ProduitRepository $produitRepository,
  4603.         AbonneRepository $abonneRepository
  4604.     ) {
  4605.         $token $this->_tokenStorage->getToken();
  4606.         if (!$token) {
  4607.             return $this->json([
  4608.                 'status' => 400,
  4609.                 'user' => null
  4610.             ], 400);
  4611.         }
  4612.         $em $this->getDoctrine()->getManager();
  4613.         // $em->getConnection()->beginTransaction();
  4614.         $parameters json_decode($request->getContent(), true);
  4615.         $idUtil trim($parameters['idUtil']); // email saisie
  4616.         //recuperer les informations sur 
  4617.         $objetUtilisateur $utilisateurRepository->find($idUtil);
  4618.         $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$objetUtilisateur->getAbonne(), $abonneRepository));
  4619.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4620.         $queryResult[0]["entrepot"] = $entrepotRepository->getListeEntrepot($objetUtilisateur->getAbonne()->getId());
  4621.         $queryResult[0]["agent"] = $fournisseurRepository->getAllFournisseurByType(1$objetUtilisateur->getAbonne()->getId());
  4622.         $queryResult[0]["variete"] = $produitRepository->getAllProduitCategorieAPI(0$objetUtilisateur->getAbonne()->getId(), $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  4623.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4624.         $response = new Response($dataSend);
  4625.         $response->headers->set('Content-Type''application/json');
  4626.         return $response;
  4627.     }
  4628.     /**
  4629.      * Creates a new user entity.
  4630.      *
  4631.      * @Route("/liste/info/inspection/rempli", name="api_liste_inspection_rempli")
  4632.      * @Method({"GET","POST"})
  4633.      */
  4634.     public function getListeInspectionRempliAction(
  4635.         Request $request,
  4636.         InspectionRempliRepository $inspectionRempliRepository,
  4637.         InspectionReponseRepository $inspectionReponseRepository
  4638.     ) {
  4639.         $token $this->_tokenStorage->getToken();
  4640.         if (!$token) {
  4641.             return $this->json([
  4642.                 'status' => 400,
  4643.                 'user' => null
  4644.             ], 400);
  4645.         }
  4646.         $em $this->getDoctrine()->getManager();
  4647.         // $em->getConnection()->beginTransaction();
  4648.         $parameters json_decode($request->getContent(), true);
  4649.         $type trim($parameters['type']); 
  4650.         $infoCodeGenere trim($parameters['infoCodeGenere']); 
  4651.        
  4652.         // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4653.         $queryResult[0]["inspectionrempli"] = $inspectionRempliRepository->getListeInspectionRempliBySurface($infoCodeGenere$type);
  4654.         $queryResult[0]["inspectionreponse"] = $inspectionReponseRepository->getListeInspectionReponseByCode($infoCodeGenere$type);
  4655.         $queryResult[0]["inspectionimage"] = $inspectionRempliRepository->getListeImageInspectionRempli($infoCodeGenere$type);
  4656.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4657.         $response = new Response($dataSend);
  4658.         $response->headers->set('Content-Type''application/json');
  4659.         return $response;
  4660.     }
  4661.     /**
  4662.      * Creates a new user entity.
  4663.      *
  4664.      * @Route("/get/liste/info/localisation", name="api_get_liste_info_localisation")
  4665.      * @Method({"GET","POST"})
  4666.      */
  4667.     public function getListeInfoLocalisationAction(
  4668.         Request $request,
  4669.         LocalisationRepository $localisationRepository,
  4670.         SurfaceAnneeRepository $surfaceanneeRepository
  4671.     ) {
  4672.         $token $this->_tokenStorage->getToken();
  4673.         if (!$token) {
  4674.             return $this->json([
  4675.                 'status' => 400,
  4676.                 'user' => null
  4677.             ], 400);
  4678.         }
  4679.         $em $this->getDoctrine()->getManager();
  4680.         // $em->getConnection()->beginTransaction();
  4681.         $parameters json_decode($request->getContent(), true);
  4682.         $parCodeGenere trim($parameters['parCodeGenere']); // email saisie
  4683.         //recuperer les informations sur 
  4684.         $objetSurfaceAnnee $surfaceanneeRepository->findOneBy(['codeGenere' => $parCodeGenere]);
  4685.         $surfaceId 0;
  4686.         $queryResult[0]["localisation"] = array();
  4687.         if ($objetSurfaceAnnee != null) {
  4688.             $surfaceId $objetSurfaceAnnee->getId();
  4689.             // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4690.             $queryResult[0]["localisation"] = $localisationRepository->getLocalisationAuditMap($surfaceId$typeLocalisation 2);
  4691.         }
  4692.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4693.         $response = new Response($dataSend);
  4694.         $response->headers->set('Content-Type''application/json');
  4695.         return $response;
  4696.     }
  4697.     /**
  4698.      * Creates a new user entity.
  4699.      *
  4700.      * @Route("/get/liste/info/commande", name="api_get_liste_info_commande")
  4701.      * @Method({"GET","POST"})
  4702.      */
  4703.     public function getListeInfoCommandeAction(
  4704.         Request $request,
  4705.         LocalisationRepository $localisationRepository,
  4706.         SurfaceAnneeRepository $surfaceanneeRepository
  4707.     ) {
  4708.         $token $this->_tokenStorage->getToken();
  4709.         if (!$token) {
  4710.             return $this->json([
  4711.                 'status' => 400,
  4712.                 'user' => null
  4713.             ], 400);
  4714.         }
  4715.         $em $this->getDoctrine()->getManager();
  4716.         // $em->getConnection()->beginTransaction();
  4717.         $parameters json_decode($request->getContent(), true);
  4718.         $parCodeGenere trim($parameters['parCodeGenere']); // email saisie
  4719.         //recuperer les informations sur 
  4720.         $objetSurfaceAnnee $surfaceanneeRepository->findOneBy(['codeGenere' => $parCodeGenere]);
  4721.         $surfaceId 0;
  4722.         $queryResult[0]["entrepot"] = array();
  4723.         if ($objetSurfaceAnnee != null) {
  4724.             $surfaceId $objetSurfaceAnnee->getId();
  4725.             // $queryResult[0]["categorie"] =$em->getRepository($this->stockBundle . 'CategorieProduit')-> getAlCategorieAPI(0,$objetUtilisateur->getAbonne()->getId());
  4726.             $queryResult[0]["entrepot"] = $localisationRepository->getLocalisationAuditMap($surfaceId$typeLocalisation 2);
  4727.         }
  4728.         $dataSend =  $this->get('serializer')->serialize(array('data' => $queryResult), 'json');
  4729.         $response = new Response($dataSend);
  4730.         $response->headers->set('Content-Type''application/json');
  4731.         return $response;
  4732.     }
  4733.      /**
  4734.      * Creates a new user entity.
  4735.      *
  4736.      * @Route("/save/surface/annee/historique", name="api_save_surface_annee_historique")
  4737.      * @Method({"POST"})
  4738.      */
  4739.     public function saveSurfaceAnneeHistoriqueAction(
  4740.         Request $request,
  4741.         SurfaceAnneeRepository $surfaceanneeRepository,
  4742.         SurfaceAnneeHistoriqueRepository $surfaceAnneeHistoriqueRepository,
  4743.         AnneeCampagneRepository $anneeCampagneRepository
  4744.     ) {
  4745.         $token $this->_tokenStorage->getToken();
  4746.         if (!$token) {
  4747.             return $this->json([
  4748.                 'status' => 400,
  4749.                 'user' => null
  4750.             ], 400);
  4751.         }
  4752.         $em $this->getDoctrine()->getManager();
  4753.         $objetAnneeCampagne null;
  4754.         // $em->getConnection()->beginTransaction();
  4755.         $parameters json_decode($request->getContent(), true);
  4756.         $parCodeGenere trim($parameters['parCodeGenere']); //
  4757.         //recuperer les informations sur 
  4758.         $objetSurfaceAnnee $surfaceanneeRepository->findOneBy(['codeGenere' => $parCodeGenere]);
  4759.         if($objetSurfaceAnnee != null)
  4760.             $objetAnneeCampagne =  $anneeCampagneRepository->findOneBy(array("produit"=>$objetSurfaceAnnee->getProduit(),"etatAnneeCampagne"=>) );
  4761.       
  4762.         $this->insertSurfaceAnneeHistorique($em$objetSurfaceAnnee$objetAnneeCampagne$surfaceAnneeHistoriqueRepository);
  4763.         $dataSend =  $this->get('serializer')->serialize(array('data' => $parCodeGenere), 'json');
  4764.         $response = new Response($dataSend);
  4765.         $response->headers->set('Content-Type''application/json');
  4766.         return $response;
  4767.     }
  4768.            
  4769.     function setDateSynchronisation($em$objetUtilisateur)
  4770.     {
  4771.         $oldDateSynchronisation $objetUtilisateur->getDateSynchronisation();
  4772.         $objetUtilisateur->setDateSynchronisation(new \DateTime());
  4773.         $em->persist($objetUtilisateur);
  4774.         $em->flush();
  4775.         return  $oldDateSynchronisation;
  4776.     }
  4777. }