407 lines
16 KiB
PHP
407 lines
16 KiB
PHP
<?php
|
|
|
|
namespace Cadoles\CoreBundle\Controller;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Session\Session;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
use Cadoles\CoreBundle\Entity\Group;
|
|
|
|
class CoreController extends Controller
|
|
{
|
|
public function homeAction(Request $request)
|
|
{
|
|
$em = $this->getDoctrine()->getManager();
|
|
$user=$this->getUser();
|
|
$masterurl=$this->getParameter("masterurl");
|
|
$masterapikey=$this->getParameter("masterapikey");
|
|
|
|
if(stripos($masterurl,"/")===0)
|
|
$url="https://".$this->getParameter("weburl").$masterurl;
|
|
else
|
|
$url=$masterurl;
|
|
|
|
$indomaine = (stripos($url,$this->getParameter("weburl"))!==false);
|
|
|
|
if($user) {
|
|
// Recherche des élèments de masterIdentify
|
|
$headers = ['Accept' => 'application/json'];
|
|
$query = [];
|
|
|
|
/* si hor domaine on utilise le proxy si proxy il y a */
|
|
if(!$indomaine) {
|
|
$PROXYactivate = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYactivate")->getValue();
|
|
if($PROXYactivate) {
|
|
$PROXYserver = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYserver")->getValue();
|
|
$PROXYport = $em->getRepository("CadolesCoreBundle:Config")->find("PROXYport")->getValue();
|
|
\Unirest\Request::proxy($PROXYserver, $PROXYport, CURLPROXY_HTTP, true);
|
|
}
|
|
}
|
|
|
|
// Récupération des informations utilisateurs issus du masteridentity
|
|
$response = \Unirest\Request::get($url.'/rest/user/'.$masterapikey.'/'.$user->getUsername(),$headers,$query);
|
|
|
|
// Mise à jour du user
|
|
$user->setAvatar($response->body->user->avatar);
|
|
$user->setRole($response->body->user->role);
|
|
$em->persist($user);
|
|
$em->flush();
|
|
|
|
// Mise à jour des groupes
|
|
$groups=$response->body->groups;
|
|
$mygroup=[];
|
|
|
|
foreach($groups as $groupexternal) {
|
|
// Le groupe existe-t-il
|
|
$group=$em->getRepository("CadolesCoreBundle:Group")->findOneBy(["idexternal"=>$groupexternal->id]);
|
|
if(!$group)
|
|
$group = new Group();
|
|
$group->setIdexternal($groupexternal->id);
|
|
$group->setLabel($groupexternal->title);
|
|
$em->persist($group);
|
|
$em->flush();
|
|
}
|
|
|
|
// Sauvegarde en session des groupes de l'utilisateur
|
|
$this->get('session')->set("groups",$groups);
|
|
|
|
}
|
|
|
|
// Total servers
|
|
$servers = $em->getRepository("CadolesCoreBundle:Server")->findAll();
|
|
|
|
// Total by module
|
|
$totalmodules = $em->createQueryBuilder()
|
|
->select('COUNT(s.module) total','s.module label')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->groupBy('s.module')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by version
|
|
$totalversions = $em->createQueryBuilder()
|
|
->select('COUNT(s.version) total','s.version label')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->groupBy('s.version')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Académie
|
|
$totalbyacademies = $em->createQueryBuilder()
|
|
->select('COUNT(e.libelle_academie) total','e.libelle_academie label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->groupBy('e.libelle_academie')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Secteur
|
|
$totalbysecteurs = $em->createQueryBuilder()
|
|
->select('COUNT(e.secteur_public_prive_libe) total','e.secteur_public_prive_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->groupBy('e.secteur_public_prive_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Nature
|
|
$totalbynatures = $em->createQueryBuilder()
|
|
->select('COUNT(e.nature_uai_libe) total','e.nature_uai_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->groupBy('e.nature_uai_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total applications
|
|
$applications = $em->getRepository("CadolesCoreBundle:ServerApplication")->findAll();
|
|
|
|
// Total by apps
|
|
$totalapplications = $em->createQueryBuilder()
|
|
->select('COUNT(a.package) total','a.name label')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.application=a.id')
|
|
->groupBy('a.package')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Servers
|
|
$etabs = $em->getRepository("CadolesCoreBundle:Etab")->findAll();
|
|
|
|
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
|
|
'useheader' => true,
|
|
'usemenu' => false,
|
|
'usesidebar' => false,
|
|
'etabs' => $etabs,
|
|
'totalservers' => count($servers),
|
|
'totalbymodules' => $totalmodules->getQuery()->getResult(),
|
|
'totalbyversions' => $totalversions->getQuery()->getResult(),
|
|
'totalapplications' => count($applications),
|
|
'totalbyapplications' => $totalapplications->getQuery()->getResult(),
|
|
'totalbyacademies' => $totalbyacademies->getQuery()->getResult(),
|
|
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
|
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
|
]);
|
|
}
|
|
|
|
public function acadAction($acad, Request $request)
|
|
{
|
|
$em = $this->getDoctrine()->getManager();
|
|
$user=$this->getUser();
|
|
|
|
|
|
// Total servers
|
|
$servers = $em->createQueryBuilder()
|
|
->select('s')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad);
|
|
|
|
// Total by module
|
|
$totalmodules = $em->createQueryBuilder()
|
|
->select('COUNT(s.module) total','s.module label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad)
|
|
->groupBy('s.module')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by version
|
|
$totalversions = $em->createQueryBuilder()
|
|
->select('COUNT(s.version) total','s.version label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad)
|
|
->groupBy('s.version')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Secteur
|
|
$totalbysecteurs = $em->createQueryBuilder()
|
|
->select('COUNT(e.secteur_public_prive_libe) total','e.secteur_public_prive_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad)
|
|
->groupBy('e.secteur_public_prive_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Nature
|
|
$totalbynatures = $em->createQueryBuilder()
|
|
->select('COUNT(e.nature_uai_libe) total','e.nature_uai_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad)
|
|
->groupBy('e.nature_uai_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total applications
|
|
$applications = $em->createQueryBuilder()
|
|
->select('a')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->andWhere('sa.server=s')
|
|
->andWhere(('sa.application=a'))
|
|
->setParameter('acad',$acad);
|
|
|
|
// Total by apps
|
|
$totalapplications = $em->createQueryBuilder()
|
|
->select('COUNT(a.package) total','a.name label')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('sa.application=a')
|
|
->andWhere('sa.server=s')
|
|
->andwhere('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad)
|
|
->groupBy('a.package')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Servers
|
|
$etabs = $em->createQueryBuilder()
|
|
->select('e')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->where('s.etab=e')
|
|
->andWhere('e.libelle_academie=:acad')
|
|
->setParameter('acad',$acad);
|
|
|
|
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
|
|
'useheader' => true,
|
|
'usemenu' => false,
|
|
'usesidebar' => false,
|
|
'etabs' => $etabs->getQuery()->getResult(),
|
|
'totalservers' => count($servers->getQuery()->getResult()),
|
|
'totalbymodules' => $totalmodules->getQuery()->getResult(),
|
|
'totalbyversions' => $totalversions->getQuery()->getResult(),
|
|
'totalapplications' => count($applications->getQuery()->getResult()),
|
|
'totalbyapplications' => $totalapplications->getQuery()->getResult(),
|
|
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
|
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
|
'by' => "acad",
|
|
'servers' => $servers->getQuery()->getResult(),
|
|
'byname' => $acad,
|
|
]);
|
|
}
|
|
|
|
public function applicationAction($application,Request $request)
|
|
{
|
|
$em = $this->getDoctrine()->getManager();
|
|
$user=$this->getUser();
|
|
|
|
// Total servers
|
|
$servers = $em->createQueryBuilder()
|
|
->select('s')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->setParameter('application',$application);
|
|
|
|
// Total by module
|
|
$totalmodules = $em->createQueryBuilder()
|
|
->select('COUNT(s.module) total','s.module label')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->setParameter('application',$application)
|
|
->groupBy('s.module')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by version
|
|
$totalversions = $em->createQueryBuilder()
|
|
->select('COUNT(s.version) total','s.version label')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->setParameter('application',$application)
|
|
->groupBy('s.version')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Académie
|
|
$totalbyacademies = $em->createQueryBuilder()
|
|
->select('COUNT(e.libelle_academie) total','e.libelle_academie label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->andwhere('s.etab=e')
|
|
->setParameter('application',$application)
|
|
->groupBy('e.libelle_academie')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Secteur
|
|
$totalbysecteurs = $em->createQueryBuilder()
|
|
->select('COUNT(e.secteur_public_prive_libe) total','e.secteur_public_prive_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->andwhere('s.etab=e')
|
|
->setParameter('application',$application)
|
|
->groupBy('e.secteur_public_prive_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Total by Nature
|
|
$totalbynatures = $em->createQueryBuilder()
|
|
->select('COUNT(e.nature_uai_libe) total','e.nature_uai_libe label')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->andwhere('s.etab=e')
|
|
->setParameter('application',$application)
|
|
->groupBy('e.nature_uai_libe')
|
|
->orderBy('total','DESC')
|
|
->addOrderBy('label','ASC');
|
|
|
|
// Servers
|
|
$etabs = $em->createQueryBuilder()
|
|
->select('e')
|
|
->from('CadolesCoreBundle:Etab','e')
|
|
->from('CadolesCoreBundle:Server','s')
|
|
->from('CadolesCoreBundle:ServerApplication','sa')
|
|
->from('CadolesCoreBundle:Application','a')
|
|
->where('sa.server=s')
|
|
->andWhere('sa.application=a')
|
|
->andWhere('a.name=:application')
|
|
->andWhere('s.etab=e')
|
|
->setParameter('application',$application);
|
|
|
|
return $this->render('CadolesCoreBundle:Core:home.html.twig',[
|
|
'useheader' => true,
|
|
'usemenu' => false,
|
|
'usesidebar' => false,
|
|
'etabs' => $etabs->getQuery()->getResult(),
|
|
'totalservers' => count($servers->getQuery()->getResult()),
|
|
'totalbymodules' => $totalmodules->getQuery()->getResult(),
|
|
'totalbyversions' => $totalversions->getQuery()->getResult(),
|
|
'totalbyacademies' => $totalbyacademies->getQuery()->getResult(),
|
|
'totalbysecteurs' => $totalbysecteurs->getQuery()->getResult(),
|
|
'totalbynatures' => $totalbynatures->getQuery()->getResult(),
|
|
'by' => "application",
|
|
'servers' => $servers->getQuery()->getResult(),
|
|
'byname' => $application,
|
|
|
|
]);
|
|
}
|
|
|
|
public function serverAction($id,Request $request)
|
|
{
|
|
$em = $this->getDoctrine()->getManager();
|
|
$server=$em->getRepository("CadolesCoreBundle:Server")->find($id);
|
|
return $this->render('CadolesCoreBundle:Core:server.html.twig',[
|
|
'useheader' => false,
|
|
'usemenu' => false,
|
|
'usesidebar' => false,
|
|
'server' => $server
|
|
]);
|
|
}
|
|
}
|