src/Controller/user/HomeController.php line 298

Open in your IDE?
  1. <?php
  2. namespace App\Controller\user;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Contracts\Translation\TranslatorInterface;
  5. use \Symfony\Component\HttpFoundation\Response;
  6. use App\Types\user\TypeCodeProfil;
  7. use \Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\DomCrawler\Crawler;
  9. use App\ControllerModel\user\paramUtilTrait;
  10. use App\Repository\stock\ProduitRepository;
  11. use App\Repository\asso\ActiviteRepository;
  12. use App\Repository\stock\CommandeRepository;
  13. use App\Repository\user\UtilisateurRepository;
  14. use App\Repository\stock\VilleRepository;
  15. use App\Repository\stock\FournisseurRepository;
  16. use App\Repository\stock\InfoLivrerRepository;
  17. use App\Repository\stock\PrixRigueurRepository;
  18. use App\Repository\stock\CategorieProduitRepository;
  19. use App\Repository\prod\ProducteurRepository;
  20. use App\Repository\inspection\ProgrammeRepository;
  21. use App\Repository\prod\ProducteurGroupementRepository;
  22. use App\Repository\stock\CaisseRepository;
  23. use App\Repository\stock\ZoneProducteurRepository;
  24. use App\Repository\stock\SeTrouverRepository;
  25. use App\Repository\prod\SurfaceAnneeRepository;
  26. use App\Repository\prod\EvenementRepository;
  27. use App\Repository\prod\AnneeCampagneRepository;
  28. use App\Repository\stock\TransformationRepository;
  29. use App\Types\user\TypeProfil;
  30. use App\Services\user\LoginManager;
  31. use App\Repository\user\ConnexionRepository;
  32. use App\Repository\user\AbonneRepository;
  33. use App\Repository\user\ActionRepository;
  34. use App\Services\param\ParametreManager;
  35. use App\Repository\param\ParamRepository;
  36. class HomeController extends AbstractController {
  37.    
  38.     use paramUtilTrait;
  39.     public function __construct(TranslatorInterface $translator) {
  40.         $this->response = new Response();
  41.         $this->response->headers->addCacheControlDirective('no-cache'true);
  42.         $this->response->headers->addCacheControlDirective('max-age'0);
  43.         $this->response->headers->addCacheControlDirective('must-revalidate'true);
  44.         $this->response->headers->addCacheControlDirective('no-store'true);
  45.         $this->logMessage " [ HomeController ] ";
  46.         $this->description "Controlleur qui gère la la page d'accueil de l'espace d'administration";;
  47.         $this->translator $translator;
  48.     }
  49.     /*
  50.      * Page d'accueil. 
  51.      * @return type
  52.      */
  53.     public function homeAction(Request $requestLoginManager $loginManagerParamRepository $paramRepositor,ConnexionRepository $connexionRepositoryActionRepository $actionRepository
  54.     AbonneRepository $abonneRepositoryProduitRepository $produitRepositoryCommandeRepository $commandeRepositoryUtilisateurRepository $utilisateurRepository,
  55.     VilleRepository $villeRepositoryFournisseurRepository $fournisseurRepositoryInfoLivrerRepository $infoLivrerRepositoryPrixRigueurRepository $prixRigueurRepository,
  56.     CategorieProduitRepository $categorieProduitRepositoryProducteurRepository $producteurRepositoryProducteurGroupementRepository $producteurGroupementRepository,
  57.     CaisseRepository $caisseRepository,ZoneProducteurRepository $zoneProducteurRepository,SeTrouverRepository $seTrouverRepositorySurfaceAnneeRepository $surfaceAnneeRepository
  58.     EvenementRepository $evenementRepositoryTransformationRepository $transformationRepositoryAnneeCampagneRepository $anneeCampagneRepository,
  59.     ActiviteRepository $activiteRepositoryProgrammeRepository $programmeRepository) {
  60.         //var_dump("tester le produit");exit;
  61.         
  62.         $this->denyAccessUnlessGranted('ROLE_USER');
  63.         $this->logMessage .= ' [ homeAction ] ';
  64.         
  65.         $locale $loginManager->getLocale();
  66.         $sessionData $this->infosConnecte($request$loginManager$paramRepositor,$connexionRepository$actionRepository);
  67.         
  68.         $status $loginManager->isConnecte('homeAction'$paramRepositor,$connexionRepository$actionRepository);
  69.         $tabObjetProduit = array();
  70.         $tabObjetProdui = array();
  71.        
  72.         if ($status['isConnecte']) {
  73.             
  74.             if ($status['isInnactif']) {
  75.                 
  76.                 $this->get('session')->getFlashBag()->add('ina'$this->translator->trans("site.long.periode"));
  77.                 return ($status['isUser']) ? $this->redirect($this->generateUrl('app_logout')) :
  78.                         $this->redirect($this->generateUrl('app_logout'));
  79.                        
  80.             }
  81.             
  82.             $prod $sessionData["produit_id"];
  83.            
  84.             if ($status['isUser']) {              
  85.                 $em $this->getDoctrine()->getManager();
  86.                 $objetAbonne $this->getAbonne($em$sessionData['abonneId'],$abonneRepository);
  87.                 /**
  88.                  * REcuperer les informations pr la page d'accueil
  89.                  */
  90.                 
  91.                 $abonne $abonneRepository->find($sessionData['id']);
  92.                 
  93.                // if ($sessionData['codeProfil'] == App\Types\user\TypeCodeProfil::MAINTENANCE) {
  94.                     
  95.                     $this->data['locale'] = $locale;
  96.                     $this->data['abonne'] = $abonne;
  97.                     //$abonne_id = $abonne->getId();
  98.                     $isAbonne 0;
  99.                                         
  100.                     //Recuperation de la liste des utilisateurs qui doivent de l'argent 
  101.                     
  102.                     //Recuperation de la liste des produits qui seront prochaine en rupture de stock
  103.                     $produitRupture $produitRepository->getAllProduitRupture();
  104.                     //Afficher le détail du derniere commande réalisée
  105.                     $detailCommande $commandeRepository->getDerniereOneCommande();
  106.                     //Liste des 10 dernierres vente qu'elle a réalise 
  107.                     $listeVente $commandeRepository->getListeCommandeParTypeLimit(2);
  108.                     $arrayInfo =array("moisEncours","total"); 
  109.                     $objetUtilisateur =$utilisateurRepository->find($sessionData['id']);
  110.                     if($objetUtilisateur->getCaisse()!= null)
  111.                         return $this->redirect($this->generateUrl('admin_vente_evoluee'));
  112.                         
  113.                     if(in_array($sessionData['idProfil'],TypeProfil::PROFIL_COMPTABLE)){
  114.                         $derniereCommandes =  $commandeRepository->getListeRechercheCommande('','',$objetUtilisateur->getVille()->getId(),'','','','',1);
  115.                         $surPlus =  $fournisseurRepository->getSumSurplusByZone($objetUtilisateur->getVille()->getId());
  116.                         $listeVille[0] = $objetUtilisateur->getVille();
  117.                     }else{
  118.                         $derniereCommandes =  $commandeRepository->getListeRechercheCommande('','','','','','','',1);
  119.                         $listeVille =  $villeRepository->getAllActiveVille($prod);   
  120.                     }
  121.                     $listeCollecteurProbleme =  $fournisseurRepository->getAllFournisseurByDate();
  122.                     $dateJour = new \DateTime();
  123.                     $listeCommandeStat =array();
  124.                     $listeInfoLivrerStat =array();
  125.                     $tabMontantTotalLivre =array();
  126.                     $tabSurpl=array();
  127.                     $listeLivraisonStat =array();
  128.                     foreach ($listeVille as $uneVille) {
  129.                         //($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom, $prod = '0', $type=0, $nbParPage = 20, $pageActuelle = 1, $niveau = 4) 
  130.                         $listeCommandeStat[$uneVille->getId()]["moisEncours"] = $commandeRepository->getStatsRechercheCommande(0,0,0$uneVille->getId(), 000,$prod,0,20,1,4,$sessionData["abonneId"]);
  131.                         
  132.                         $listeLivraisonStat[$uneVille->getId()]["moisEncours"] = $commandeRepository->getStatsRechercheLivraisonMois(0,0$uneVille->getId(), 000,20,1,$prod);    
  133.                     
  134.                         
  135.                         $listeInfoLivrerStat[$uneVille->getId()]["moisEncours"] = $infoLivrerRepository->getRechercheTotalInfoLivrer(0$uneVille->getId(),0,0,0,$prod);
  136.                         $tabSurpl[$uneVille->getId()] = $fournisseurRepository->getSumSurplusByZone($uneVille->getId()); 
  137.                         $listeCommandeStat[$uneVille->getId()]["total"] = $commandeRepository->getStatsRechercheCommande(0,$dateJour->format("dd/mm/YY") , "01/05/2015"$uneVille->getId(), 000,$prod,0,20,1);  
  138.                         $listeLivraisonStat[$uneVille->getId()]["total"] = $commandeRepository->getStatsRechercheLivraisonTotal(0,$dateJour->format("dd/mm/YY") , $this->getParamLivraisonDate($em,1), $uneVille->getId(), 000,20,1,$prod);  
  139.                         $listeInfoLivrerStat[$uneVille->getId()]["total"] = $infoLivrerRepository->getRechercheTotalInfoLivrer(0$uneVille->getId(), "01/05/2015"$dateJour->format("dd/mm/YY"),0,$prod);  
  140.                         
  141.                         
  142.                         $livraison $commandeRepository->getStatsInfoLivraisonCommande(0,$dateJour->format("dd/mm/YY") , "01/05/2015"$uneVille->getId(), 000,20,1);  
  143.                         $tabMontantTotalLivre[$uneVille->getId()]["moisEncours"] = 0;
  144.                         $tabMontantTotalLivre[$uneVille->getId()]["total"] = 0;
  145.                         //var_dump($livraison);exit;
  146.                     }
  147.                     
  148.                     $objetProduit $produitRepository->find($prod);  
  149.                     $uneCampagne $anneeCampagneRepository->findOneBy(array("etatAnneeCampagne"=>1"produit"=>$objetProduit));  
  150.                     $prixAchatSemence $prixRigueurRepository->findOneBy(array("etatPrixRigueur"=>1,"typePrixRigueur"=>$prod ));  
  151.                     
  152.                     $prixVente $prixRigueurRepository->findOneBy(array("etatPrixRigueur"=>1,"typePrixRigueur"=>$prod ));  
  153.                     
  154.                      
  155.                     if($detailCommande !=null){
  156.                     $detailCommande=$detailCommande[0];
  157.                    }else{
  158.                       $detailCommande=null;
  159.                    }
  160.                     if ($request->isMethod('POST')) {
  161.                         $this->initialiserAnneeCampagne($em$prod);
  162.                         $this->initialiserIntentionSemence($em);
  163.                     }
  164.                 
  165.                     $listeCategorie$categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
  166.                     $i=0;
  167.                     
  168.                         $tabProduit = array();
  169.                     foreach ($listeCategorie as $uneCategorie) {
  170.                         
  171.                         
  172.                         $tabObjetProdui[$uneCategorie->getId()] = $produitRepository->findBy(array('categorie'=> $uneCategorie'abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)));
  173.                         
  174.                         
  175.                         $dateJour = new \DateTime();
  176.                        // $i=0;
  177.                         $dateDebut "01/01/2017";
  178.                         $dateFin $dateJour->format("d/m/Y");
  179.                         foreach ($tabObjetProdui[$uneCategorie->getId()]  as $unProduit) {
  180.                             
  181.                             $quantiteAchete $commandeRepository->getStatsRechercheCommande(0,00000,$unProduit->getId(),3,20,1,4,$sessionData["abonneId"]);//$uneVille->getId()
  182.                             $quantiteCommande $commandeRepository->getStatsRechercheCommande(0,00000,$unProduit->getId(),0,20,1,4,$sessionData["abonneId"]);//$uneVille->getId()
  183.                             $quantiteLivrer =  $commandeRepository->getStatsRechercheLivraisonQuantiteMois(0,00000,20,1,$unProduit->getId(),4);                      
  184.                             //$quantitePayeDetail =   $em->getRepository($this->stockBundle . 'Operation')-> getSumOperationsCaisseBrouillardNew(2, 0,$dateDebut, $dateFin, 0, 1000, 1, 10, $unProduit->getId(), 0, 0, 0, 0, 0)  ;
  185.                             $quantiteUtilise =   $transformationRepository->getCountQuantiteTransformationByProduct($unProduit->getId());
  186.                             
  187.                             $tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteCommande"] =  $quantiteCommande[0]["quantiteTotal"];
  188.                             $tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteLivrer"] =  $quantiteLivrer[0]["quantiteLivrer"];
  189.                             $tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteUtilise"] =  $quantiteAchete[0]["quantiteTotal"]; ///$quantiteUtilise[0]["quantiteUtilisee"];
  190.                             $tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteSec"] =  $quantiteUtilise[0]["quantiteSec"];
  191.                             $tabProduit[$uneCategorie->getId()][$unProduit->getId()]["produit"] = $unProduit->getNomProduit();
  192.                             //$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["seuil"] = $unProduit->getSeuilProduit();
  193.                             //$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["poidCarton"] = $unProduit->getPoidsProduit();
  194.                             $i++;
  195.                            // var_dump($tabProduit);exit;
  196.                         }
  197.                     }
  198.                     $groupement 0;
  199.                     $tabVille =0;
  200.                     if($objetUtilisateur->getAbonne()->getSiPrincipale() != 2){
  201.                         //Caisse utilisateur
  202.                         if($objetUtilisateur->getCaisse() ==null){
  203.                             $listeCaisse $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
  204.                         }else{
  205.                             $listeCaisse[0] =$objetUtilisateur->getCaisse();
  206.                         }
  207.                     }else{
  208.                         $listeCaisse  $caisseRepository->findBy(array("partenaire"=>$objetUtilisateur->getAbonne()->getPartenaire()));
  209.                     }
  210.                     
  211.                     if($objetUtilisateur->getTypeUtilisateur() == 3){
  212.                         $objetProducteur$producteurRepository->findOneBy(array("utilisateur"=>$objetUtilisateur));
  213.                         $objetProducteurGroupement $producteurGroupementRepository->findOneBy(array("producteur"=>$objetProducteur));
  214.                         $groupement $objetProducteurGroupement->getGroupement()->getId();
  215.                     }else if($objetUtilisateur->getTypeUtilisateur() == 4){
  216.                             $objetProducteur$producteurRepository->findOneBy(array("utilisateur"=>$objetUtilisateur));
  217.                             $tabVille $zoneProducteurRepository ->findBy(array("producteur"=>$objetProducteur));
  218.                     }else if($objetUtilisateur->getTypeUtilisateur() == 1){
  219.                         $objetAgent $fournisseurRepository->findOneBy(['utilisateur'=>$objetUtilisateur]) ;
  220.                         if($objetAgent!=null)
  221.                             $tabVille $seTrouverRepository->findBy(array("fournisseur"=>$objetAgent));
  222.                         else
  223.                             $tabVille =0;
  224.                     }
  225.                     $listeEvenement $evenementRepository->getAllEvenement($sessionData["abonneId"]);
  226.                     $infoPartenaire $this->getInfoPartenaire($em$this->getAbonne($em$sessionData['abonneId'],$abonneRepository));
  227.                     if($infoPartenaire['typeAction'] == 2)
  228.                         $abonne 0;
  229.                     else
  230.                         $abonne $sessionData['abonneId'];
  231.                     
  232.                     $queryResult $producteurRepository->getAllProducteur(00000$groupement0$nbParPage="10000000"$pageActuelle=1,0,5,$tabVille,0,$abonne0,0,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  233.                     $nombreSurface $surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonne$groupement$tabVille,0,0,0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  234.                     //$totalSurface = $surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonne, $groupement, $tabVille, 1,0,0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
  235.                     $listeActivite =  $activiteRepository->findBy(["abonne"=>$this->getAbonne($em$sessionData['abonneId'],$abonneRepository)], array('id' => 'DESC'), 7);
  236.                     $listeProgramme $programmeRepository->findBy(['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'etatProgramme'=>1]);
  237.                     
  238.                     //var_dump($queryResult);exit;
  239.                     $this->data['listeProducteur'] = $queryResult[0]['nbreTotal']; 
  240.                     $this->data['derniereCommandes']=$derniereCommandes;
  241.                     $this->data['prixAchatSemence']=$prixAchatSemence;
  242.                     $this->data['prixAchatSemence']=$prixAchatSemence;
  243.                     $this->data['nombreSurface']= $nombreSurface;
  244.                     //$this->data['totalSurface']= $totalSurface;
  245.                     $this->data['listeActivite']= $listeActivite;
  246.                     $this->data['listeProgramme']= $listeProgramme;
  247.                     
  248.                     
  249.                     $this->data['listeEvenement']=$listeEvenement;
  250.                     $this->data['listeCaisse']=$listeCaisse;
  251.                     $this->data['tabProduit']=$tabProduit;
  252.                     $this->data['listeCategorie']=$listeCategorie;
  253.                     $this->data['tabObjetProdui']=$tabObjetProdui;
  254.                     $this->data['prixVente']=$prixVente;
  255.                     
  256.                     $this->data['tabMontantTotalLivre']=$tabMontantTotalLivre;
  257.                     $this->data['detailDerniereCommande']=$detailCommande;
  258.                     $this->data['listeCollecteurProbleme']=$listeCollecteurProbleme;
  259.                     $this->data['listeProduit']=$produitRupture;
  260.                     $this->data['tabSurpl']=$tabSurpl;
  261.                    
  262.                     $this->data['listeVente']=$listeVente;
  263.                     $this->data['uneCampagne']=$uneCampagne;
  264.                     $this->data['actionRepository']=$actionRepository;
  265.                     
  266.                     $this->data['arrayInfo']=$arrayInfo;
  267.                     $this->data['listeVille']=$listeVille;
  268.                     $this->data['listeCommandeStat']=$listeCommandeStat;
  269.                     $this->data['listeInfoLivrerStat']=$listeInfoLivrerStat;
  270.                     $this->data['listeLivraisonStat']=$listeLivraisonStat;
  271.                     
  272.                     return $this->render($this->userBundleSlash($sessionData['typePresentation']). 'Home/homeMaintenance.html.twig'$this->data$this->response);
  273.                        
  274.                // }                
  275.             }
  276.             return $this->redirect($this->generateUrl('app_logout'));
  277.         }
  278.         return $this->redirect($this->generateUrl('app_logout'));
  279.     }
  280.     
  281. public function downloadAction(Request $request)
  282. {
  283.     //$request = $this->get('request');
  284.     $path __DIR__ "/../../../public/gsmiles-agri.apk";
  285.     $content file_get_contents($path);
  286.     $response = new Response();
  287.     //set headers
  288.     $response->headers->set('Content-Type''mime/type');
  289.     $response->headers->set('Content-Disposition''attachment;filename=gsmiles-agri.apk');
  290.     $response->setContent($content);
  291.     return $response;
  292. }
  293. }