<?php
namespace App\Controller\user;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Contracts\Translation\TranslatorInterface;
use \Symfony\Component\HttpFoundation\Response;
use App\Types\user\TypeCodeProfil;
use \Symfony\Component\HttpFoundation\Request;
use Symfony\Component\DomCrawler\Crawler;
use App\ControllerModel\user\paramUtilTrait;
use App\Repository\stock\ProduitRepository;
use App\Repository\asso\ActiviteRepository;
use App\Repository\stock\CommandeRepository;
use App\Repository\user\UtilisateurRepository;
use App\Repository\stock\VilleRepository;
use App\Repository\stock\FournisseurRepository;
use App\Repository\stock\InfoLivrerRepository;
use App\Repository\stock\PrixRigueurRepository;
use App\Repository\stock\CategorieProduitRepository;
use App\Repository\prod\ProducteurRepository;
use App\Repository\inspection\ProgrammeRepository;
use App\Repository\prod\ProducteurGroupementRepository;
use App\Repository\stock\CaisseRepository;
use App\Repository\stock\ZoneProducteurRepository;
use App\Repository\stock\SeTrouverRepository;
use App\Repository\prod\SurfaceAnneeRepository;
use App\Repository\prod\EvenementRepository;
use App\Repository\prod\AnneeCampagneRepository;
use App\Repository\stock\TransformationRepository;
use App\Types\user\TypeProfil;
use App\Services\user\LoginManager;
use App\Repository\user\ConnexionRepository;
use App\Repository\user\AbonneRepository;
use App\Repository\user\ActionRepository;
use App\Services\param\ParametreManager;
use App\Repository\param\ParamRepository;
class HomeController extends AbstractController {
use paramUtilTrait;
public function __construct(TranslatorInterface $translator) {
$this->response = new Response();
$this->response->headers->addCacheControlDirective('no-cache', true);
$this->response->headers->addCacheControlDirective('max-age', 0);
$this->response->headers->addCacheControlDirective('must-revalidate', true);
$this->response->headers->addCacheControlDirective('no-store', true);
$this->logMessage = " [ HomeController ] ";
$this->description = "Controlleur qui gère la la page d'accueil de l'espace d'administration";;
$this->translator = $translator;
}
/*
* Page d'accueil.
* @return type
*/
public function homeAction(Request $request, LoginManager $loginManager, ParamRepository $paramRepositor,ConnexionRepository $connexionRepository, ActionRepository $actionRepository,
AbonneRepository $abonneRepository, ProduitRepository $produitRepository, CommandeRepository $commandeRepository, UtilisateurRepository $utilisateurRepository,
VilleRepository $villeRepository, FournisseurRepository $fournisseurRepository, InfoLivrerRepository $infoLivrerRepository, PrixRigueurRepository $prixRigueurRepository,
CategorieProduitRepository $categorieProduitRepository, ProducteurRepository $producteurRepository, ProducteurGroupementRepository $producteurGroupementRepository,
CaisseRepository $caisseRepository,ZoneProducteurRepository $zoneProducteurRepository,SeTrouverRepository $seTrouverRepository, SurfaceAnneeRepository $surfaceAnneeRepository,
EvenementRepository $evenementRepository, TransformationRepository $transformationRepository, AnneeCampagneRepository $anneeCampagneRepository,
ActiviteRepository $activiteRepository, ProgrammeRepository $programmeRepository) {
//var_dump("tester le produit");exit;
$this->denyAccessUnlessGranted('ROLE_USER');
$this->logMessage .= ' [ homeAction ] ';
$locale = $loginManager->getLocale();
$sessionData = $this->infosConnecte($request, $loginManager, $paramRepositor,$connexionRepository, $actionRepository);
$status = $loginManager->isConnecte('homeAction', $paramRepositor,$connexionRepository, $actionRepository);
$tabObjetProduit = array();
$tabObjetProdui = array();
if ($status['isConnecte']) {
if ($status['isInnactif']) {
$this->get('session')->getFlashBag()->add('ina', $this->translator->trans("site.long.periode"));
return ($status['isUser']) ? $this->redirect($this->generateUrl('app_logout')) :
$this->redirect($this->generateUrl('app_logout'));
}
$prod = $sessionData["produit_id"];
if ($status['isUser']) {
$em = $this->getDoctrine()->getManager();
$objetAbonne = $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository);
/**
* REcuperer les informations pr la page d'accueil
*/
$abonne = $abonneRepository->find($sessionData['id']);
// if ($sessionData['codeProfil'] == App\Types\user\TypeCodeProfil::MAINTENANCE) {
$this->data['locale'] = $locale;
$this->data['abonne'] = $abonne;
//$abonne_id = $abonne->getId();
$isAbonne = 0;
//Recuperation de la liste des utilisateurs qui doivent de l'argent
//Recuperation de la liste des produits qui seront prochaine en rupture de stock
$produitRupture = $produitRepository->getAllProduitRupture();
//Afficher le détail du derniere commande réalisée
$detailCommande = $commandeRepository->getDerniereOneCommande();
//Liste des 10 dernierres vente qu'elle a réalise
$listeVente = $commandeRepository->getListeCommandeParTypeLimit(2);
$arrayInfo =array("moisEncours","total");
$objetUtilisateur =$utilisateurRepository->find($sessionData['id']);
if($objetUtilisateur->getCaisse()!= null)
return $this->redirect($this->generateUrl('admin_vente_evoluee'));
if(in_array($sessionData['idProfil'],TypeProfil::PROFIL_COMPTABLE)){
$derniereCommandes = $commandeRepository->getListeRechercheCommande('','',$objetUtilisateur->getVille()->getId(),'','','','',1);
$surPlus = $fournisseurRepository->getSumSurplusByZone($objetUtilisateur->getVille()->getId());
$listeVille[0] = $objetUtilisateur->getVille();
}else{
$derniereCommandes = $commandeRepository->getListeRechercheCommande('','','','','','','',1);
$listeVille = $villeRepository->getAllActiveVille($prod);
}
$listeCollecteurProbleme = $fournisseurRepository->getAllFournisseurByDate();
$dateJour = new \DateTime();
$listeCommandeStat =array();
$listeInfoLivrerStat =array();
$tabMontantTotalLivre =array();
$tabSurpl=array();
$listeLivraisonStat =array();
foreach ($listeVille as $uneVille) {
//($nomcol, $datefin, $datedeb, $ville, $util, $silivre, $numcom, $prod = '0', $type=0, $nbParPage = 20, $pageActuelle = 1, $niveau = 4)
$listeCommandeStat[$uneVille->getId()]["moisEncours"] = $commandeRepository->getStatsRechercheCommande(0,0,0, $uneVille->getId(), 0, 0, 0,$prod,0,20,1,4,$sessionData["abonneId"]);
$listeLivraisonStat[$uneVille->getId()]["moisEncours"] = $commandeRepository->getStatsRechercheLivraisonMois(0,0 , 0, $uneVille->getId(), 0, 0, 0,20,1,$prod);
$listeInfoLivrerStat[$uneVille->getId()]["moisEncours"] = $infoLivrerRepository->getRechercheTotalInfoLivrer(0, $uneVille->getId(),0,0,0,$prod);
$tabSurpl[$uneVille->getId()] = $fournisseurRepository->getSumSurplusByZone($uneVille->getId());
$listeCommandeStat[$uneVille->getId()]["total"] = $commandeRepository->getStatsRechercheCommande(0,$dateJour->format("dd/mm/YY") , "01/05/2015", $uneVille->getId(), 0, 0, 0,$prod,0,20,1);
$listeLivraisonStat[$uneVille->getId()]["total"] = $commandeRepository->getStatsRechercheLivraisonTotal(0,$dateJour->format("dd/mm/YY") , $this->getParamLivraisonDate($em,1), $uneVille->getId(), 0, 0, 0,20,1,$prod);
$listeInfoLivrerStat[$uneVille->getId()]["total"] = $infoLivrerRepository->getRechercheTotalInfoLivrer(0, $uneVille->getId(), "01/05/2015", $dateJour->format("dd/mm/YY"),0,$prod);
$livraison = $commandeRepository->getStatsInfoLivraisonCommande(0,$dateJour->format("dd/mm/YY") , "01/05/2015", $uneVille->getId(), 0, 0, 0,20,1);
$tabMontantTotalLivre[$uneVille->getId()]["moisEncours"] = 0;
$tabMontantTotalLivre[$uneVille->getId()]["total"] = 0;
//var_dump($livraison);exit;
}
$objetProduit = $produitRepository->find($prod);
$uneCampagne = $anneeCampagneRepository->findOneBy(array("etatAnneeCampagne"=>1, "produit"=>$objetProduit));
$prixAchatSemence = $prixRigueurRepository->findOneBy(array("etatPrixRigueur"=>1,"typePrixRigueur"=>$prod ));
$prixVente = $prixRigueurRepository->findOneBy(array("etatPrixRigueur"=>1,"typePrixRigueur"=>$prod ));
if($detailCommande !=null){
$detailCommande=$detailCommande[0];
}else{
$detailCommande=null;
}
if ($request->isMethod('POST')) {
$this->initialiserAnneeCampagne($em, $prod);
$this->initialiserIntentionSemence($em);
}
$listeCategorie= $categorieProduitRepository->getAllCategorieProduit($objetAbonne->getId());
$i=0;
$tabProduit = array();
foreach ($listeCategorie as $uneCategorie) {
$tabObjetProdui[$uneCategorie->getId()] = $produitRepository->findBy(array('categorie'=> $uneCategorie, 'abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository)));
$dateJour = new \DateTime();
// $i=0;
$dateDebut = "01/01/2017";
$dateFin = $dateJour->format("d/m/Y");
foreach ($tabObjetProdui[$uneCategorie->getId()] as $unProduit) {
$quantiteAchete = $commandeRepository->getStatsRechercheCommande(0,0 , 0, 0, 0, 0, 0,$unProduit->getId(),3,20,1,4,$sessionData["abonneId"]);//$uneVille->getId()
$quantiteCommande = $commandeRepository->getStatsRechercheCommande(0,0 , 0, 0, 0, 0, 0,$unProduit->getId(),0,20,1,4,$sessionData["abonneId"]);//$uneVille->getId()
$quantiteLivrer = $commandeRepository->getStatsRechercheLivraisonQuantiteMois(0,0 , 0, 0, 0, 0, 0,20,1,$unProduit->getId(),4);
//$quantitePayeDetail = $em->getRepository($this->stockBundle . 'Operation')-> getSumOperationsCaisseBrouillardNew(2, 0,$dateDebut, $dateFin, 0, 1000, 1, 10, $unProduit->getId(), 0, 0, 0, 0, 0) ;
$quantiteUtilise = $transformationRepository->getCountQuantiteTransformationByProduct($unProduit->getId());
$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteCommande"] = $quantiteCommande[0]["quantiteTotal"];
$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteLivrer"] = $quantiteLivrer[0]["quantiteLivrer"];
$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteUtilise"] = $quantiteAchete[0]["quantiteTotal"]; ///$quantiteUtilise[0]["quantiteUtilisee"];
$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["quantiteSec"] = $quantiteUtilise[0]["quantiteSec"];
$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["produit"] = $unProduit->getNomProduit();
//$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["seuil"] = $unProduit->getSeuilProduit();
//$tabProduit[$uneCategorie->getId()][$unProduit->getId()]["poidCarton"] = $unProduit->getPoidsProduit();
$i++;
// var_dump($tabProduit);exit;
}
}
$groupement = 0;
$tabVille =0;
if($objetUtilisateur->getAbonne()->getSiPrincipale() != 2){
//Caisse utilisateur
if($objetUtilisateur->getCaisse() ==null){
$listeCaisse = $caisseRepository->getAllCaisseAbonne($sessionData['abonneId']);
}else{
$listeCaisse[0] =$objetUtilisateur->getCaisse();
}
}else{
$listeCaisse = $caisseRepository->findBy(array("partenaire"=>$objetUtilisateur->getAbonne()->getPartenaire()));
}
if($objetUtilisateur->getTypeUtilisateur() == 3){
$objetProducteur= $producteurRepository->findOneBy(array("utilisateur"=>$objetUtilisateur));
$objetProducteurGroupement = $producteurGroupementRepository->findOneBy(array("producteur"=>$objetProducteur));
$groupement = $objetProducteurGroupement->getGroupement()->getId();
}else if($objetUtilisateur->getTypeUtilisateur() == 4){
$objetProducteur= $producteurRepository->findOneBy(array("utilisateur"=>$objetUtilisateur));
$tabVille = $zoneProducteurRepository ->findBy(array("producteur"=>$objetProducteur));
}else if($objetUtilisateur->getTypeUtilisateur() == 1){
$objetAgent = $fournisseurRepository->findOneBy(['utilisateur'=>$objetUtilisateur]) ;
if($objetAgent!=null)
$tabVille = $seTrouverRepository->findBy(array("fournisseur"=>$objetAgent));
else
$tabVille =0;
}
$listeEvenement = $evenementRepository->getAllEvenement($sessionData["abonneId"]);
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $sessionData['abonneId'],$abonneRepository));
if($infoPartenaire['typeAction'] == 2)
$abonne = 0;
else
$abonne = $sessionData['abonneId'];
$queryResult = $producteurRepository->getAllProducteur(0, 0, 0, 0, 0, $groupement, 0, $nbParPage="10000000", $pageActuelle=1,0,5,$tabVille,0,$abonne, 0,0,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$nombreSurface = $surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonne, $groupement, $tabVille,0,0,0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
//$totalSurface = $surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonne, $groupement, $tabVille, 1,0,0,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$listeActivite = $activiteRepository->findBy(["abonne"=>$this->getAbonne($em, $sessionData['abonneId'],$abonneRepository)], array('id' => 'DESC'), 7);
$listeProgramme = $programmeRepository->findBy(['abonne'=>$this->getAbonne($em,$sessionData['abonneId'], $abonneRepository), 'etatProgramme'=>1]);
//var_dump($queryResult);exit;
$this->data['listeProducteur'] = $queryResult[0]['nbreTotal'];
$this->data['derniereCommandes']=$derniereCommandes;
$this->data['prixAchatSemence']=$prixAchatSemence;
$this->data['prixAchatSemence']=$prixAchatSemence;
$this->data['nombreSurface']= $nombreSurface;
//$this->data['totalSurface']= $totalSurface;
$this->data['listeActivite']= $listeActivite;
$this->data['listeProgramme']= $listeProgramme;
$this->data['listeEvenement']=$listeEvenement;
$this->data['listeCaisse']=$listeCaisse;
$this->data['tabProduit']=$tabProduit;
$this->data['listeCategorie']=$listeCategorie;
$this->data['tabObjetProdui']=$tabObjetProdui;
$this->data['prixVente']=$prixVente;
$this->data['tabMontantTotalLivre']=$tabMontantTotalLivre;
$this->data['detailDerniereCommande']=$detailCommande;
$this->data['listeCollecteurProbleme']=$listeCollecteurProbleme;
$this->data['listeProduit']=$produitRupture;
$this->data['tabSurpl']=$tabSurpl;
$this->data['listeVente']=$listeVente;
$this->data['uneCampagne']=$uneCampagne;
$this->data['actionRepository']=$actionRepository;
$this->data['arrayInfo']=$arrayInfo;
$this->data['listeVille']=$listeVille;
$this->data['listeCommandeStat']=$listeCommandeStat;
$this->data['listeInfoLivrerStat']=$listeInfoLivrerStat;
$this->data['listeLivraisonStat']=$listeLivraisonStat;
return $this->render($this->userBundleSlash($sessionData['typePresentation']). 'Home/homeMaintenance.html.twig', $this->data, $this->response);
// }
}
return $this->redirect($this->generateUrl('app_logout'));
}
return $this->redirect($this->generateUrl('app_logout'));
}
public function downloadAction(Request $request)
{
//$request = $this->get('request');
$path = __DIR__ . "/../../../public/gsmiles-agri.apk";
$content = file_get_contents($path);
$response = new Response();
//set headers
$response->headers->set('Content-Type', 'mime/type');
$response->headers->set('Content-Disposition', 'attachment;filename=gsmiles-agri.apk');
$response->setContent($content);
return $response;
}
}