src/Controller/stock/ProduitController.php line 2084

Open in your IDE?
  1. <?php
  2. namespace App\Controller\stock;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Contracts\Translation\TranslatorInterface;
  6. use App\Types\user;
  7. use App\Entity\stock\Produit;
  8. use App\Entity\prod\SurfaceAnnee;
  9. use App\Entity\prod\AnneeCampagne;
  10. use App\Entity\user\Module;
  11. use App\Entity\cms\Rubrique;
  12. use App\Entity\cms\Article;
  13. use App\Form\stock\ProduitType;
  14. use App\Form\stock\ProduitVarieteType;
  15. use App\Form\stock\ProduitRendementType;
  16. use App\Form\prod\SurfaceAnneeProduitType;
  17. use App\Form\prod\AnneeCampagneProduitType;
  18. use App\Entity\stock\CarateristiqueProduit;
  19. use App\Entity\prod\CertificationProduit;
  20. use App\Entity\stock\Image;
  21. use App\Entity\stock\CaisseProduit;
  22. use App\Entity\stock\CaissePrix;
  23. use App\Entity\stock\ProduitTypeOperation;
  24. use App\Form\stock\VarieteType;
  25. use App\Types\user\TypeEtat;
  26. use App\Services\user\LoginManager;
  27. use Symfony\Component\HttpFoundation\Request;
  28. use Doctrine\Common\Collections\ArrayCollection;
  29. use App\ControllerModel\user\paramUtilTrait;
  30. use App\Repository\user\ConnexionRepository;
  31. use App\Repository\user\AbonneRepository;
  32. use App\Repository\user\ActionRepository;
  33. use App\Services\param\ParametreManager;
  34. use App\Repository\param\ParamRepository;
  35. use App\Repository\user\ModuleRepository;
  36. use App\Repository\user\ControleurRepository;
  37. use App\Repository\user\ProfilRepository;
  38. use App\Repository\user\UtilisateurRepository;
  39. use App\Repository\stock\ProduitRepository;
  40. use App\Repository\stock\FournisseurRepository;
  41. use App\Repository\stock\InventaireRepository;
  42. use App\Repository\stock\CaisseRepository;
  43. use App\Repository\stock\TypeOperationRepository;
  44. use App\Entity\prod\TacheProduitEtapeCroissance;
  45. use App\Entity\prod\ProduitEtapeCroissance;
  46. use App\Repository\prod\ProducteurRepository;
  47. use App\Repository\prod\CertificationRepository;
  48. use App\Repository\prod\AnneeCampagneRepository;
  49. use App\Repository\stock\CategorieProduitRepository;
  50. use App\Repository\stock\PrixRigueurRepository ;
  51. use App\Repository\stock\CibleRepository 
  52. use App\Repository\inspection\InspectionRepository;
  53. use App\Entity\stock\FournisseurProduit;
  54. use App\Repository\stock\CaracteristiquePrixRepository;
  55. use App\Repository\prod\EtapeCroissanceRepository;
  56. use App\Repository\prod\TacheProduitEtapeCroissanceRepository;
  57. use App\Repository\asso\ActiviteRepository;
  58. use App\Repository\prod\SurfaceAnneeRepository;
  59. use App\Repository\stock\LigneCommandeRepository;
  60. use App\Repository\stock\ProduitTypeOperationRepository;
  61. use App\Repository\stock\LivrerRepository;
  62. use App\Repository\stock\CommandeRepository;
  63. use App\Repository\stock\ProduitAbonneRepository;
  64. use App\Repository\cms\RubriqueRepository;
  65. use App\Repository\prod\ProduitEtapeCroissanceRepository;
  66. use App\Repository\asso\ProjetRepository;
  67. use App\Repository\prod\PlanteRepository;
  68. use App\Repository\stock\ImageRepository;
  69. /**
  70.  *
  71.  * Controlleur qui permet de gérer les operations sur les rubriques.
  72.  *
  73.  * @author armand.tevi@gmail.com
  74.  * @copyright ADMIN 2015
  75.  *
  76.  * @version 1
  77.  */
  78. class ProduitController extends AbstractController {
  79.     use paramUtilTrait;
  80.     /**
  81.      * Déclaration de l'entity manager.
  82.      *
  83.      * @var
  84.      */
  85.     protected $em;
  86.     /**
  87.      * @var string
  88.      *             Le comtroleur 
  89.      */
  90.     public function __construct(TranslatorInterface $translateImageRepository $imageRepository ) {
  91.       //  parent::__construct();
  92.         $this->response = new Response();
  93.         $this->response->headers->addCacheControlDirective('no-cache'true);
  94.         $this->response->headers->addCacheControlDirective('max-age'TypeEtat::INACTIF);
  95.         $this->response->headers->addCacheControlDirective('must-revalidate'true);
  96.         $this->response->headers->addCacheControlDirective('no-store'true);
  97.         $this->moduleTitre Module::MOD_GEST_PROD;
  98.         $this->moduleDesc Module::MOD_GEST_PROD_DESC;
  99.         $this->logMessage " [ ProduitController ] ";
  100.         $this->description "Controlleur qui gère les produits";
  101.         $this->translate $translate;
  102.         $this->imageRepository $imageRepository;
  103.     }
  104.     /**
  105.      * Methode s'occupant de l'ajout du produit.
  106.      *
  107.      * @author armand.tevi@gmail.com
  108.      * @copyright ADMIN 2015
  109.      *
  110.      * @version 1
  111.      *
  112.      * @return twig d'ajout d'un abonne ajouterProduit.html.twig
  113.      */
  114.     public function ajouterProduitAction(Request $request$id$siSimplifie$siAgricole,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  115.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  116.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryUtilisateurRepository $utilisateurRepositoryCaisseRepository $caisseRepository
  117.     FournisseurRepository $fournisseurRepositoryPrixRigueurRepository $prixRigueurRepositoryCibleRepository $cibleRepositoryCaracteristiquePrixRepository $caracteristiquePrixRepository
  118.     ,CategorieProduitRepository $categorieProduitRepositoryProduitTypeOperationRepository $produitTypeOperationRepositoryTypeOperationRepository $typeOperationRepository) {
  119.         /*
  120.          * Nom de l'action en cours
  121.          */
  122.         $nomAction __FUNCTION__;
  123.         /*
  124.          * Description de l'action de l'action en cours
  125.          */
  126.         $descAction "Ajouter  un produit ";
  127.         $locale ='fr';
  128.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  129.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  130.         if($valRetour==1){
  131.             return $this->redirect($this->generateUrl('app_logout'));
  132.         }elseif($valRetour==2){
  133.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  134.         }
  135.         /*
  136.          * Informations de session
  137.          */
  138.         $em $this->getDoctrine()->getManager();
  139.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  140.         /*
  141.          * Création du formulaire par rapport a l'entité Produit
  142.          */
  143.          if($id == 0){
  144.             $unProduit = new Produit();
  145.             $unProduit->setCodeProduit("PR".rand());
  146.         }else{
  147.             $unProduit $produitRepository->find($id);
  148.         }
  149.         //var_dump($id, $siSimplifie);exit;
  150.         $form $this->createForm(ProduitType::class, $unProduit, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'siSimplifie'=>$siSimplifie]);
  151.         /*
  152.          * Declaration des principales methodes Symfony2 pour traiter les informations
  153.          */
  154.         $objetUtilisateur $utilisateurRepository->find($sessionData['id']);
  155.         $this->request $request;
  156.         $this->session $this->get('session');
  157.         $this->flashMessage $this->get('session')->getFlashBag();
  158.         
  159.         //Recuperation de la liste des Produits que Symfony 2 accepte
  160.         $tableauProduitSymfony = array();
  161.         
  162.         /*
  163.          * Donnée à afficher sur le twig
  164.          * 
  165.          */
  166.         $this->data['formuView'] = $form->createView();
  167.         $this->data['Produit'] = $unProduit;
  168.         $this->data['locale'] = $locale;
  169.         $this->data['actionRepository'] = $actionRepository;
  170.         
  171.         $originalImages = new ArrayCollection();
  172.         if ($this->request->isMethod('POST')) {
  173.               
  174.             $form->handleRequest($this->request);
  175.             // Create an ArrayCollection of the current image
  176.             
  177.             if ($unProduit->getImagepros() != null) {
  178.             foreach ($unProduit->getImagepros() as $image) {
  179.                 $originalImages->add($image);
  180.             } 
  181.             
  182.             } 
  183.             $typeOperation $request->get('typeoperation');
  184.                     
  185.            
  186.             
  187.             /*
  188.              * Vérifier si les élément du formulaire sont valides
  189.              * 
  190.              */
  191.            
  192.             if ($form->isSubmitted() ) {
  193.                 /*
  194.                  * On cherche si une Produit existe deja avec le mm nom et  a un code
  195.                  */
  196.                 //try {
  197.                     $criteria = array('codeProduit' => $unProduit->getCodeProduit());
  198.                     $ancienProduit $produitRepository->findOneBy($criteria);
  199.                     //$criteriaCode = array('codeProduit' => $unProduit->getCodeProduit());
  200.                     $ancienProduitCode $produitRepository->findOneBy($criteria);
  201.                     //var_dump($ancienProduitCode);exit;
  202.                     if ($ancienProduitCode != null && $id == ) {
  203.                         /*
  204.                          * Un Produit existe mais est supprimé, on le reactive alors
  205.                          */
  206.                         if ($ancienProduitCode->getEtatProduit() == TypeEtat::SUPPRIME) {
  207.                             // remove the relationship between the tag and the Task
  208.                             foreach ($originalImages as $image) {
  209.                                 $image->setProduit($unProduit);
  210.                             }                            
  211.                             $unProduit->setEtatProduit(TypeEtat::ACTIF);
  212.                             $unProduit->setNomProduit($form->getData()->getNomProduit());
  213.                             //Calcul du prix de vente de affecté
  214.                             $fraiAffecte = ($form->getData()->getMontantHtAchat()*20)/100;
  215.                             $margeSalaire = (($form->getData()->getMontantHtAchat()+$fraiAffecte)*10)/100;
  216.                             $unProduit->setFraisAffecteProduit($fraiAffecte);
  217.                             $unProduit->setMargeSalarialeProduit($margeSalaire);
  218.                             //calcul de la marge sur salaire
  219.                             $unProduit->setNomProduit($form->getData()->getNomProduit());
  220.                             $em->persist($unProduit);
  221.                             $em->flush();
  222.                             $this->get('session')->getFlashBag()->add('produit.ajout.success''Ajout effectue avec succès');
  223.                             //return $this->redirect($this->generateUrl('admin_produits'));
  224.                             return $this->redirect($this->generateUrl('admin_prixrigueur_ajout',array('idProd'=>$unProduit->getId())));
  225.                         } else {
  226.                             $this->get('session')->getFlashBag()->add('produit.ajout.already.exist''Le code  Produit ' $ancienProduitCode->getCodeProduit() . ' existe déjà');
  227.                         }
  228.                     } else {
  229.                        // var_dump(1);exit;
  230.                         /*
  231.                          * Vérification du libellé du critère
  232.                          */
  233.                         if ($ancienProduit != null && $id == 0) {
  234.                             /*
  235.                              * Un Produit existe mais est supprimé, on le reactive alors
  236.                              */
  237.                             $this->get('session')->getFlashBag()->add('produit.ajout.already.exist''Le Produit ' $ancienProduit->getCodeProduit() . ' existe déjà');
  238.                         } else {
  239.                             foreach ($originalImages as $image) {
  240.                                 $image->setProduit($unProduit);
  241.                             }
  242.                             $unProduit->setDateModification(new \DateTime());
  243.                             $unProduit->setDatePublication(new \DateTime());
  244.                             $typeQualite $request->get('type_qualite');
  245.                             $typeCulture $request->get('type_culture');
  246.                             //Calcul du prix de vente de affecté
  247.                             $fraiAffecte 0;
  248.                             $margeSalaire 0;     
  249.                             $unProduit->setFraisAffecteProduit($fraiAffecte);
  250.                             $unProduit->setMargeSalarialeProduit($margeSalaire);
  251.                             $unProduit->setTypeQualite($typeQualite);
  252.                             //$unProduit->setTypeCulture($typeCulture);
  253.                             $unProduit->setCodeGenere($unProduit->getCodeProduit());
  254.                             $unProduit->setDateCommer(new \DateTime());
  255.                             
  256.                             if($siSimplifie != ){
  257.                                 $unProduit->setDescriptionProduit($unProduit->getNomProduit());
  258.                             }
  259.                             $unProduit->setIdAuteur(1);    
  260.                             //$unProduit->setSeuilProduit(2);                                                 
  261.                             $unProduit->setEtatProduit(1);
  262.                             if($siAgricole == 1){
  263.                                 $objetCategorieProduit $categorieProduitRepository->find(1);
  264.                                 $unProduit->setCategorie($objetCategorieProduit);
  265.                                 $unProduit->setSiAgricole($siAgricole);  
  266.                                 $unProduit->setSiAgricoleParent($siAgricole);  
  267.                             }
  268.                             $unProduit->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository)) ;
  269.                             $em->persist($unProduit);
  270.                             $em->flush();
  271.                             $siSimplifie $request->get('siSimplifie');
  272.                             $siAgricole $request->get('siAgricole');
  273.                             
  274.                             
  275.                             if($siSimplifie == 1){
  276.                                 $prixVente $request->get('prix-vente');
  277.                                 if($prixVente != "")
  278.                                     $objetPrixRigueur $this->savePrix($em,  $prixVente$unProduit2$objetUtilisateur$prixRigueurRepository,  $cibleRepository$caracteristiquePrixRepository) ;
  279.                                 $prixAchat $request->get('prix-achat');
  280.                                 if($prixAchat != "")
  281.                                     $objetPrixRigueur $this->savePrix($em,  $prixAchat$unProduit2$objetUtilisateur$prixRigueurRepository,  $cibleRepository$caracteristiquePrixRepository) ;
  282.                                 
  283.                             }
  284.                             $tabIdCaisse $request->get('tabCaisse');
  285.                             if($tabIdCaisse != ""){
  286.                                 $tabDesDonneeCaisse explode('|'$tabIdCaisse);  
  287.                                 //var_dump($tabIdCaisse );exit;
  288.                                 if(count($tabDesDonneeCaisse) > 1)
  289.                                     $unProduit->setSiSemence(1);
  290.                                         
  291.                                 foreach ($tabDesDonneeCaisse as $infoCaisseId) {
  292.                                     if($infoCaisseId != ""){
  293.                                         $objetCaisse $caisseRepository->find($infoCaisseId);
  294.                                         $uneCaisseProduit = new CaisseProduit();
  295.                                         $uneCaisseProduit->setCaisse($objetCaisse);
  296.                                         $uneCaisseProduit->setProduit($unProduit);
  297.                                         $uneCaisseProduit->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  298.                                         $em->persist($uneCaisseProduit);
  299.                                         //Mettre le prix
  300.                                         $objetPrix $prixRigueurRepository->findOneBy(["produit"=>$unProduit"typePrixRigueur"=>2]);
  301.                                         $uneCaissePrix = new CaissePrix();
  302.                                         $uneCaissePrix->setCaisse($objetCaisse);
  303.                                         $uneCaissePrix->setPrixrigueur($objetPrix);
  304.                                         $uneCaissePrix->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  305.                                         $em->persist($uneCaissePrix);
  306.                                     }
  307.                                         
  308.                                 }
  309.                             }
  310.                             
  311.                             $tabIdFournisseur $request->get('tabFournisseur');
  312.                             if($tabIdFournisseur != ""){
  313.                                 //var_dump($tabIdCaisse );exit;
  314.                                 $tabDesDonneeFournisseur explode('|'$tabIdFournisseur);           
  315.                                 foreach ($tabDesDonneeFournisseur as $infoFournisseurId) {
  316.                                     if($infoFournisseurId != ""){
  317.                                         $objetFournisseur $fournisseurRepository->find($infoFournisseurId);
  318.                                         $uneCaisseFournisseur = new FournisseurProduit();
  319.                                         $uneCaisseFournisseur->setFournisseur($objetFournisseur);
  320.                                         $uneCaisseFournisseur->setProduit($unProduit);
  321.                                         //$uneCaisseFournisseur->setAbonne($this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
  322.                                         $em->persist($uneCaisseFournisseur);
  323.                                         
  324.                                     }
  325.                                         
  326.                                 }
  327.                             }
  328.                             $tabTypeOperation explode(','$typeOperation[0]);
  329.                             
  330.                             foreach ($tabTypeOperation as $idT) { 
  331.                                 if($idT != ""){ 
  332.                                     $objetTypeOperation =  $typeOperationRepository->find($idT);
  333.                                     $objetProduitTypeOperation =  $produitTypeOperationRepository->findOneBy(["produit"=>$unProduit"typeoperation"=>$objetTypeOperation]);
  334.                                     if($objetProduitTypeOperation == null)
  335.                                         $objetProduitTypeOperation = new  ProduitTypeOperation(); 
  336.                                     
  337.                                     $objetProduitTypeOperation->setProduit($unProduit);
  338.                                     $objetProduitTypeOperation->setTypeoperation($objetTypeOperation);
  339.                                     $em->persist($objetProduitTypeOperation);
  340.                                     //$em->flush();
  341.                                 }
  342.                             }
  343.                             //Enregistrement des données 
  344.                             $em->flush();
  345.                             
  346.                             $this->setAbonnePartenaire($em$unProduit->getAbonne(), $unProduit->getAbonne()->getPartenaire(), $unProduit$typeObjet=1);
  347.                             if($unProduit->getProduit() != null){
  348.                                 $this->dupliquerImageProduit($em$unProduit->getProduit()->getId(), $unProduit,$this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  349.                             }
  350.                             
  351.                             
  352.                             
  353.                             $this->flashMessage->add('produit.ajout.success'$this->translate->trans("site.ajouter.succes"));
  354.                             if($siAgricole ==1)
  355.                                 return $this->redirect($this->generateUrl('admin_produits', ['siAgricole'=>$siAgricole]));
  356.                             else
  357.                                 return $this->redirect($this->generateUrl('admin_produits'));
  358.                         }
  359.                     }
  360.                 /*} catch (\Exception $e) {
  361.                   return var_dump($e->getMessage());
  362.                 exit;
  363.                 }*/
  364.             } else {
  365.                 $this->flashMessage->add('produit.ajout.error'$this->translate->trans("site.formulaire.invalide"));
  366.             }
  367.         }
  368.         $listeProduit$produitRepository->getAllProduitTransformation();
  369.         $listeCaisse $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
  370.         $listeFournisseur $fournisseurRepository->getAllFournisseur(0,$sessionData['abonneId']);
  371.         $listeTypeOperation $typeOperationRepository->findBy(['abonne' => $this->getAbonne($em$sessionData['abonneId'], $abonneRepository)]);
  372.           //$siAgricole =0;
  373.         $this->data['siAgricole'] = $siAgricole;
  374.         $this->data['siAgricole'] = $siAgricole;
  375.         $this->data['listeTypeOperation'] = $listeTypeOperation;
  376.         $this->data['siSimplifie'] = $siSimplifie;
  377.         $this->data['listeCaisse'] = $listeCaisse;
  378.         $this->data['listeFournisseur'] = $listeFournisseur;
  379.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/ajouterProduit.html.twig'$this->data$this->response);
  380.     }
  381.     
  382.     /**
  383.      * Methode s'occupant de l'ajout du produit.
  384.      *
  385.      * @author armand.tevi@gmail.com
  386.      * @copyright ADMIN 2015
  387.      *
  388.      * @version 1
  389.      *
  390.      * @return twig d'ajout d'un abonne ajouterProduit.html.twig
  391.      */
  392.     public function ajouterVarieteAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  393.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  394.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  395.         /*
  396.          * Nom de l'action en cours
  397.          */
  398.         $nomAction __FUNCTION__;
  399.         /*
  400.          * Description de l'action de l'action en cours
  401.          */
  402.         $em $this->getDoctrine()->getManager();
  403.         $descAction "Ajouter  une varieté ";
  404.         $locale ='fr';
  405.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  406.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  407.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  408.         if($valRetour==1){
  409.             return $this->redirect($this->generateUrl('app_logout'));
  410.         }elseif($valRetour==2){
  411.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  412.         } 
  413.         $prod $sessionData["produit_id"];
  414.         $objetCultureMere $produitRepository->find($prod);
  415.         /*
  416.          * Création du formulaire par rapport a l'entité Produit
  417.          */
  418.         $unProduit = new Produit();
  419.         
  420.         $form $this->createForm(VarieteType::class, $unProduit);
  421.    /*
  422.          * Declaration des principales methodes Symfony2 pour traiter les informations
  423.          */
  424.         
  425.         $this->request $request;
  426.         $this->session $this->get('session');
  427.         $this->flashMessage $this->get('session')->getFlashBag();
  428.         
  429.         //Recuperation de la liste des Produits que Symfony 2 accepte
  430.         $tableauProduitSymfony = array();
  431.         
  432.         /*
  433.          * Donnée à afficher sur le twig
  434.          * 
  435.          */
  436.         $this->data['formuView'] = $form->createView();
  437.         $this->data['Produit'] = $unProduit;
  438.         $this->data['locale'] = $locale;
  439.         $this->data['actionRepository'] = $actionRepository;
  440.         
  441.         $originalImages = new ArrayCollection();
  442.         if ($this->request->isMethod('POST')) {
  443.               
  444.             $form->handleRequest($this->request);
  445.             // Create an ArrayCollection of the current image
  446.             
  447.             if ($unProduit->getImagepros() != null) {
  448.             foreach ($unProduit->getImagepros() as $image) {
  449.                 $originalImages->add($image);
  450.             } 
  451.             
  452.             } 
  453.                     
  454.             /*
  455.              * Vérifier si les élément du formulaire sont valides
  456.              * 
  457.              */
  458.             //var_dump($form);exit;
  459.             if ($form->isSubmitted() ) {
  460.                 /*
  461.                  * On cherche si une Produit existe deja avec le mm nom et  a un code
  462.                  */
  463.                 try {
  464.                     $criteria = array('codeProduit' => $unProduit->getCodeProduit());
  465.                     $ancienProduit $produitRepository->findOneBy($criteria);
  466.                     //$criteriaCode = array('codeProduit' => $unProduit->getCodeProduit());
  467.                     $ancienProduitCode $produitRepository->findOneBy($criteria);
  468.                     if ($ancienProduitCode != null) {
  469.                         /*
  470.                          * Un Produit existe mais est supprimé, on le reactive alors
  471.                          */
  472.                         if ($ancienProduitCode->getEtatProduit() == TypeEtat::SUPPRIME) {
  473.                             // remove the relationship between the tag and the Task
  474.                             foreach ($originalImages as $image) {
  475.                                 $image->setProduit($unProduit);
  476.                             }                            
  477.                             $unProduit->setEtatProduit(TypeEtat::ACTIF);
  478.                             $unProduit->setNomProduit($form->getData()->getNomProduit());
  479.                             //Calcul du prix de vente de affecté
  480.                             
  481.                             
  482.                             //calcul de la marge sur salaire
  483.                             $unProduit->setNomProduit($form->getData()->getNomProduit());
  484.                             if ($unProduit->getImagepros() != null) {
  485.                                 $unProduit->addImagepro($unProduit->getImagepros()[0]);
  486.                             }
  487.                             $em->persist($unProduit);
  488.                             $em->flush();
  489.                             $this->get('session')->getFlashBag()->add('produit.ajout.success''Ajout effectue avec succès');
  490.                             return $this->redirect($this->generateUrl('admin_varietes'));
  491.                         } else {
  492.                             $this->get('session')->getFlashBag()->add('produit.ajout.already.exist''Le code  Produit ' $ancienProduitCode->getCodeProduit() . ' existe déjà');
  493.                         }
  494.                     } else {
  495.                         
  496.                         /*
  497.                          * Vérification du libellé du critère
  498.                          */
  499.                         if ($ancienProduit != null) {
  500.                             /*
  501.                              * Un Produit existe mais est supprimé, on le reactive alors
  502.                              */
  503.                             $this->get('session')->getFlashBag()->add('produit.ajout.already.exist''Le Produit ' $ancienProduit->getCodeProduit() . ' existe déjà');
  504.                         } else {
  505.                             foreach ($originalImages as $image) {
  506.                                 $image->setProduit($unProduit);
  507.                             }                            
  508.                             $unProduit->setDateModification(new \DateTime());
  509.                             $unProduit->setDatePublication(new \DateTime());
  510.                             
  511.                             if ($unProduit->getImagepros() != null) {
  512.                                 $unProduit->addImagepro($unProduit->getImagepros()[0]);
  513.                             }
  514.                             //Calcul du prix de vente de affecté
  515.                            
  516.                             $unProduit->setDateCommer(new \DateTime());
  517.                             $unProduit->setIdAuteur(1);                                                   
  518.                             $unProduit->setEtatProduit(1);
  519.                             $unProduit->setProduit($objetCultureMere);
  520.                             $unProduit->setCategorie($objetCultureMere->getCategorie());
  521.                             
  522.                             
  523.                             
  524.                             $em->persist($unProduit);
  525.                             $em->flush();
  526.                             $this->flashMessage->add('produit.ajout.success'$this->translate->trans("site.ajouter.succes"));
  527.                             return $this->redirect($this->generateUrl('admin_varietes'));
  528.                         }
  529.                     }
  530.                 } catch (\Exception $e) {
  531.                     var_dump($e->getMessage());
  532.                     exit;
  533.                 }
  534.             } else {
  535.                 $this->flashMessage->add('produit.ajout.error'$this->translate->trans("site.formulaire.invalide"));
  536.             }
  537.         }
  538.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/ajouterVariete.html.twig'$this->data$this->response);
  539.     }
  540.     /**
  541.      * Methode s'occupant de la modification du produit.
  542.      *
  543.      * @author armand.tevi@gmail.com
  544.      * @copyright ADMIN 2015
  545.      *
  546.      * @version 1
  547.      *
  548.      * @return twig d'ajout d'un abonne modifierProduit.html.twig
  549.      */
  550.     public function modifierProduitAction(Request $request$siSimplifie,$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  551.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  552.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryCaisseRepository $caisseRepository
  553.     FournisseurRepository $fournisseurRepository) {
  554.         /*
  555.     * Nom de l'action en cours
  556.     */
  557.     $nomAction __FUNCTION__;
  558.     /*
  559.     * Description de l'action de l'action en cours
  560.     */
  561.     $descAction "Modifier  un produit ";
  562.     $locale ='fr';
  563.     $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  564.     $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  565.     if($valRetour==1){
  566.         return $this->redirect($this->generateUrl('app_logout'));
  567.     }elseif($valRetour==2){
  568.         return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  569.     }
  570.     $em $this->getDoctrine()->getManager();
  571.     $this->flashMessage $this->get('session')->getFlashBag();
  572.     $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  573.     /*
  574.     * On vérifie si l'utilisateur est connecté
  575.     */
  576.     /*
  577.     * Création du formulaire par rapport a l'entité Produit
  578.     */
  579.     $unProduit $produitRepository->find($id);
  580.     
  581.     // Vérification de véracité des informations envoyées
  582.     $form $this->createForm(ProduitType::class, $unProduit, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'siSimplifie'=>$siSimplifie]);
  583.        
  584.     if ($unProduit == null) {
  585.         return $this->redirect($this->generateUrl('admin_produits'));
  586.     }
  587.     // Vérifier si la méthode d'envoie
  588.     if ($request->isMethod('POST')) {
  589.         $form->handleRequest($request);
  590.         /*
  591.         * Vérifier si les éléments du formulaire sont valides et que le formulaire a ete soumis
  592.         */            
  593.         if ($form->isSubmitted()) {
  594.         
  595.             try {
  596.                 
  597.                 /*
  598.                 * On cherche si une Produit existe deja avec le même nom
  599.                 */
  600.                 $criteria = array('codeProduit' => $unProduit->getCodeProduit());
  601.                 $ancienProduit $produitRepository->findOneBy($criteria);
  602.                 /*
  603.                 * On cherche si une Produit existe deja avec le même code
  604.                 */
  605.                 // $criteriaCode = array('codeProduit' => $unProduit->getCodeProduit());
  606.                 $ancienProduitCode $produitRepository->findBy($criteria);
  607.                 $unProduit->setIdAuteur(1);
  608.                 //var_dump(count($ancienProduitCode) );exit;
  609.                 /* if (count($ancienProduitCode) > 1) {
  610.                     $this->flashMessage->add('produit.modifier.already.exist', 'Le code  Produit ' . $ancienProduitCode[0]->getCodeProduit() . ' existe déjà');
  611.                 } else {*/
  612.                     if ($ancienProduit != null) {
  613.                         /*
  614.                         * Traitement du cas d'un Produit qui existe mais est 
  615.                         * supprimé, on le reactive alors pour eviter 
  616.                         * les doublons dans la base de données
  617.                         */
  618.                         if ($ancienProduit->getEtatProduit() == TypeEtat::SUPPRIME) {
  619.                             /*
  620.                             * Activation du critère supprimé
  621.                             */
  622.                             $ancienProduit->getEtatProduit(TypeEtat::ACTIF);
  623.                         } else {
  624.                             /*
  625.                             * Persistence de l'objet
  626.                             */
  627.                             /* $margeSalaire = ($form->getData()->getMontantHtAchat()*10)/100;
  628.                             $fraiAffecte = ($form->getData()->getMontantHtAchat()*20)/100;
  629.                             $unProduit->setFraisAffecteProduit($fraiAffecte);
  630.                             $unProduit->setMargeSalarialeProduit($margeSalaire);*/
  631.                             $em->persist($unProduit);
  632.                         }
  633.                     } else {
  634.                         $em->persist($unProduit);
  635.                     }
  636.                     /*
  637.                         * Mise a jour des informations dans la base de donnée
  638.                         */
  639.                     $em->flush();
  640.                     $this->flashMessage->add('produit.modifier.success'$this->translate->trans("site.ajouter.succes"));
  641.                     return $this->redirect($this->generateUrl('admin_produits'));
  642.                 
  643.             } catch (\Exception $e) {
  644.                 var_dump($e->getMessage());
  645.                 exit;
  646.             }
  647.         } else {
  648.             $this->flashMessage->add('produit.ajout.error'$this->translate->trans("site.formulaire.invalide"));
  649.         }
  650.     }
  651.     /*
  652.     * Preparation des informations à traiter sur les twig 
  653.     */
  654.     $listeCaisse $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
  655.     $listeFournisseur $fournisseurRepository->getAllFournisseur(0,$sessionData['abonneId']);
  656.     $siAgricole =0;
  657.     $this->data['siAgricole'] = $siAgricole;
  658.     $this->data['listeCaisse'] = $listeCaisse;
  659.     $this->data['listeFournisseur'] = $listeFournisseur;
  660.     $this->data['formuView'] = $form->createView();
  661.     $this->data['Produit'] = $unProduit;
  662.     $this->data['siSimplifie'] = $siSimplifie;
  663.     $this->data['locale'] = $locale;
  664.     $this->data['actionRepository'] = $actionRepository;
  665.     $this->data['id'] = $id;
  666.   return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/modifierProduit.html.twig'$this->data$this->response);
  667. }
  668.     
  669.     
  670.     /**
  671.      * Methode s'occupant de la modification du produit.
  672.      *
  673.      * @author armand.tevi@gmail.com
  674.      * @copyright ADMIN 2015
  675.      *
  676.      * @version 1
  677.      *
  678.      * @return twig d'ajout d'un abonne modifierProduit.html.twig
  679.      */
  680.     public function modifierVarieteAction(Request $request$id,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  681.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  682.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  683.               /*
  684.          * Nom de l'action en cours
  685.          */
  686.         $nomAction __FUNCTION__;
  687.         /*
  688.          * Description de l'action de l'action en cours
  689.          */
  690.         $descAction "Modifier  une varieté ";
  691.         $locale ='fr';
  692.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  693.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  694.         if($valRetour==1){
  695.             return $this->redirect($this->generateUrl('app_logout'));
  696.         }elseif($valRetour==2){
  697.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  698.         }
  699.         $em $this->getDoctrine()->getManager();
  700.         $this->flashMessage $this->get('session')->getFlashBag();
  701.         /*
  702.          * On vérifie si l'utilisateur est connecté
  703.          */
  704.         /*
  705.          * Création du formulaire par rapport a l'entité Produit
  706.          */
  707.         $unProduit $produitRepository->find($id);
  708.         //$ancienProduitAModif = $unProduit->getNomProduit();
  709.         $form $this->createForm(VarieteType::class, $unProduit);
  710.         // Vérification de véracité des informations envoyées
  711.         
  712.         if ($unProduit == null) {
  713.             return $this->redirect($this->generateUrl('admin_varietes'));
  714.         }
  715.         // Vérifier si la méthode d'envoie
  716.         if ($request->isMethod('POST')) {
  717.             $form->handleRequest($request);
  718.             /*
  719.              * Vérifier si les éléments du formulaire sont valides et que le formulaire a ete soumis
  720.              */            
  721.             if ($form->isSubmitted()) {
  722.                 
  723.                 try {
  724.                     
  725.                     /*
  726.                      * On cherche si une Produit existe deja avec le même nom
  727.                      */
  728.                     $criteria = array('codeProduit' => $unProduit->getCodeProduit());
  729.                     $ancienProduit $produitRepository->findOneBy($criteria);
  730.                     /*
  731.                      * On cherche si une Produit existe deja avec le même code
  732.                      */
  733.                    // $criteriaCode = array('codeProduit' => $unProduit->getCodeProduit());
  734.                     $ancienProduitCode $produitRepository->getRepository($this->stockBundle 'Produit')->findBy($criteria);
  735.                     $unProduit->setIdAuteur(1);
  736.                     if (count($ancienProduitCode) > 1) {
  737.                         $this->flashMessage->add('produit.modifier.already.exist''Le code  Produit ' $ancienProduitCode[0]->getCodeProduit() . ' existe déjà');
  738.                     } else {
  739.                         if ($ancienProduit != null) {
  740.                             /*
  741.                              * Traitement du cas d'un Produit qui existe mais est 
  742.                              * supprimé, on le reactive alors pour eviter 
  743.                              * les doublons dans la base de données
  744.                              */
  745.                             if ($ancienProduit->getEtatProduit() == TypeEtat::SUPPRIME) {
  746.                                 /*
  747.                                  * Activation du critère supprimé
  748.                                  */
  749.                                 $ancienProduit->getEtatProduit(TypeEtat::ACTIF);
  750.                             } else {
  751.                                 /*
  752.                                  * Persistence de l'objet
  753.                                  */
  754.                                 $margeSalaire = ($form->getData()->getMontantHtAchat()*10)/100;
  755.                                 $fraiAffecte = ($form->getData()->getMontantHtAchat()*20)/100;
  756.                                 $unProduit->setFraisAffecteProduit($fraiAffecte);
  757.                                 $unProduit->setMargeSalarialeProduit($margeSalaire);
  758.                                 $em->persist($unProduit);
  759.                             }
  760.                         } else {
  761.                             $em->persist($unProduit);
  762.                         }
  763.                         /*
  764.                              * Mise a jour des informations dans la base de donnée
  765.                              */
  766.                         $em->flush();
  767.                         $this->flashMessage->add('produit.modifier.success'$this->translate->trans("site.ajouter.succes"));
  768.                         return $this->redirect($this->generateUrl('admin_varietes'));
  769.                     }
  770.                 } catch (\Exception $e) {
  771.                     var_dump($e->getMessage());
  772.                     exit;
  773.                 }
  774.             } else {
  775.                 $this->flashMessage->add('produit.ajout.error'$this->translate->trans("site.formulaire.invalide"));
  776.             }
  777.         }
  778.         /*
  779.          * Preparation des informations à traiter sur les twig 
  780.          */
  781.         $this->data['formuView'] = $form->createView();
  782.         $this->data['Produit'] = $unProduit;
  783.         $this->data['locale'] = $locale;
  784.         $this->data['id'] = $id;
  785.         $this->data['actionRepository'] = $actionRepository;
  786.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/modifierVariete.html.twig'$this->data$this->response);
  787.     }
  788.     /**
  789.      * Methode s'occupant de lister les Produits.
  790.      *
  791.      * @author armand.tevi@gmail.com
  792.      * @copyright ADMIN 2015
  793.      *
  794.      * @version 1
  795.      *
  796.      * @return twig d'ajout d'un abonne listeProduit.html.twig
  797.      */
  798.     public function listerProduitAction(Request $request$siAgricole,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  799.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  800.     ProduitRepository $produitRepository,CategorieProduitRepository $categorieProduitRepository,AbonneRepository $abonneRepository) {
  801.         /*
  802.          * Nom de l'action en cours
  803.          */
  804.         $nomAction __FUNCTION__;
  805.         /*
  806.          * Description de l'action de l'action en cours
  807.          */
  808.         $descAction "Liste des produits ";
  809.         $locale ='fr';
  810.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  811.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  812.         if($valRetour==1){
  813.             return $this->redirect($this->generateUrl('app_logout'));
  814.         }elseif($valRetour==2){
  815.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  816.         }
  817.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  818.         $listeProduit = array();
  819.         try {
  820.             /*
  821.              * Récupération des la liste des critères
  822.              */
  823.             $em $this->getDoctrine()->getManager();
  824.             $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  825.            
  826.             if($siAgricole == 0){
  827.                 $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  828.                 // $listeCategorie = $em->getRepository($this->stockBundle . 'CategorieProduit')->findBy(array("etat"=>1));
  829.                 $listeCategorie $categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
  830.                 foreach($listeCategorie as $uneCategorie){
  831.                     $listeProduit[$uneCategorie->getId()]  = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId'],0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);     //$uneCategorie->getId()          
  832.                 }
  833.                 //var_dump( $listeProduit);exit;
  834.             }else{
  835.                 $listeProduit  $produitRepository->getAllProduitCategorieAjax(0,$sessionData['abonneId'], 1,1,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);     //$uneCategorie->getId()      
  836.             }
  837.             
  838.            //$listeProduit = $em->getRepository($this->stockBundle . 'Produit')->getAllProduit();
  839.         } catch (\Exception $e) {
  840.             var_dump($e->getMessage());
  841.             exit;
  842.         }
  843.         /*
  844.          * Préparation des informations que nous allons traiter  sur le twig
  845.          */
  846.         $this->data['listeProduit'] = $listeProduit;
  847.         
  848.         
  849.         $this->data['locale'] = $locale;
  850.         $this->data['siAgricole'] = $siAgricole;
  851.         $this->data['actionRepository'] = $actionRepository;
  852.         $this->data['type'] = 0;
  853.         if($siAgricole == 1){
  854.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/listeProduitAgricole.html.twig'$this->data$this->response);
  855.         }else{
  856.             $this->data['listeCategorie'] = $listeCategorie;
  857.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/listeProduit.html.twig'$this->data$this->response);
  858.         }
  859.         
  860.     }
  861.  /**
  862.      * Methode s'occupant de lister les Produits.
  863.      *
  864.      * @author armand.tevi@gmail.com
  865.      * @copyright ADMIN 2015
  866.      *
  867.      * @version 1
  868.      *
  869.      * @return twig d'ajout d'un abonne listeProduit.html.twig
  870.      */
  871.     public function listerVarieteAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  872.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  873.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  874.         /*
  875.          * Nom de l'action en cours
  876.          */
  877.         $nomAction __FUNCTION__;
  878.         /*
  879.          * Description de l'action de l'action en cours
  880.          */
  881.         $descAction "Liste des variétés ";
  882.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  883.         $locale ='fr';
  884.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  885.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  886.         if($valRetour==1){
  887.             return $this->redirect($this->generateUrl('app_logout'));
  888.         }elseif($valRetour==2){
  889.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  890.         }
  891.         $prod $sessionData["produit_id"];
  892.         
  893.         try {
  894.             /*
  895.              * Récupération des la liste des critères
  896.              */
  897.             $em $this->getDoctrine()->getManager();
  898.             $listeProduit $produitRepository->getAllVariete($prod);
  899.         } catch (\Exception $e) {
  900.             var_dump($e->getMessage());
  901.             exit;
  902.         }
  903.         /*
  904.          * Préparation des informations que nous allons traiter  sur le twig
  905.          */
  906.         $this->data['listeProduit'] = $listeProduit;
  907.         $this->data['locale'] = $locale;
  908.         $this->data['actionRepository'] = $actionRepository;
  909.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/listevariete.html.twig'$this->data$this->response);
  910.     }    
  911.     
  912.  /**
  913.      * Methode s'occupant de lister les Produits.
  914.      *
  915.      * @author armand.tevi@gmail.com
  916.      * @copyright ADMIN 2015
  917.      *
  918.      * @version 1
  919.      *
  920.      * @return twig d'ajout d'un abonne listeProduit.html.twig
  921.      */
  922.     public function choixProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  923.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  924.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  925.         /*
  926.          * Nom de l'action en cours
  927.          */
  928.         $nomAction __FUNCTION__;
  929.         /*
  930.          * Description de l'action de l'action en cours
  931.          */
  932.         $descAction "Choix des produits ";
  933.         $locale ='fr';
  934.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDes,
  935.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  936.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  937.         if($valRetour==1){
  938.             return $this->redirect($this->generateUrl('app_logout'));
  939.         }elseif($valRetour==2){
  940.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  941.         }
  942.         try {
  943.             /*
  944.              * Récupération des la liste des critères
  945.              */
  946.             $em $this->getDoctrine()->getManager();
  947.             $listeProduit $produitRepository->getAllProduit();
  948.         } catch (\Exception $e) {
  949.             var_dump($e->getMessage());
  950.             exit;
  951.         }
  952.         /*
  953.          * Préparation des informations que nous allons traiter  sur le twig
  954.          */
  955.         $this->data['listeProduit'] = $listeProduit;
  956.         $this->data['locale'] = $locale;
  957.         $this->data['actionRepository'] = $actionRepository;
  958.         
  959.         
  960.         return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/choixProduit.html.twig'$this->data$this->response);
  961.     }    
  962.     
  963.     /**
  964.      * Methode s'occupant de la gestion des états du critère
  965.      * Activation, suppression, désactivation de pays.
  966.      *
  967.      * @author armand.tevi@gmail.com
  968.      * @copyright ADMIN 2015
  969.      *
  970.      * @version 1
  971.      *
  972.      * @return Response
  973.      */
  974.     public function changerEtatProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  975.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  976.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  977.           $rep = array('etat' => FALSE'msg' => 'Erreur survenue lors du traitement''logout' => FALSE);
  978.         /*
  979.          * Nom de l'action en cours
  980.          */
  981.         $nomAction __FUNCTION__;
  982.         /*
  983.          * Description de l'action de l'action en cours
  984.          */
  985.         $descAction "Changer l'etat de la ligne des produits";
  986.         /*
  987.          * Préparation du message de log 
  988.          */
  989.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  990.         /*
  991.          * Service de gestion des droits
  992.          */
  993.         
  994.         /*
  995.          * Informations de session
  996.          */
  997.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  998.         /*
  999.          * Locale en cours
  1000.          */
  1001.         $locale $loginManager->getLocale();
  1002.         $this->data['locale'] = $locale;
  1003.         $this->data['actionRepository'] = $actionRepository;
  1004.         /*
  1005.          * On vérifie si l'utilisateur est connecté
  1006.          */
  1007.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1008.         if ($status['isConnecte']) {
  1009.             /*
  1010.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  1011.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  1012.              */
  1013.             if ($status['isInnactif']) {
  1014.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  1015.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  1016.                 return new Response(json_encode($rep));
  1017.             }
  1018.             /*
  1019.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  1020.              */
  1021.             if (!$status['isUser']) {
  1022.                 return new Response(json_encode($rep));
  1023.             }
  1024.         } else {
  1025.             $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  1026.             return new Response(json_encode($rep));
  1027.         }
  1028.         $em $this->getDoctrine()->getManager();
  1029.         /*
  1030.          * Gestion des droits
  1031.          */
  1032.         
  1033.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_PRODModule::MOD_GEST_PROD_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository,
  1034.         $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  1035.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  1036.             $rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
  1037.             return new Response(json_encode($rep));
  1038.         }
  1039.         
  1040.         /*
  1041.          * Traitement de la requete qui vient de la vue
  1042.          * on vérifie si la requete est Ajax et si la methode est post
  1043.          */
  1044.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  1045.             /*
  1046.              * on recupere l'état actuel qu'on veut donner au(x) Produit(s)
  1047.              * cette variable est envoyée depuis la vue a travers la requete post ajax
  1048.              */
  1049.             $tempEtat = (int) $request->get('etat');
  1050.             
  1051.             /*
  1052.              * on recupere les ids des Produits qui ont été choisis sur la vue pour subir une modification d'états
  1053.              * cette variable est envoyé depuis la vue a travers la requete post ajax
  1054.              */
  1055.             $tempIds $request->get('sId');
  1056.             /*
  1057.              * verification si l'etat envoyé est un état INACTIF , ACTIF ou SUPPRIME 
  1058.              * déclaration d'une variable pour prendre l'état comme constante de classe TypeEtat
  1059.              */
  1060.             $etat TypeEtat::INACTIF;
  1061.             if ($tempEtat == TypeEtat::INACTIF) {
  1062.                 $etat TypeEtat::INACTIF;
  1063.             } elseif ($tempEtat == TypeEtat::ACTIF) {
  1064.                 $etat TypeEtat::ACTIF;
  1065.             } elseif ($tempEtat == TypeEtat::SUPPRIME) {
  1066.                 $etat TypeEtat::SUPPRIME;
  1067.             } 
  1068.             //var_dump($etat);exit;
  1069.             /*
  1070.              * éclatement de la chaine d'ids séparé par des | en tableau
  1071.              * afin de parcourir le tabelau et faire le changement d'etat par compte
  1072.              */
  1073.             $tabIds explode('|'$tempIds);
  1074.             //var_dump($tempEtat );exit;
  1075.             
  1076.             /*
  1077.              * variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
  1078.              */
  1079.             $oneOk false;
  1080.             /*
  1081.              * Boucle de changement d'état à tout les comptes choisis
  1082.              */
  1083.             foreach ($tabIds as $idS) {
  1084.                 /*
  1085.                  * Recuperation du Produit dont l'id est l'id courant de la boucle
  1086.                  */
  1087.                 $unProduit $produitRepository->find((int) $idS);
  1088.                 if ($unProduit != null) {
  1089.                     if($tempEtat == -1){
  1090.                         $unProduit->setSiAffichage(1);
  1091.                     }else{
  1092.                         $unProduit->setEtatProduit($etat);
  1093.                     }
  1094.                     /*
  1095.                      * Mise à jour des informations dans la base de donnée
  1096.                      */
  1097.                     $em->flush();
  1098.                     $oneOk true;
  1099.                 }
  1100.             }
  1101.             if ($oneOk) {
  1102.                // $this->flashMessage->add('produit.gerer.success', $this->translate->trans("site.ajouter.succes"));
  1103.                 $rep['msg'] = '';
  1104.                 $rep['etat'] = true;
  1105.             }
  1106.             return new Response(json_encode($rep));
  1107.         }
  1108.         return new Response(json_encode($rep));
  1109.     }
  1110.     /**
  1111.      * Methode s'occupant de la gestion des états du critère
  1112.      * Activation, suppression, désactivation de pays.
  1113.      *
  1114.      * @author armand.tevi@gmail.com
  1115.      * @copyright ADMIN 2015
  1116.      *
  1117.      * @version 1
  1118.      *
  1119.      * @return Response
  1120.      */
  1121.     public function changerEtatSiCommerceProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1122.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1123.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  1124.           $rep = array('etat' => FALSE'msg' => 'Erreur survenue lors du traitement''logout' => FALSE);
  1125.         /*
  1126.          * Nom de l'action en cours
  1127.          */
  1128.         $nomAction __FUNCTION__;
  1129.         /*
  1130.          * Description de l'action de l'action en cours
  1131.          */
  1132.         $descAction "Définir comme produit ecommerce";
  1133.         /*
  1134.          * Préparation du message de log 
  1135.          */
  1136.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1137.         /*
  1138.          * Service de gestion des droits
  1139.          */
  1140.         
  1141.         /*
  1142.          * Informations de session
  1143.          */
  1144.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1145.         /*
  1146.          * Locale en cours
  1147.          */
  1148.         $locale $loginManager->getLocale();
  1149.         $this->data['locale'] = $locale;
  1150.         $this->data['actionRepository'] = $actionRepository;
  1151.         /*
  1152.          * On vérifie si l'utilisateur est connecté
  1153.          */
  1154.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1155.         if ($status['isConnecte']) {
  1156.             /*
  1157.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  1158.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  1159.              */
  1160.             if ($status['isInnactif']) {
  1161.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  1162.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  1163.                 return new Response(json_encode($rep));
  1164.             }
  1165.             /*
  1166.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  1167.              */
  1168.             if (!$status['isUser']) {
  1169.                 return new Response(json_encode($rep));
  1170.             }
  1171.         } else {
  1172.             $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  1173.             return new Response(json_encode($rep));
  1174.         }
  1175.         $em $this->getDoctrine()->getManager();
  1176.         /*
  1177.          * Gestion des droits
  1178.          */
  1179.         
  1180.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_PRODModule::MOD_GEST_PROD_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository,
  1181.         $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  1182.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  1183.             $rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
  1184.             return new Response(json_encode($rep));
  1185.         }
  1186.         
  1187.         /*
  1188.          * Traitement de la requete qui vient de la vue
  1189.          * on vérifie si la requete est Ajax et si la methode est post
  1190.          */
  1191.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  1192.             /*
  1193.              * on recupere l'état actuel qu'on veut donner au(x) Produit(s)
  1194.              * cette variable est envoyée depuis la vue a travers la requete post ajax
  1195.              */
  1196.             $produitId = (int) $request->get('produitId');
  1197.             /*
  1198.              * variable boolean initialisé a false .elle va être modifier à true si tout se passe bien
  1199.              */
  1200.             $oneOk false;
  1201.             $etat=1;
  1202.             $unProduit $produitRepository->find((int) $produitId);
  1203.             if($unProduit->getSiEcommerce() == 1)
  1204.                 $etat=0;
  1205.             if ($unProduit != null) {
  1206.                 $unProduit->setSiEcommerce($etat);
  1207.                 /*
  1208.                 * Mise à jour des informations dans la base de donnée
  1209.                 */
  1210.                 $em->flush();
  1211.                 $oneOk true;
  1212.             }
  1213.           
  1214.             if ($oneOk) {
  1215.                // $this->flashMessage->add('produit.gerer.success', $this->translate->trans("site.ajouter.succes"));
  1216.                 $rep['msg'] = '';
  1217.                 $rep['etat'] = true;
  1218.             }
  1219.             return new Response(json_encode($rep));
  1220.         }
  1221.         return new Response(json_encode($rep));
  1222.     }
  1223.    
  1224.     /**
  1225.      * Methode s'occupant de detail du Produit.
  1226.      *
  1227.      * @author armand.tevi@gmail.com
  1228.      * @copyright ADMIN 2015
  1229.      *
  1230.      * @version 1
  1231.      *
  1232.      * @return twig d'ajout d'un abonne detailProduit.html.twig
  1233.      */
  1234.     public function detailProduitAction(Request $request$id$siAgricole,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1235.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1236.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryProducteurRepository $producteurRepositoryAnneeCampagneRepository $anneeCampagneRepositoryInventaireRepository $inventaireRepository
  1237.     EtapeCroissanceRepository $etapeCroissanceRepositoryActiviteRepository $activiteRepositoryPlanteRepository $planteRepositoryProjetRepository $projetRepository,
  1238.         UtilisateurRepository $utilisateurRepositoryCategorieProduitRepository $categorieProduitRepositorySurfaceAnneeRepository $surfaceAnneeRepository,ImageRepository $imageRepository,
  1239.         LigneCommandeRepository $ligneCommandeRepositoryLivrerRepository $livrerRepositoryCommandeRepository $commandeRepositoryRubriqueRepository $rubriqueRepository
  1240.         ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository) {
  1241.                  /*
  1242.          * Nom de l'action en cours
  1243.          */
  1244.         $nomAction __FUNCTION__;
  1245.         /*
  1246.          * Description de l'action de l'action en cours
  1247.          */
  1248.         $descAction "Détail  d'un produit ";
  1249.         $valRetour $this->gestionDroitUtil($request$nomAction$descAction,$this->moduleTitre,$this->moduleDesc,
  1250.         $loginManager,$paramRepositor,$connexionRepository$actionRepository$moduleRepository$controleurRepository$profilRepository);
  1251.         if($valRetour==1){
  1252.             return $this->redirect($this->generateUrl('app_logout'));
  1253.         }elseif($valRetour==2){
  1254.             return $this->redirect($this->generateUrl('app_admin_user_access_refuse'));
  1255.         }
  1256.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1257.         $codeGenere"PAR".rand();
  1258.         //try {
  1259.         if($id == 0)
  1260.             $id $request->get("produitId");
  1261.         /*
  1262.             * Récupération du détail de l'utilisateur
  1263.             */
  1264.         // var_dump($id);exit;
  1265.             
  1266.         $em $this->getDoctrine()->getManager();
  1267.         $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  1268.         //var_dump($id);exit;
  1269.         $detailProduit $produitRepository->getOneProduit($id);
  1270.         $surfaceAnnee = new SurfaceAnnee();
  1271.         $surfaceAnnee->setCodeSurface($codeGenere);
  1272.         $formParcelle $this->createForm(SurfaceAnneeProduitType::class, $surfaceAnnee,['produit'=>$detailProduit[0]]);
  1273.         $uneRubrique = new Rubrique();
  1274.         $unArticle = new Article();
  1275.         $formRubrique $this->createForm('App\Form\cms\RubriqueProduitType'$uneRubrique);
  1276.         $formArticle  $this->createForm('App\Form\cms\ArticleType',$unArticle ,['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
  1277.        
  1278.     
  1279.         $unAnneeCampagne = new AnneeCampagne();        
  1280.         $formSaison $this->createForm(AnneeCampagneProduitType::class, $unAnneeCampagne, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)]);
  1281.     
  1282.         $unProduit = new Produit();
  1283.         $unProduit->setCodeProduit("PR".rand());
  1284.         $siSimplifie 3;
  1285.         $formProduit $this->createForm(ProduitVarieteType::class, $unProduit, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'siSimplifie'=>$siSimplifie]);
  1286.         
  1287.         $uneSemence = new Produit();
  1288.         $uneSemence->setCodeProduit("PR".rand());
  1289.         $formSemence $this->createForm(ProduitRendementType::class, $uneSemence, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'siSimplifie'=>$siSimplifie]);
  1290.         
  1291.         $unProduitTransf = new Produit();
  1292.         $unProduitTransf->setCodeProduit("PR".rand());
  1293.         
  1294.         $formTransformation $this->createForm(ProduitVarieteType::class, $unProduitTransf, ['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'siSimplifie'=>$siSimplifie]);
  1295.         
  1296.         
  1297.         $listeProducteur $producteurRepository->getAllProducteur(000,00000,0,1,5,0,0,$sessionData['abonneId']);
  1298.         
  1299.         $listeProduitMelange $produitRepository->findBy(["abonne"=> $this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'categorie'=>$categorieProduitRepository->find(1)]);
  1300.         $locale="fr";
  1301.         $objetSaison $anneeCampagneRepository->findOneBy(["etatAnneeCampagne"=>1"produit"=> $detailProduit[0]]);
  1302.         
  1303.         //Liste de tache
  1304.         if($objetSaison == null)
  1305.             $listeTache = array();
  1306.         else
  1307.             $listeTache $activiteRepository->findBy(["saison"=> $objetSaison]);
  1308.         
  1309.         if ($request->getMethod() == 'POST') {
  1310.             $id strtolower($request->get('prod_'));
  1311.             $request->attributes->set('prod_'$id);
  1312.             $datefin strtolower($request->get('datefin_'));
  1313.             $request->attributes->set('datefin_'$datefin);
  1314.             $datedeb strtolower($request->get('datedeb_'));
  1315.             $request->attributes->set('datedeb_'$datedeb);
  1316.             $afficher 1;
  1317.             // $detailProduit = $em->getRepository($this->stockBundle . 'Produit')->getOneProduit($id);
  1318.             $inventaire $inventaireRepository->findOneBy(["etatInventaire"=>1"produit"=> $detailProduit[0]]);
  1319.             //$producteurId = $request->get("prodId");
  1320.             $formSemence->handleRequest($request);
  1321.             $formParcelle->handleRequest($request);
  1322.             $formSaison->handleRequest($request);
  1323.             $formProduit->handleRequest($request);
  1324.             $formRubrique->handleRequest($request);
  1325.             $formTransformation->handleRequest($request);
  1326.             $formArticle->handleRequest($request);
  1327.            
  1328.             
  1329.                 $id $request->get("produitId");
  1330.                 $objetProduit $produitRepository->find($id );
  1331.             //var_dump($formArticle->isSubmitted());exit;
  1332.            
  1333.             if ($formParcelle->isSubmitted()) {
  1334.                 //var_dump($produitId);exit;
  1335.                 $codeGenere "W_INT".rand(0,99)."".rand(0,99);
  1336.                 $producteurId $request->get("prodId");
  1337.                 $typeAction $request->get("typeAction");
  1338.                 $this->saveSurfaceAnneeFormulaire($em$surfaceAnnee$producteurId$id null$codeGenere$sessionData['id'], $producteurRepository$produitRepository $utilisateurRepository);
  1339.             }else if ($formSaison->isSubmitted()) {
  1340.                 $this->initialiserAnneeCampagne($em$id );
  1341.                 //$id = $produitId;
  1342.                 
  1343.                 $unAnneeCampagne->setEtatAnneeCampagne(1);
  1344.                 $unAnneeCampagne->setProduit($objetProduit);
  1345.                 $unAnneeCampagne->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  1346.                 $em->persist($unAnneeCampagne);
  1347.                 $em->flush();
  1348.             }else if ($formProduit->isSubmitted()) {
  1349.                 $siSimplifie $request->get("siSimplifie");
  1350.                 
  1351.                 if($siSimplifie  == 3){
  1352.                     
  1353.                     $unProduit $this->saveVarieteTransformation($em$unProduit$objetProduit$categorieProduitRepository->find(1),$this->getAbonne($em$sessionData['abonneId'],$abonneRepository),2) ;
  1354.                     $this->setAbonnePartenaire($em,  $objetAbonne,  $objetAbonne->getPartenaire(), $unProduit$typeObjet=1);
  1355.                 }else{
  1356.                     
  1357.                     $unProduit $this->saveVarieteTransformation($em$unProduitTransf$objetProduit$categorieProduitRepository->find(3),$this->getAbonne($em$sessionData['abonneId'],$abonneRepository),0) ;
  1358.                     $siMelange $request->get("siMelange");
  1359.                     if($siMelange){
  1360.                         $unProduit->setSiMelange(1);
  1361.                         $unProduit->setMelange($produitRepository->find($request->get("produit_melange")));
  1362.                         $em->persist($unProduit);
  1363.                         $em->flush();
  1364.                     }
  1365.                 }
  1366.                 //$this->setAbonnePartenaire($em, $objetProducteur->getAbonne(), $objetProducteur->getAbonne()->getPartenaire(), $objetProduit, $typeObjet=1);
  1367.                 // }else if ($formTransformation->isSubmitted()) {
  1368.                 //$id = $produitId;
  1369.             } else if ($formSemence->isSubmitted()) {
  1370.                 $siSimplifie $request->get("siSimplifie");
  1371.                
  1372.                 //if($siSimplifie  == 3){    
  1373.                     $objetVariete $this->saveVarieteTransformation($em$uneSemence$objetProduit$categorieProduitRepository->find(1),$this->getAbonne($em$sessionData['abonneId'],$abonneRepository),1) ;
  1374.                     $id $objetProduit->getProduit()->getId();   
  1375.                     $this->setAbonnePartenaire($em,  $objetAbonne,  $objetAbonne->getPartenaire(), $objetVariete$typeObjet=1);
  1376.           
  1377.                 // }else if ($formTransformation->isSubmitted()) {
  1378.                 //$id = $produitId;
  1379.             } else if ($formRubrique->isSubmitted()) {
  1380.                 
  1381.                $objetEtapeCroissance =  $etapeCroissanceRepository->find($request->get("etape_croissance"));
  1382.                $objetProduitEtapeCroissance =  $produitEtapeCroissanceRepository->findOneBy(['produit'=>$objetProduit"etapecroissance"=>$objetEtapeCroissance]);
  1383.                $uneRubrique->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  1384.                $uneRubrique->setProduit($objetProduit);
  1385.                $uneRubrique->setProduitEtapeCroissance ($objetProduitEtapeCroissance);
  1386.                $em->persist($uneRubrique);
  1387.                 $em->flush();
  1388.             } else if ($formArticle->isSubmitted()) {
  1389.                    $unArticle->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  1390.                    //$unArticle->setProduit($objetProduit);
  1391.                    $em->persist($unArticle);
  1392.                     $em->flush();
  1393.             } else{
  1394.                 $titre $request->get('titre');
  1395.                 $observation=$request->get('observation');
  1396.                 $datedeb=$request->get('datedeb');
  1397.                 $datefin=$request->get('datefin');
  1398.                 $heuredeb=$request->get('heuredeb');
  1399.                 $heurefin=$request->get('heurefin');
  1400.                 $idOperation=$request->get('idOperation');
  1401.                 $tabIdUtil=$request->get('utilId');
  1402.                 $utilId $sessionData["id"];
  1403.                 $id $request->get("produitId");
  1404.                 $type 1;
  1405.                 $this->saveTacheFormulaire($em$titre$observation$datedeb$datefin$heuredeb$heurefin$objetSaison->getId(),$tabIdUtil,$utilId $type$utilisateurRepository$anneeCampagneRepository$surfaceAnneeRepository$planteRepository$projetRepository$producteurRepository,null);                
  1406.             } 
  1407.             return $this->redirect($this->generateUrl('admin_produit_detail',["id"=>$id,"siAgricole"=>1]));
  1408.         }else{
  1409.             $inventaire $inventaireRepository->findOneBy(["etatInventaire"=>1"produit"=> $detailProduit[0]]);
  1410.             if($inventaire != null ){
  1411.                 $datedebut =  $inventaire->getDateInventaire();
  1412.                 $datefin =  new \DateTime();
  1413.                 $datedeb $datedebut->format("d/m/Y");
  1414.                 $datefin $datefin->format("d/m/Y");
  1415.             }else{
  1416.                 $datedeb 0;
  1417.                 $datefin 0
  1418.             } 
  1419.         }
  1420.         /*
  1421.          * Préparation des informations que nous allons traiter  sur le twig
  1422.          */
  1423.         //$siAgricole =0;
  1424.         $this->data['siAgricole'] = $siAgricole;
  1425.         
  1426.         if($detailProduit!= null)
  1427.             $dataillImage $imageRepository->findOneBy(["elementCodeGenere"=>$detailProduit[0]->getCodeGenere()]);
  1428.         else
  1429.             $dataillImage null;
  1430.         
  1431.         $listeEtapeCroissance $produitRepository->getAllEtapeCroissanceProduit($id);
  1432.         $tabTache = array();
  1433.         foreach($listeEtapeCroissance as $uneEtapeCroissance){
  1434.             $tabTache[$uneEtapeCroissance['id']]  = $produitRepository->getAllEtapeCroissanceProduitTache($uneEtapeCroissance['produitEtapeCroissanceId']);     //$uneCategorie->getId()          
  1435.         }
  1436.         $this->data['detailProduit'] = $detailProduit;
  1437.         $this->data['dataillImage'] = $dataillImage;
  1438.         
  1439.        // $inventaire = $em->getRepository($this->stockBundle . 'Inventaire')->findOneBy(["etatInventaire"=>1, "produit"=> $detailProduit[0]]);
  1440.        
  1441.         
  1442.         
  1443.         $listeProduitAnnexe $commandeRepository->getRechercheCommandeAnnexe(0,$datefin $datedeb0000,0,4,20,1,4,$sessionData["abonneId"],0,$detailProduit[0]->getId());
  1444.        // $listeStatistiqueCommande = $em->getRepository($this->stockBundle . 'Commande')->getStatsRechercheCommandeProducteur($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom, $prod = '0', $nbParPage = 20, $pageActuelle = 1) {
  1445.         $quantiteLivrer =  $commandeRepository->getStatsRechercheLivraisonQuantiteMois(0,00000,20,1,$detailProduit[0]->getId(),4); 
  1446.         $objetLigneCommande $ligneCommandeRepository->findOneBy(['produit'=>$detailProduit[0], 'etatLigneCommande'=>1]);
  1447.         $objetDerniereLivraison $livrerRepository->findOneBy(['lignecommande'=>$objetLigneCommande]);
  1448.        
  1449.         $listeAnneeCampagne $anneeCampagneRepository->getAllAnneeCampagneProduit($sessionData["abonneId"],$detailProduit[0]->getId());
  1450.         
  1451.         if($detailProduit[0]->getProduit() == null)
  1452.             $produitId $detailProduit[0]->getId();
  1453.         else
  1454.             $produitId $detailProduit[0]->getProduit()->getId();
  1455.         $listeSurfaceAnnee $surfaceAnneeRepository->getIntentionProduit($detailProduit[0]->getId());
  1456.         
  1457.         $listeVariete $produitRepository->getAllVarieteCategorieProduit($produitId1);//produit frai
  1458.         $listeTransformation $produitRepository->getAllVarieteCategorieProduit($detailProduit[0]->getId(), 3); //transformation
  1459.         
  1460.         $listeUtilisateur $utilisateurRepository->findBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository), 'typeProdUser'=>3]); //transformation
  1461.         
  1462.         $listeRubrique $rubriqueRepository->findBy(['abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository), 'produit'=>$detailProduit[0]]); //transformation
  1463.         
  1464.         $listeCategorie $categorieProduitRepository->findBy(['typeCategorie'=>3'abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)]);
  1465.         $listeProduit =array();
  1466.         foreach($listeCategorie as $uneCategorie){
  1467.             $listeProduit[$uneCategorie->getId()]  = $produitRepository->getAllProduitCategorieAjax($uneCategorie->getId(),$sessionData['abonneId']);     //$uneCategorie->getId()          
  1468.         }
  1469.         $tabVariete = array();
  1470.         foreach($listeVariete as $uneVariete){
  1471.             $tabVariete[$uneVariete->getId()]  = $produitRepository->getAllVarieteCategorieProduit($uneVariete->getId(), 1);     //$uneCategorie->getId()          
  1472.         }
  1473.         $listeTacheSysteme$activiteRepository->findBy(['siSysteme'=>1]);
  1474.         
  1475.         $listeToutEtapeCroissance $etapeCroissanceRepository->findAll();
  1476.         
  1477.         
  1478.      
  1479.         //$this->data['listeCommandeOneProduit'] = $listeCommandeOneProduit;
  1480.         $this->data['locale'] = $locale;
  1481.         $this->data['tabTache'] = $tabTache;
  1482.         $this->data['actionRepository'] = $actionRepository;
  1483.         //$
  1484.         $this->data['siSimplifie'] = $siSimplifie;
  1485.         $this->data['listeTacheSysteme'] = $listeTacheSysteme;
  1486.         $this->data['listeEtapeCroissance'] = $listeEtapeCroissance ;
  1487.         $this->data['listeToutEtapeCroissance'] = $listeToutEtapeCroissance ;
  1488.         $this->data['inventaire'] = $inventaire;
  1489.         $this->data['listeProduitAnnexe'] = $listeProduitAnnexe;
  1490.         $this->data['listeVariete'] = $listeVariete;
  1491.         $this->data['tabVariete'] = $tabVariete;
  1492.         $this->data['listeRubrique'] = $listeRubrique;
  1493.         
  1494.         $this->data['listeTransformation'] = $listeTransformation;
  1495.         $this->data['listeAnneeCampagne'] = $listeAnneeCampagne;
  1496.         $this->data['listeSurfaceAnnee'] = $listeSurfaceAnnee;
  1497.         $this->data['listeUtilisateur'] = $listeUtilisateur;
  1498.         $this->data['datefin_'] = $datefin;
  1499.         $this->data['datedeb_'] = $datedeb;
  1500.         $this->data['listeProduitAnnexe'] = $listeProduitAnnexe;
  1501.         $this->data['listeProducteur'] = $listeProducteur['data'];
  1502.         $this->data['listeTache'] = $listeTache ;
  1503.         $this->data['listeCategorie'] = $listeCategorie ;
  1504.         $this->data['listeProduit'] = $listeProduit ;
  1505.         $this->data['listeProduitMelange'] = $listeProduitMelange;
  1506.         
  1507.         $this->data['quantiteLivrer'] = $quantiteLivrer ;
  1508.         $this->data['abonneId'] = $sessionData['abonneId'];
  1509.        // $
  1510.         
  1511.         
  1512.         $this->data['formParcelleView'] = $formParcelle->createView();
  1513.         $this->data['formSemenceView'] = $formSemence->createView();
  1514.         $this->data['formArticleView'] =$formArticle->createView();
  1515.         
  1516.         $this->data['formSaisonView'] = $formSaison->createView();
  1517.         $this->data['formProduitView'] = $formProduit->createView();
  1518.         $this->data['formTransformationView'] = $formTransformation->createView();
  1519.         $this->data['formRubriqueView'] = $formRubrique->createView();
  1520.         $this->data['objetLigneCommande'] = $objetLigneCommande;
  1521.         $this->data['objetDerniereLivraison'] = $objetDerniereLivraison;
  1522.         $this->data['listeCommandeOneProduit']=array();
  1523.         if($siAgricole == 0)
  1524.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/detailProduit.html.twig'$this->data$this->response);
  1525.         else
  1526.             return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/detailProduitAgricole.html.twig'$this->data$this->response);
  1527.     }    
  1528.     public function traiteCarateristiqueProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1529.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1530.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryCategorieProduitRepository $categorieProduitRepository
  1531.     ProduitAbonneRepository $produitAbonneRepository)
  1532.     
  1533.     {    
  1534.         
  1535.         $em $this->getDoctrine()->getManager();
  1536.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1537.         //$this->initialiserProduitUser($em,$this->getUser()->getId());
  1538.         //var_dump(1);exit;
  1539.         if ($request->isMethod('POST')) {
  1540.                 
  1541.                 $idProduitSelection=$request->get('produit-select');
  1542.                 
  1543.                 
  1544.                 $unObjetProduit $produitRepository->find($idProduitSelection);
  1545.                         
  1546.                     
  1547.                 $tabIdProduit=$request->get('produit_id');
  1548.                 $actionProduit=$request->get('actionProduit');
  1549.                 $tabIdValue=$request->get('value');
  1550.                 // var_dump($tabIdValue);exit;
  1551.                 $i 0;
  1552.                 foreach($tabIdProduit as $idProduit){
  1553.                     if($idProduit !=""){
  1554.                         $unProduit $produitRepository ->find($idProduit);
  1555.                         $unProduit->setSiHeritage(1);
  1556.                         $objetAbonneProduit $produitAbonneRepository->findOneBy(['produit'=>$unObjetProduit'abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)]);
  1557.                         $value $tabIdValue[$i];
  1558.                         $uneCarateristiqueProduit =  new CarateristiqueProduit();
  1559.                         $uneCarateristiqueProduit->setProduit($unObjetProduit);
  1560.                         $uneCarateristiqueProduit->setProduitabonne($objetAbonneProduit);
  1561.                         $uneCarateristiqueProduit->setProduitparent($unProduit);
  1562.                         //$uneCarateristiqueProduit
  1563.                         $uneCarateristiqueProduit->setAbonne($this->getAbonne($em$sessionData['abonneId'],$abonneRepository)) ;
  1564.                         $uneCarateristiqueProduit->setValue($value);
  1565.                         $uneCarateristiqueProduit->setLibelle($value);
  1566.                         $em->persist($unProduit);
  1567.                         $em->persist($uneCarateristiqueProduit);
  1568.                         
  1569.                         ++$i;  
  1570.                         $objetProduitConditionne = new Produit();
  1571.                         $objetProduitConditionne->setCodeProduit("PR".rand());
  1572.                         $objetProduitConditionne->setNomProduit($unObjetProduit->getNomProduit()." ".$unProduit->getNomProduit());
  1573.                         $objetProduitConditionne->setDescriptionProduit($unObjetProduit->getNomProduit()." ".$unProduit->getNomProduit());
  1574.                         $objetProduitConditionne->setCategorie($categorieProduitRepository->find(1));
  1575.      
  1576.                         
  1577.                         $em->persist($objetProduitConditionne);
  1578.                         $em->flush();
  1579.                         if($actionProduit !=1)
  1580.                             $this->saveProduitConditionne($em$objetProduitConditionne$uneCarateristiqueProduit$categorieProduitRepository->findOneBy(['typeCategorie'=>4'abonne'=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)]), $this->getAbonne($em$sessionData['abonneId'],$abonneRepository), $siSemence=0);
  1581.                     
  1582.                     }
  1583.                 }    
  1584.                 
  1585.                 
  1586.                 return $this->redirectToRoute('admin_produits');
  1587.                 //$this->flashMessage->add('producteur.ajout.success', $this->translate->trans("site.ajouter.succes"));
  1588.         
  1589.     }
  1590.     public function traiteCarateristiqueProduitCertificationAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1591.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1592.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryCertificationRepository $certificationRepository)
  1593.     
  1594.     {    $em $this->getDoctrine()->getManager();
  1595.          $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  1596.          //$this->initialiserProduitUser($em,$this->getUser()->getId());
  1597.          //var_dump(1);exit;
  1598.          if ($request->isMethod('POST')) {
  1599.                     
  1600.                     $certificationId =$request->get('certificationId');
  1601.                     
  1602.                     $objetCertification$certificationRepository->find($certificationId);
  1603.                          
  1604.                         
  1605.                     $tabIdProduit=$request->get('produit_id');
  1606.                     $tabIdValue=$request->get('value');
  1607.                    // var_dump($tabIdValue);exit;
  1608.                     $i 0;
  1609.                     foreach($tabIdProduit as $produitId){
  1610.                         if($produitId !=""){
  1611.                             $unProduit $produitRepository->find($produitId);
  1612.                             $value $tabIdValue[$i];
  1613.                             $uneCertificationProduit =  new CertificationProduit();
  1614.                             $uneCertificationProduit->setProduit($unProduit);
  1615.                             $uneCertificationProduit->setCertification($objetCertification);
  1616.                             $uneCertificationProduit->setNom($value);
  1617.                             $em->persist($uneCertificationProduit);
  1618.                             ++$i;                    
  1619.                         }
  1620.                     }
  1621.                         
  1622.                     $em->flush();
  1623.                     return $this->redirectToRoute('admin_certifications');
  1624.                     //$this->flashMessage->add('producteur.ajout.success', $this->translate->trans("site.ajouter.succes"));
  1625.          
  1626.     }
  1627.      /**
  1628.      * Methode s'occupant de lister les Producteurs.
  1629.      *
  1630.      * @author armand.tevi@gmail.com
  1631.      * @copyright ADMIN 2015
  1632.      *
  1633.      * @version 1
  1634.      *
  1635.      * @return twig d'ajout d'un abonne listeProducteur.html.twig
  1636.      */
  1637.     public function uploadFileProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1638.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1639.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryUtilisateurRepository $utilisateurRepository) {
  1640.             
  1641.         $em $this->getDoctrine()->getManager();
  1642.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1643.            $objetUtilisateur =  $utilisateurRepository->find($sessionData['id']);
  1644.             $uploadStatus 1
  1645.             
  1646.             // Upload file 
  1647.             $uploadedFile ''
  1648.             $idProd $request->get('idProd');
  1649.             //var_dump($idProd );
  1650.             $uploadDir =   __DIR__ '/../../../public/upload/produit/';
  1651.             $fileName =  basename$_FILES['file']['name']);
  1652.             if(!empty($_FILES["file"]["name"])){ 
  1653.                 
  1654.                 // File path config 
  1655.                 $fileName basename($_FILES["file"]["name"]); 
  1656.                 $targetFilePath $uploadDir $fileName
  1657.                 $fileType pathinfo($targetFilePathPATHINFO_EXTENSION); 
  1658.                 
  1659.                 // Allow certain file formats 
  1660.                 $allowTypes = array('jpg''png''jpeg'); 
  1661.                 if(in_array($fileType$allowTypes)){ 
  1662.                     // Upload file to the server 
  1663.                     if(move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath)){ 
  1664.                         
  1665.                         $uploadedFile $fileName
  1666.                         $objetProduit =  $produitRepository->find($idProd);
  1667.                         $objetImage =  $this->imageRepository->findOneBy(["produit"=>$objetProduit]);
  1668.                         if($objetImage == null){
  1669.                             $objetImage = new Image();
  1670.                         }
  1671.                         
  1672.                         $objetImage->setUrlImage("produit/".basename$_FILES['file']['name']));
  1673.                         $objetImage->setProduit($objetProduit);    
  1674.                         $objetImage->setAbonne($objetUtilisateur->getAbonne());    
  1675.                          
  1676.                         $objetImage->setCodeGenere("IMGV_".rand());    
  1677.                         $objetImage->setElementCodeGenere($objetProduit->getCodeGenere());                    
  1678.                         $objetImage->setTitreImage("produit");                   
  1679.                         $em->persist($objetImage);    
  1680.                         $em->flush($objetImage);
  1681.                         $response['message'] = 'fichier chargé avec succes'
  1682.                     }else{ 
  1683.                         $uploadStatus 0
  1684.                         $response['message'] = 'Sorry, there was an error uploading your file.'
  1685.                     } 
  1686.                 }else{ 
  1687.                     $uploadStatus 0
  1688.                     $response['message'] = 'Sorry, only PDF, DOC, JPG, JPEG, & PNG files are allowed to upload.'
  1689.                 } 
  1690.             } 
  1691.             
  1692.             
  1693.            
  1694.             // Return response 
  1695.             return new Response(json_encode($response));
  1696.         //return $this->render($this->prodBundleSlash($sessionData['typePresentation']). 'Producteur/listeSemenceProducteurFournisseur.html.twig', $this->data, $this->response);
  1697.     }
  1698.     public function deleteCarateristiqueProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1699.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1700.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository) {
  1701.         /*
  1702.          * Nom de l'action en cours
  1703.          */
  1704.         $nomAction __FUNCTION__;
  1705.         /*
  1706.          * Description de l'action de l'action en cours
  1707.          */
  1708.         $descAction 'mise à jour une nouvelle ligne commande!';
  1709.         /*
  1710.          * Préparation du message de log 
  1711.          */
  1712.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  1713.         /*
  1714.          * Service de gestion des droits
  1715.          */
  1716.         
  1717.         /*
  1718.          * Informations de session
  1719.          */
  1720.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1721.         /*
  1722.          * Locale en cours
  1723.          */
  1724.         $locale $loginManager->getLocale();
  1725.         $this->data['locale'] = $locale;
  1726.         $this->data['actionRepository'] = $actionRepository;
  1727.         /*
  1728.          * On vérifie si l'utilisateur est connecté
  1729.          */
  1730.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  1731.         
  1732.         $em $this->getDoctrine()->getManager();
  1733.         
  1734.         $locale $loginManager->getLocale();
  1735.         $this->data['locale'] = $locale;
  1736.         $this->request $request;
  1737.         $this->data['actionRepository'] = $actionRepository;
  1738.         
  1739.     
  1740.         $id $request->request->get('ids');
  1741.        // var_dump($id);exit;
  1742.         
  1743.        // $em->getConnection()->beginTransaction();
  1744.         try {
  1745.             $add["rep"]="0k";
  1746.             
  1747.                
  1748.                  $objetCarateristique $CarateristiqueProduitRepository->find($id );
  1749.                  $objetCarateristique->setEtatCaratersitiqueProduit(3);
  1750.                 // $em->remove($objetCarateristique );
  1751.                  $em->persist($objetCarateristique);
  1752.                  $em->flush();
  1753.            //$em->getConnection()->commit();
  1754.         } catch (Exception $exc) {
  1755.             //$em->getConnection()->rollBack();
  1756.             throw $exc;
  1757.         }
  1758.         return new Response(json_encode(array('add' => $add)));
  1759.     }
  1760.     public function traiteProduitEtapeCroissanceAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1761.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1762.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryEtapeCroissanceRepository $etapeCroissanceRepositoryProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository
  1763.     TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepositoryActiviteRepository $activiteRepositoryUtilisateurRepository $utilisateurRepository)
  1764.     {    
  1765.         
  1766.          $em $this->getDoctrine()->getManager();
  1767.          //$this->initialiserProduitUser($em,$this->getUser()->getId());
  1768.          $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1769.          $objetUtilisateur =  $utilisateurRepository->find($sessionData['id']);
  1770.          if ($request->isMethod('POST')) {
  1771.             
  1772.                     $tabIdEtapeCroissance $request->get('tabEtapeCroissance');
  1773.                     //var_dump($tabIdEtapeCroissance );exit;
  1774.                     $produitId=$request->get('produitId');
  1775.                     $activeRadio=$request->get('activeRadio');
  1776.                     $tabDesDonneeEtapeCroissance explode('|'$tabIdEtapeCroissance);
  1777.                  
  1778.                      foreach ($tabDesDonneeEtapeCroissance as $uneEtapeCroissance) {
  1779.                          if($uneEtapeCroissance !=""){
  1780.                             $objetEtapeCroissance=  $etapeCroissanceRepository->find((int)$uneEtapeCroissance);
  1781.                             $objetProduit =  $produitRepository->find((int)$produitId);
  1782.                             $objetProduitetapeCroissance =  $produitEtapeCroissanceRepository->findOneBy(['produit'=>$objetProduit'etapecroissance'=>$objetEtapeCroissance]);
  1783.                             if($objetProduitetapeCroissance ==null)
  1784.                                 $objetProduitetapeCroissance = new ProduitEtapeCroissance();
  1785.                             if($objetEtapeCroissance->getId() == $activeRadio){
  1786.                                 $objetProduitetapeCroissance->setSiDebut(1);  
  1787.                             }
  1788.                             $objetProduitetapeCroissance->setProduit($objetProduit);
  1789.                             $objetProduitetapeCroissance->setPeriode($request->get('temps_'.$objetEtapeCroissance->getId()));
  1790.                             $objetProduitetapeCroissance->setEtapeCroissance($objetEtapeCroissance);
  1791.                             $objetProduitetapeCroissance->setEtatProduitEtapeCroissance(1);
  1792.                             $em->persist($objetProduitetapeCroissance);
  1793.                             $em->flush();
  1794.                             $objetActivite $activiteRepository->findOneBy(['siLastEtapeActivite'=>1]);
  1795.                             $objetTacheProduitEtapeCroissance $tacheProduitEtapeCroissanceRepository->findOneBy(['produitetapecroissance'=>$objetProduitetapeCroissance'siLastEtapeActivite'=>1]);
  1796.                             if($objetTacheProduitEtapeCroissance != null){
  1797.                                 
  1798.                                 $objetTacheProduitetapeCroissance = new TacheProduitEtapeCroissance();
  1799.                            
  1800.                                 $objetTacheProduitetapeCroissance->setActivite($objetActivite);  
  1801.                                 $objetTacheProduitetapeCroissance->setAbonne($objetUtilisateur->getAbonne());                           
  1802.                                 $objetTacheProduitetapeCroissance->setProduitetapecroissance($objetProduitetapeCroissance);      
  1803.                                 $objetTacheProduitetapeCroissance->setSiLastEtapeActivite($objetActivite->getSiLastEtapeActivite()); 
  1804.                                 $objetTacheProduitetapeCroissance->setSiLastEtapeActivite(1); 
  1805.                                 $em->persist($objetTacheProduitetapeCroissance);
  1806.                                 $em->flush();
  1807.                             }
  1808.                             $listeProduit $produitRepository->findBy(['produit'=>$objetProduit]);
  1809.                             foreach ($listeProduit as $uneVariete) {
  1810.                                 $objetVarieteEtapeCroissance =  $produitEtapeCroissanceRepository->findOneBy(['produit'=>$uneVariete'etapecroissance'=>$objetEtapeCroissance]);
  1811.                                 if($objetVarieteEtapeCroissance == null){
  1812.                                     $produitEtapeCroissanceRepository->insertEtapeCroissanceVariete($em$objetProduit->getId(), $uneVariete->getId(), $objetEtapeCroissance->getId());   
  1813.                                     //var_dump($objetProduit->getId(), $uneVariete->getId(), $objetEtapeCroissance->getId());exit;
  1814.                                     $objetTacheVarieteEtapeCroissance =  $tacheProduitEtapeCroissanceRepository->findOneBy(['activite'=>$objetActivite 'produitetapecroissance'=>$objetVarieteEtapeCroissance ]);
  1815.                                     if($objetTacheVarieteEtapeCroissance != null)
  1816.                                         $tacheProduitEtapeCroissanceRepository->insertTacheEtapeCroissanceVariete($em$objetTacheVarieteEtapeCroissance->getId(), $objetActivite->getId());  
  1817.                                 }  
  1818.                             }
  1819.                          }
  1820.                      }                   
  1821.                     return $this->redirectToRoute('admin_produit_detail',array("id"=>$produitId'siAgricole'=>1));
  1822.                     //$this->flashMessage->add('producteur.ajout.success', $this->translate->trans("site.ajouter.succes"));
  1823.          }
  1824.     }
  1825.     public function traiteEtapeCroissanceTacheAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1826.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1827.     ProduitRepository $produitRepository,UtilisateurRepository $utilisateurRepository,AbonneRepository $abonneRepository,EtapeCroissanceRepository $etapeCroissanceRepository,ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepositoryActiviteRepository $activiteRepository,
  1828.     TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository)
  1829.     {    
  1830.         
  1831.         $em $this->getDoctrine()->getManager();
  1832.          //$this->initialiserProduitUser($em,$this->getUser()->getId());
  1833.          $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1834.          $objetUtilisateur =  $utilisateurRepository->find($sessionData['id']);
  1835.          //var_dump(1);exit;
  1836.          if ($request->isMethod('POST')) {
  1837.                     
  1838.                     $tabIdTache $request->get('tabTacheSysteme');
  1839.                     $etapeCroissanceId=$request->get('etapeCroissanceId');
  1840.                     $produitId=$request->get('produitId');
  1841.                     $tabDesDonneeTache explode('|'$tabIdTache);      
  1842.                     
  1843.                     // var_dump($tabIdTache, $produitId,$etapeCroissanceId );exit;
  1844.                      foreach ($tabDesDonneeTache as $uneTache) {
  1845.                          if($uneTache !=""){
  1846.                             $objetActivite $activiteRepository->find((int)$uneTache);
  1847.                             $objetEtapeCroissance =  $etapeCroissanceRepository->find((int)$etapeCroissanceId);
  1848.                             $objetProduit =  $produitRepository->find((int)$produitId);
  1849.                             $objetProduitEtapeCroissance =  $produitEtapeCroissanceRepository->findOneBy(['produit'=>$objetProduit 'etapecroissance'=>$objetEtapeCroissance]);
  1850.                             
  1851.                             $objetTacheProduitetapeCroissance $tacheProduitEtapeCroissanceRepository->findOneBy(['activite'=>$objetActivite 'produitetapecroissance'=>$objetProduitEtapeCroissance]);
  1852.                             //var_dump($objetProduitEtapeCroissance->getId() );exit;
  1853.                             if($objetTacheProduitetapeCroissance ==null)
  1854.                                 $objetTacheProduitetapeCroissance = new TacheProduitEtapeCroissance();
  1855.                            
  1856.                             $objetTacheProduitetapeCroissance->setActivite($objetActivite);  
  1857.                             $objetTacheProduitetapeCroissance->setAbonne($objetUtilisateur->getAbonne());                           
  1858.                             $objetTacheProduitetapeCroissance->setProduitetapecroissance($objetProduitEtapeCroissance);      
  1859.                             $objetTacheProduitetapeCroissance->setSiLastEtapeActivite($objetActivite->getSiLastEtapeActivite()); 
  1860.                             $em->persist($objetTacheProduitetapeCroissance);
  1861.                             $em->flush();
  1862.                             $listeProduit $produitRepository->findBy(['produit'=>$objetProduit'siAgricole'=>1]);
  1863.                             foreach ($listeProduit as $uneVariete) {
  1864.                                 if($objetEtapeCroissance != null) {
  1865.                                     $objetVarieteEtapeCroissance =  $produitEtapeCroissanceRepository->findOneBy(['produit'=>$uneVariete 'etapecroissance'=>$objetEtapeCroissance]);
  1866.     
  1867.                                     $objetTacheVarieteEtapeCroissance =  $tacheProduitEtapeCroissanceRepository->findOneBy(['activite'=>$objetActivite 'produitetapecroissance'=>$objetVarieteEtapeCroissance ]);
  1868.                                     if($objetTacheVarieteEtapeCroissance != null)
  1869.                                         $tacheProduitEtapeCroissanceRepository->insertTacheEtapeCroissanceVariete($em$objetTacheVarieteEtapeCroissance->getId(), $objetActivite->getId());  
  1870.                                 }                      
  1871.                             }
  1872.                             
  1873.                          }
  1874.                      }
  1875.                     return $this->redirectToRoute('admin_produit_detail',array("id"=>$produitId'siAgricole'=>1));
  1876.                     //$this->flashMessage->add('producteur.ajout.success', $this->translate->trans("site.ajouter.succes"));
  1877.          
  1878.     }    
  1879.     public function traiteOrdreTacheProduitEtapeCroissanceAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1880.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1881.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository,TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository)
  1882.     {           
  1883.         $em $this->getDoctrine()->getManager();    
  1884.         /*
  1885.         * Informations de session
  1886.         */
  1887.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1888.         //$this->initialiserProduitUser($em,$this->getUser()->getId());
  1889.         //var_dump(1);exit;
  1890.         
  1891.         if ($request->isMethod('POST')) {
  1892.             
  1893.             $donneeReponse "";  
  1894.            
  1895.            if(!array_key_exists(0$_POST )){
  1896.                 foreach ($_POST as $tabActivite) {
  1897.                     $i 0;
  1898.                     foreach ($tabActivite as $activiteId) {
  1899.                         //$donneeReponse = $donneeReponse."_".$reponseId."-".$i;
  1900.                         $objetTacheProduitetapeCroissance =  $tacheProduitEtapeCroissanceRepository->find($activiteId);
  1901.                         $objetTacheProduitetapeCroissance->setOrdre($i);
  1902.                         $em->persist($objetTacheProduitetapeCroissance);
  1903.                         ++$i;  
  1904.                     }
  1905.                     $em->flush();
  1906.                 }
  1907.           
  1908.             }else{
  1909.                 foreach ($_POST as $tabActivite) {
  1910.                     $i 0;
  1911.                     foreach ($tabActivite as $activiteId) {
  1912.                         //$donneeReponse = $donneeReponse."_".$reponseId."-".$i;
  1913.                         //var_dump($activiteId);exit;
  1914.                         $objetPoduitetapeCroissance =  $produitEtapeCroissanceRepository->find($activiteId);
  1915.                         $objetPoduitetapeCroissance->setOrdre($i);
  1916.                         $em->persist($objetPoduitetapeCroissance);
  1917.                         ++$i;  
  1918.                     }
  1919.                     $em->flush();
  1920.                 }
  1921.             }
  1922.             // $donneeReponse = $donneeReponse.    "#"; 
  1923.             // $this->addHistoriqueAction($em, 'ReponseInspectionOrdre', 1, "", $sessionData['id'], NULL, 1, $donneeReponse);
  1924.             $rep['msg'] = '';
  1925.             $rep['etat'] = true;
  1926.             return new Response(json_encode($rep));        
  1927.         } 
  1928.     }
  1929.     public function chartStockProduitAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1930.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1931.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository,TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository)
  1932.     {           
  1933.         $em $this->getDoctrine()->getManager();    
  1934.         /*
  1935.         * Informations de session
  1936.         */
  1937.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1938.         $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  1939.         $listeVariete $produitRepository->getAllCurrentVariete($objetAbonne->getId());
  1940.         $listeAchatMois $this->getAchatMoisAction($em,$objetAbonne->getId());
  1941.         $tabDonnee = array();
  1942.         $tabDonneeStock = array();
  1943.         $tabDonneeMois= array();
  1944.         $tabType = array();
  1945.         $tabColeur=array();
  1946.         if ($request->isMethod('POST')) {
  1947.             $donneeReponse "";
  1948.             $j=0;  
  1949.             foreach ($listeVariete as $uneVariete) {
  1950.                 $i 0;
  1951.                 $tabDonnee[$j]['name'] = $uneVariete->getNomProduit();
  1952.                 foreach ($listeAchatMois as $unMoisDonne) {
  1953.                     $infoStock $this->getAchatVarieteAction($em,$objetAbonne->getId(),$uneVariete->getId());
  1954.                     //var_dump($infoStock);exit;
  1955.                     $tabDonneeMois[$i]= $this->traiteInfoMois($unMoisDonne['mois']);
  1956.                     $tabDonneeStock[$i] =  $infoStock[0]['quantiteTotal'];   
  1957.                     $i++;
  1958.                 }
  1959.                 
  1960.                 $tabDonnee[$j]['data']=$tabDonneeStock;
  1961.                 $tabType[$j]="solid";
  1962.                 $tabColeur[$j]="#ffffff";
  1963.                 $j++;
  1964.             }
  1965.             
  1966.             // $donneeReponse = $donneeReponse.    "#"; 
  1967.             // $this->addHistoriqueAction($em, 'ReponseInspectionOrdre', 1, "", $sessionData['id'], NULL, 1, $donneeReponse);
  1968.             $rep['msg'] = '';
  1969.             $rep['infoMois'] = $tabDonneeMois;
  1970.             $rep['infoData'] = $tabDonnee;  
  1971.             $rep['tabType'] = $tabType
  1972.             $rep['infoMax'] = 2
  1973.             $rep['tabColeur'] = $tabColeur;         
  1974.             return new Response(json_encode($rep));        
  1975.         } 
  1976.     }
  1977.     public function chartInspectionAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  1978.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  1979.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository,InspectionRepository $inspectionRepository,TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository)
  1980.     {           
  1981.         $em $this->getDoctrine()->getManager();    
  1982.         /*
  1983.         * Informations de session
  1984.         */
  1985.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  1986.         $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  1987.         
  1988.         $tabDonnee = [1,2,3,4,5,6,7,8,9,10,11,12];
  1989.         $tabDonneeInspection = array();
  1990.         $tabDonneeMois= array();
  1991.         $infoInspection = array();
  1992.         
  1993.         if ($request->isMethod('POST')) {
  1994.             $donneeReponse "";
  1995.             $i=0;  
  1996.             $objetInspection =$inspectionRepository->findOneBy(['abonne'=>$objetAbonne]);
  1997.             //var_dump(1);exit; 
  1998.             foreach ($tabDonnee as $uneDonneeMois  ) {
  1999.                 if($objetInspection !=null)
  2000.                 $infoInspection =$this->getStatInspectionAction($em,$objetAbonne->getId(), $objetInspection->getId(), $uneDonneeMois)  ;
  2001.                 
  2002.                 $tabDonneeMois[$i]= $this->traiteInfoMois($uneDonneeMois);
  2003.                 if(count($infoInspection)!=)
  2004.                     $tabDonneeInspection[$i] =  $infoInspection[0]['total'];   
  2005.                 else
  2006.                     $tabDonneeInspection[$i] =  0;
  2007.                 $i++;
  2008.                
  2009.             }
  2010.             // $donneeReponse = $donneeReponse.    "#"; 
  2011.             // $this->addHistoriqueAction($em, 'ReponseInspectionOrdre', 1, "", $sessionData['id'], NULL, 1, $donneeReponse);
  2012.             $rep['msg'] = '';
  2013.             $rep['tabDonneeMois'] = $tabDonneeMois;
  2014.             $rep['tabDonneeInspection'] = $tabDonneeInspection;  
  2015.                     
  2016.             return new Response(json_encode($rep));        
  2017.         } 
  2018.     } 
  2019.     
  2020.     public function listeProduitEcommerceAction(Request $request,  AbonneRepository $abonneRepository,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2021.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  2022.     CategorieProduitRepository $categorieRepository ,ProduitRepository $produitRepository
  2023.     ){
  2024.     $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  2025.     $em $this->getDoctrine()->getManager(); //recuperation de l"entité manager
  2026.     //return $this->redirect($this->generateUrl('app_admin_user_login')); 
  2027.     
  2028.     $objetInitial=$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository);
  2029.     
  2030.     $listeProduit1 $produitRepository->getAllProduitClientSiteWebAPI(3,$objetInitial->getId(), 0);
  2031.     $listeProduit2 $produitRepository->getAllProduitProduitFini(0,$objetInitial->getId(), 0);
  2032.     $listeCategorie1 $produitRepository->getAllCategorieProduitParent(0,$objetInitial->getId(), 1);
  2033.     //var_dump($listeCategorie1);
  2034.     $listeCategorie2 $produitRepository->getAllCategorieProduitFini(0,$objetInitial->getId(), 0);
  2035.     //var_dump($listeCategorie2);exit;
  2036.     $listeCategorie3 $produitRepository->getAllCategorieTransforme(0,$objetInitial->getId(), 0);
  2037.     //var_dump($listeCategorie3);
  2038.     $listeCategorie array_merge($listeCategorie1$listeCategorie2$listeCategorie3);
  2039.     $listeProduit array_merge($listeProduit1$listeProduit2);
  2040.     $this->data['listeProduit'] = $listeProduit;
  2041.     $this->data['listeCategorie'] = $listeCategorie;
  2042.     $this->data['objetAbonne'] = $objetInitial;
  2043.     $this->data['actionRepository'] = $actionRepository;
  2044.    
  2045.     return $this->render($this->stockBundleSlash($sessionData['typePresentation']). '/Produit/listeProduitEcommerce.html.twig'$this->data$this->response);
  2046.     }
  2047.      /**
  2048.      * Methode s'occupant de la gestion des états du critère
  2049.      * Activation, suppression, désactivation de pays.
  2050.      *
  2051.      * @author armand.tevi@gmail.com
  2052.      * @copyright ADMIN 2015
  2053.      *
  2054.      * @version 1
  2055.      *
  2056.      * @return Response
  2057.      */
  2058.     public function supprimerProduitEtapeCroissanceAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2059.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  2060.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository) {
  2061.           $rep = array('etat' => FALSE'msg' => 'Erreur survenue lors du traitement''logout' => FALSE);
  2062.         /*
  2063.          * Nom de l'action en cours
  2064.          */
  2065.         $nomAction __FUNCTION__;
  2066.         /*
  2067.          * Description de l'action de l'action en cours
  2068.          */
  2069.         $descAction "Supprimer une etape de croissance d'un produit ";
  2070.         /*
  2071.          * Préparation du message de log 
  2072.          */
  2073.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  2074.         /*
  2075.          * Service de gestion des droits
  2076.          */
  2077.         
  2078.         /*
  2079.          * Informations de session
  2080.          */
  2081.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  2082.         /*
  2083.          * Locale en cours
  2084.          */
  2085.         $locale $loginManager->getLocale();
  2086.         $this->data['locale'] = $locale;
  2087.         $this->data['actionRepository'] = $actionRepository;
  2088.         $em $this->getDoctrine()->getManager(); 
  2089.         /*
  2090.          * On vérifie si l'utilisateur est connecté
  2091.          */
  2092.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  2093.         if ($status['isConnecte']) {
  2094.             /*
  2095.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  2096.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  2097.              */
  2098.             if ($status['isInnactif']) {
  2099.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  2100.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  2101.                 return new Response(json_encode($rep));
  2102.             }
  2103.             /*
  2104.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  2105.              */
  2106.             if (!$status['isUser']) {
  2107.                 return new Response(json_encode($rep));
  2108.             }
  2109.         } else {
  2110.             $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  2111.             return new Response(json_encode($rep));
  2112.         }
  2113.         $em $this->getDoctrine()->getManager();
  2114.         /*
  2115.          * Gestion des droits
  2116.          */
  2117.         
  2118.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_PRODModule::MOD_GEST_PROD_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository,
  2119.         $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  2120.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  2121.             $rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
  2122.             return new Response(json_encode($rep));
  2123.         }
  2124.         
  2125.         /*
  2126.          * Traitement de la requete qui vient de la vue
  2127.          * on vérifie si la requete est Ajax et si la methode est post
  2128.          */
  2129.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  2130.             
  2131.             
  2132.             /*
  2133.              * on recupere les ids des Produits qui ont été choisis sur la vue pour subir une modification d'états
  2134.              * cette variable est envoyé depuis la vue a travers la requete post ajax
  2135.              */
  2136.             $tempIds $request->get('sId');
  2137.             /*
  2138.              * verification si l'etat envoyé est un état INACTIF , ACTIF ou SUPPRIME 
  2139.              * déclaration d'une variable pour prendre l'état comme constante de classe TypeEtat
  2140.              */
  2141.            
  2142.             /*
  2143.             * Recuperation du Produit dont l'id est l'id courant de la boucle
  2144.             */
  2145.             $objetProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository->find((int) $tempIds );
  2146.             $objetProduitEtapeCroissanceRepository->setEtatProduitEtapeCroissance(3);
  2147.             $em->persist($objetProduitEtapeCroissanceRepository);
  2148.             /*
  2149.             * Mise à jour des informations dans la base de donnée
  2150.             */
  2151.             // $objetProduitEtapeCroissanceRepository->set 
  2152.             $em->flush();
  2153.             $oneOk true;
  2154.             if ($oneOk) {
  2155.                // $this->flashMessage->add('produit.gerer.success', $this->translate->trans("site.ajouter.succes"));
  2156.                 $rep['msg'] = '';
  2157.                 $rep['etat'] = true;
  2158.             }
  2159.             return new Response(json_encode($rep));
  2160.         }
  2161.         return new Response(json_encode($rep));
  2162.     }
  2163.       /**
  2164.      * Methode s'occupant de la gestion des états du critère
  2165.      * Activation, suppression, désactivation de pays.
  2166.      *
  2167.      * @author armand.tevi@gmail.com
  2168.      * @copyright ADMIN 2015
  2169.      *
  2170.      * @version 1
  2171.      *
  2172.      * @return Response
  2173.      */
  2174.     public function supprimerTacheProduitEtapeCroissanceAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2175.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  2176.     ProduitRepository $produitRepository,AbonneRepository $abonneRepositoryTacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository) {
  2177.           $rep = array('etat' => FALSE'msg' => 'Erreur survenue lors du traitement''logout' => FALSE);
  2178.         /*
  2179.          * Nom de l'action en cours
  2180.          */
  2181.         $nomAction __FUNCTION__;
  2182.         /*
  2183.          * Description de l'action de l'action en cours
  2184.          */
  2185.         $descAction "Supprimer une tache d'une etape de croissance d'un produit ";
  2186.         /*
  2187.          * Préparation du message de log 
  2188.          */
  2189.         $this->logMessage .= ' [ ' $nomAction ' ] ';
  2190.         /*
  2191.          * Service de gestion des droits
  2192.          */
  2193.         
  2194.         /*
  2195.          * Informations de session
  2196.          */
  2197.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);;
  2198.         /*
  2199.          * Locale en cours
  2200.          */
  2201.         $locale $loginManager->getLocale();
  2202.         $this->data['locale'] = $locale;
  2203.         $this->data['actionRepository'] = $actionRepository;
  2204.         $em $this->getDoctrine()->getManager(); 
  2205.         /*
  2206.          * On vérifie si l'utilisateur est connecté
  2207.          */
  2208.         $status $loginManager->isConnecte($nomAction,$paramRepositor,$connexionRepository$actionRepository);
  2209.         if ($status['isConnecte']) {
  2210.             /*
  2211.              * Au cas ou l'utilisateur est connecté on vérifie s'il nest pas innactif. S'il est innactif
  2212.              * on garde en mémoire flash la route actuelle pour effectuer une redirection lors de la prochaine connexion
  2213.              */
  2214.             if ($status['isInnactif']) {
  2215.                 $rep['msg'] = "Vous avez accusé un long moment d'inactivité. Veuillez-vous connecter de nouveau";
  2216.                 $loginManager->logout(LoginManager::SESSION_DATA_NAME);
  2217.                 return new Response(json_encode($rep));
  2218.             }
  2219.             /*
  2220.              * Seuls les utilisateurs admins ont le droit d'acceder à cette action
  2221.              */
  2222.             if (!$status['isUser']) {
  2223.                 return new Response(json_encode($rep));
  2224.             }
  2225.         } else {
  2226.             $rep['msg'] = "Vous êtes déconnecté. Veuillez-vous connecter de nouveau";
  2227.             return new Response(json_encode($rep));
  2228.         }
  2229.         $em $this->getDoctrine()->getManager();
  2230.         /*
  2231.          * Gestion des droits
  2232.          */
  2233.         
  2234.         if (!$loginManager->getOrSetActions(Module::MOD_GEST_PRODModule::MOD_GEST_PROD_DESC$this->getNomClassRun(__CLASS__), $this->description$nomAction$descAction$sessionData['idProfil'], $moduleRepository$controleurRepository$actionRepository$profilRepository,
  2235.         $moduleRepository$controleurRepository$actionRepository$profilRepository)) {
  2236.             $this->logMessage .= ' [ TENTATIVE DE VIOLATION DE DROITS ] ';
  2237.             $rep['msg'] = "Vous n'avez pas le droit de déconnecter un utilisateur";
  2238.             return new Response(json_encode($rep));
  2239.         }
  2240.         
  2241.         /*
  2242.          * Traitement de la requete qui vient de la vue
  2243.          * on vérifie si la requete est Ajax et si la methode est post
  2244.          */
  2245.         if (($request->isXmlHttpRequest()) && ($request->getMethod() == 'POST')) {
  2246.             
  2247.             
  2248.             /*
  2249.              * on recupere les ids des Produits qui ont été choisis sur la vue pour subir une modification d'états
  2250.              * cette variable est envoyé depuis la vue a travers la requete post ajax
  2251.              */
  2252.             $tempIds $request->get('sId');
  2253.             /*
  2254.              * verification si l'etat envoyé est un état INACTIF , ACTIF ou SUPPRIME 
  2255.              * déclaration d'une variable pour prendre l'état comme constante de classe TypeEtat
  2256.              */
  2257.            
  2258.             /*
  2259.             * Recuperation du Produit dont l'id est l'id courant de la boucle
  2260.             */
  2261.             $objetTacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository->find((int) $tempIds );
  2262.             $objetTacheProduitEtapeCroissanceRepository->setEtatTacheProduitEtapeCroissance(3);
  2263.             $em->persist($objetTacheProduitEtapeCroissanceRepository);
  2264.             /*
  2265.             * Mise à jour des informations dans la base de donnée
  2266.             */
  2267.             // $objetProduitEtapeCroissanceRepository->set 
  2268.             $em->flush();
  2269.             $oneOk true;
  2270.             if ($oneOk) {
  2271.                // $this->flashMessage->add('produit.gerer.success', $this->translate->trans("site.ajouter.succes"));
  2272.                 $rep['msg'] = '';
  2273.                 $rep['etat'] = true;
  2274.             }
  2275.             return new Response(json_encode($rep));
  2276.         }
  2277.         return new Response(json_encode($rep));
  2278.     }
  2279.     public function setInfoDetailProduitEtapeCroissanceAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2280.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  2281.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository,TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository)
  2282.     {           
  2283.         $em $this->getDoctrine()->getManager();    
  2284.         /*
  2285.         * Informations de session
  2286.         */
  2287.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  2288.         //$this->initialiserProduitUser($em,$this->getUser()->getId());
  2289.         //var_dump(1);exit;
  2290.         
  2291.         $poduitEtapeCroissanceId $request->get('sId');
  2292.         $typeInfo $request->get('typeInfo');
  2293.         $valeur $request->get('valeur');
  2294.         if ($request->isMethod('POST')) {
  2295.             //var_dump($poduitEtapeCroissanceId, $typeInfo, $valeur  );exit;
  2296.             $objetPoduitetapeCroissance =  $produitEtapeCroissanceRepository->find($poduitEtapeCroissanceId);
  2297.             if( $typeInfo == 1)
  2298.                 $objetPoduitetapeCroissance->setSiDebut($valeur);
  2299.             else
  2300.                 $objetPoduitetapeCroissance->setPeriode($valeur);
  2301.             $em->persist($objetPoduitetapeCroissance);
  2302.               
  2303.             $em->flush();
  2304.         }         
  2305.             // $donneeReponse = $donneeReponse.    "#"; 
  2306.             // $this->addHistoriqueAction($em, 'ReponseInspectionOrdre', 1, "", $sessionData['id'], NULL, 1, $donneeReponse);
  2307.             $rep['msg'] = '';
  2308.             $rep['etat'] = true;
  2309.             return new Response(json_encode($rep));        
  2310.         
  2311.     }
  2312.     public function getInfoProduitCarateristiqueAction(Request $request,LoginManager $loginManager,ParamRepository $paramRepositor,ConnexionRepository $connexionRepository,ActionRepository $actionRepository,
  2313.     ModuleRepository $moduleRepository,ControleurRepository $controleurRepository,ProfilRepository $profilRepository,
  2314.     ProduitRepository $produitRepository,AbonneRepository $abonneRepository,TacheProduitEtapeCroissanceRepository $tacheProduitEtapeCroissanceRepository,ProduitEtapeCroissanceRepository $produitEtapeCroissanceRepository)
  2315.     {           
  2316.         $em $this->getDoctrine()->getManager();    
  2317.         /*
  2318.         * Informations de session
  2319.         */
  2320.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  2321.         //$this->initialiserProduitUser($em,$this->getUser()->getId());
  2322.         //var_dump(1);exit;
  2323.         
  2324.         $produitId $request->get('produitId');
  2325.        
  2326.         $listeProduit =  $produitRepository->getToutCarateristqueProduit($produitId$sessionData['abonneId']);
  2327.                     
  2328.             // $donneeReponse = $donneeReponse.    "#"; 
  2329.             // $this->addHistoriqueAction($em, 'ReponseInspectionOrdre', 1, "", $sessionData['id'], NULL, 1, $donneeReponse);
  2330.             $rep['listeProduit'] = $listeProduit;
  2331.             $rep['etat'] = true;
  2332.             return new Response(json_encode($rep));        
  2333.         
  2334.     }
  2335. }