<?php
namespace App\Controller\api;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use App\ControllerModel\user\paramUtilTrait;
use App\Repository\track\LocalisationRepository;
use App\Repository\prod\CertificationRepository;
use App\Repository\user\AbonneRepository;
use App\Repository\prod\ProducteurRepository;
use App\Repository\stock\FournisseurRepository;
use App\Repository\prod\SurfaceAnneeRepository;
use App\Repository\inspection\InspectionRempliRepository;
use App\Repository\stock\ImageRepository;
use App\Repository\client\EtatClientRepository;
use DateTime;
/**
* User controller.
* @Route("traite/stats")
*/
class ApiStatsController extends AbstractController {
private $etatClientRepository;
private $userPasswordHasherInterface;
private $surfaceAnneeRepository;
private $inspectionRempliRepository;
private $producteurRepository;
private $certificationRepository;
private $imageRepository;
private $abonneRepository;
private $fournisseurRepository;
private $localisationRepository;
public function __construct( EtatClientRepository $etatClientRepository, UserPasswordHasherInterface $userPasswordHasherInterface,
SurfaceAnneeRepository $surfaceAnneeRepository, InspectionRempliRepository $inspectionRempliRepository, ProducteurRepository $producteurRepository,
ImageRepository $imageRepository, AbonneRepository $abonneRepository, CertificationRepository $certificationRepository, FournisseurRepository $fournisseurRepository,
LocalisationRepository $localisationRepository) {
$this->etatClientRepository = $etatClientRepository;
$this->userPasswordHasherInterface = $userPasswordHasherInterface;
$this->surfaceAnneeRepository = $surfaceAnneeRepository;
$this->inspectionRempliRepository = $inspectionRempliRepository;
$this->producteurRepository = $producteurRepository;
$this->imageRepository= $imageRepository;
$this->abonneRepository= $abonneRepository;
$this->certificationRepository = $certificationRepository;
$this->fournisseurRepository = $fournisseurRepository;
$this->localisationRepository =$localisationRepository;
}
use paramUtilTrait;
/**
* Traitement dess synthèses
*
* @Route("/producteur", name="app_api_stats_producteur")
* @Method({"POST"})
*
*/
public function apiStatsProducteurAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['nbreTotal'] = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=0, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
$listeCert['nbreTotalFemme'] = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=1, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
$listeCert['nbreTotalHomme'] = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=2, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
//Liste des derniers producteurs ajoutés dans l'application
$listeCert['listeDernierProducteur'] = $this->producteurRepository->getAllLastProducteur($groupementId, $agentId,$zoneId, $abonneId, $nbParPageInt);
//liste des producteurs par certification
$listeCert['listeProducteurCertification'] = $this->certificationRepository->getApiAllProducteurByCertification($abonneId);
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/producteur/detail/sexe", name="app_api_stats_producteur_detail_sexe")
* @Method({"POST"})
*
*/
public function apiInfoDetailSexeAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$nbreTotalFemme = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=1, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
$nbreTotalHomme = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=2, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
if($nbreTotalFemme != null )
$nbreTotalFemme = $nbreTotalFemme [0]['nbreTotal'];
if($nbreTotalHomme != null )
$nbreTotalHomme = $nbreTotalHomme [0]['nbreTotal'];
//Liste des derniers producteurs ajoutés dans l'application
$listeCert =['labels'=>['Homme', 'Femme'], 'data'=>[$nbreTotalFemme, $nbreTotalHomme]] ;
//liste des producteurs par certification
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/stats/en/nombre", name="app_api_stats_en_nombre")
* @Method({"POST"})
*
*/
public function apiStatsEnNombreAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$typeAction = $parameters['typeAction']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$inspectionId = $parameters['inspectionId'];
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
if($typeAction == 1){
$nbreTotalProducteur=0;
$infoTotalProducteur = $this->producteurRepository->getAllProducteur($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=0, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);
if($infoTotalProducteur!=null)
$nbreTotalProducteur=$infoTotalProducteur[0]['nbreTotal'];
$listeCert = ['labels'=>'Nombre de producteur', 'data'=> $nbreTotalProducteur ];
}elseif($typeAction == 2){
$nbreTotalParcelle = 0;
$infoTotalParcelle = $this->surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonneId, $groupementId, $tabVille=array(),$type=1,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
if($infoTotalParcelle!=null)
$nbreTotalParcelle=$infoTotalParcelle[0]['valSurface'];
$listeCert = ['labels'=>'Nombre de parcelle', 'data'=> $nbreTotalParcelle ];
}elseif($typeAction == 3){
$nbreTotalSuperficie =0;
$infoTotalSuperficie = $this->surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonneId, $groupementId, $tabVille=array(),$type=0,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
if($infoTotalSuperficie!=null)
$nbreTotalSuperficie=$infoTotalSuperficie[0]['valSurface'];
$listeCert = ['labels'=>'Nombre de superficie', 'data'=> $nbreTotalSuperficie ];
}elseif($typeAction == 4){
$countFournissueur =0;
$infoFournissueur = $this->fournisseurRepository->getCountAndSimpleAllFournisseur($type=1, $abonneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], $modele=0);
if($infoFournissueur!=null)
$countFournissueur=$infoFournissueur[0]['total'];
$listeCert = ['labels'=>'Nombre de fournisseur', 'data'=> $countFournissueur ];
}
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/parcelle", name="app_api_stats_parcelle")
* @Method({"POST"})
*
*/
public function apiStatsParcelleAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$inspectionId = $parameters['inspectionId'];
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['nbreTotalParcelle'] = $this->surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonneId, $groupementId, $tabVille=array(),$type=1,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$listeCert['nbreTotalSuperficie'] = $this->surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonneId, $groupementId, $tabVille=array(),$type=0,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$siLocalisation = $this->getStatGeolocalisationAction($em,$abonneId, $groupementId, $zoneId, 0, $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$siLocalisationtotal = $this->getStatGeolocalisationTotalAction($em,$abonneId, $groupementId, $zoneId, 0, $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$listeCert['infoLocalisation'] = [$siLocalisation,$siLocalisationtotal ] ;
$listeCert['siPolygon'] = $this->getStatPolygonAction($em,$abonneId, $groupementId, $zoneId, $siP=1, $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$siInspection = $this->getStatInspectionParcelleAction($em,$abonneId, $groupementId, $zoneId, $inspectionId, 0, $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']) ;
$noInspection = $this->getStatInspectionParcelleAction($em,$abonneId, $groupementId, $zoneId, $inspectionId, 1, $infoPartenaire['partenaireId'], $infoPartenaire['typeAction']) ;
$listeCert['infoLocalisation'] = [$siInspection,$noInspection] ;
$listeCert['inspectionByMonth'] = $this->getChatBatInspection($em,$abonneId, $inspectionId );
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/get/info/parcelle", name="app_api_stats_get_info_parcelle")
* @Method({"POST"})
*
*/
public function apiGetParcelleAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['listeParcelle'] = $this->surfaceAnneeRepository->getSumIntentionProducteurByAbonne($abonneId, $groupementId, $tabVille=array(),$type=0,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction']);
$listeCert['minListeParcelle'] = $this->surfaceAnneeRepository->getIntentionMinMaxProducteur($abonneId, $groupementId, $tabVille=array(),$type=1,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], $siPolygon=0,$region=0, $ville=0, $produit=0, $sexe=0, $agent=0, $nbParPageInt);
$listeCert['maxListeParcelle'] = $this->surfaceAnneeRepository->getIntentionMinMaxProducteur($abonneId, $groupementId, $tabVille=array(),$type=2,0,$agentId,$zoneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], $siPolygon=0,$region=0, $ville=0, $produit=0, $sexe=0, $agent=0, $nbParPageInt);
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/inspection", name="app_api_stats_inspection")
* @Method({"POST"})
*
*/
public function apiGetStatsInspectionAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$inspectionId = $parameters['inspectionId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['inspectionAgent'] = $this->getStatInspectionByAgentAction($em,$abonneId, $agentId, $inspectionId);
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/fournisseur", name="app_api_stats_fournisseur")
* @Method({"POST"})
*
*/
public function apiGetStatsFournisseurAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['countFournissueur'] = $this->fournisseurRepository->getCountAndSimpleAllFournisseur($type=1, $abonneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], $modele=0);
$listeCert['listeFournissueur'] = $this->fournisseurRepository->getCountAndSimpleAllFournisseur($type=1, $abonneId,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'], $modele=1);
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
/**
* Traitement dess synthèses
*
* @Route("/localisation", name="app_api_stats_localisation")
* @Method({"POST"})
*
*/
public function apiGetStatsLocalisationAction(Request $request
) {
$parameters = json_decode($request->getContent(), true);
$zoneId = $parameters['zoneId']; //
$groupementId = $parameters['groupementId']; //
$produitId = $parameters['produitId']; //
$abonneId = $parameters['abonneId']; //
$agentId = $parameters['agentId']; //
$campagneId = $parameters['campagneId']; //
$nbParPageInt= 5;
$em = $this->getDoctrine()->getManager();
$infoPartenaire = $this->getInfoPartenaire($em, $this->getAbonne($em, $abonneId,$this->abonneRepository));
$listeCert['localisation'] = $this->localisationRepository->getAllProducteurLocalisation($typeprod=0, $zoneId, $village=0, $region=0, $ville=0, $groupementId, $produitId, $nbParPage=0, $pageActuelle=0,0,5,$tabVille=array(),$num=0,$abonneId, $sexe=0, $agentId,1,0,$infoPartenaire['partenaireId'], $infoPartenaire['typeAction'],$campagneId,$signe=0,$valeurSigne=0);;
$dataSend = $this->get('serializer')->serialize(array('data' =>$listeCert ), 'json');
$response = new Response($dataSend);
$response->headers->set('Content-Type', 'application/json');
return $response;
}
}