src/Service/InformationsComtpeService.php line 76

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use Doctrine\ORM\EntityManager;
  4. use Symfony\Bundle\FrameworkBundle\Routing\Router;
  5. use App\Entity\Parametre;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  8. use Symfony\Contracts\Translation\TranslatorInterface;
  9. use App\Repository\TypeConnexionRepository;
  10. use App\Repository\QualiteRepository;
  11. use App\Repository\ParametreRepository;
  12. use App\Repository\SpecialiteRepository;
  13. use App\Repository\ServiceRepository;
  14. use App\Repository\UtilisateurRepository;
  15. use App\Entity\SessionConnexion;
  16. use App\Entity\TypeConnexion;
  17. use Psr\Container\ContainerInterface;
  18. class InformationsComtpeService 
  19. {
  20.     /**
  21.      * @var Container
  22.      */
  23.      private $container;
  24.     /**
  25.      * @var AuthorizationCheckerInterface
  26.      */
  27.      private $authorizationChecker;
  28.     private $qualiteRepo;
  29.     private $specialiteRepo;
  30.     private $serviceRepo;
  31.     private $utilisateurRepo;
  32.     private $parametreRepo;
  33.     private $typeconnexion;
  34.     private $translator;
  35.     /**
  36.      * Constructor
  37.      *
  38.      * @param Container $container
  39.      */
  40.     public function __construct(ContainerInterface $container,
  41.         AuthorizationCheckerInterface $authorizationChecker,
  42.         QualiteRepository $qualiteRepo
  43.         SpecialiteRepository $specialiteRepo
  44.         ServiceRepository $serviceRepo,
  45.         UtilisateurRepository $utilisateurRepo
  46.         ParametreRepository $parametreRepo,
  47.         TypeConnexionRepository $typeconnexion,
  48.         TranslatorInterface $translator
  49.     ){
  50.         $this->translator $translator;
  51.         $this->container $container;
  52.         $this->authorizationChecker $authorizationChecker;
  53.         $this->qualiteRepo $qualiteRepo;
  54.         $this->specialiteRepo $specialiteRepo;
  55.         $this->serviceRepo $serviceRepo;
  56.         $this->utilisateurRepo $utilisateurRepo;
  57.         $this->typeconnexion $typeconnexion;
  58.         $this->parametreRepo $parametreRepo;
  59.     }
  60.     public function InitLang()
  61.     {
  62.         $session $this->container->get('request_stack')->getSession();
  63.         
  64.         //Si pas de locale en session, on set la default_locale dans config/packages/translation.yml
  65.         if( $session->get('_locale') == null )
  66.         {   
  67.             $session->set('_locale'$this->container->get('request_stack')->getCurrentRequest()->getLocale());
  68.         }
  69.         // Sinon, si elle est defini en session, on set la locale du porjet avec
  70.         else {
  71.             $this->translator->setLocale($session->get('_locale'));
  72.             $request $this->container->get('request_stack')->getCurrentRequest();
  73.             $request->setLocale($session->get('_locale'));
  74.         }
  75.     }
  76.     public function checkConnexion()
  77.     {
  78.         $session $this->container->get('request_stack')->getSession();
  79.         $client_id_adada $session->get('client_id_adada');
  80.         $em $this->container->get('doctrine')->getManager();
  81.         $version_antibiogarde $this->container->getParameter('version_antibiogarde');
  82.         $connexionOK true;
  83.         switch ($version_antibiogarde
  84.         {
  85.             case 'web_edition':
  86.                 // récupération du type de connexion "PC"
  87.                 // $typeConnexions = $em->getRepository('SchemaBundle:TypeConnexion');                
  88.                 $typeconnexion $this->typeconnexion->findOneBySlug('pc');
  89.                 $connexion $em->createQueryBuilder()
  90.                                         ->select("s")
  91.                                         ->from(SessionConnexion::class, 's')
  92.                                         ->leftJoin(TypeConnexion::class, 't''WITH''t.idTypeConnexion = s.TypeConnexion')
  93.                                         ->andWhere('t.slug = :typeConnexion')->setParameter('typeConnexion'$typeconnexion->getSlug())
  94.                                         ->andWhere('s.idUtilisateurBoutique = :utilisateurBoutique')->setParameter('utilisateurBoutique'$session->get('webedition_id_utilisateur_boutique'))      
  95.                                         ->andWhere('s.session = :session')->setParameter('session',$session->getId())
  96.                                         ->getQuery()->getResult();
  97.                 if (count($connexion) == 0)
  98.                 {
  99.                     $connexionOK false;
  100.                 }
  101.                 break;
  102.             case 'web_hopital':
  103.                 $adada_connection $this->container->get('doctrine')->getConnection('adada');
  104.                  $sql "SELECT *
  105.                          FROM ADADA_CLIENT 
  106.                          WHERE client_date_fin_installation >= :date_now
  107.                          AND client_id = :client_id
  108.                          AND client_produit like '%hopital_web%'";
  109.                 $stmt $adada_connection->prepare($sql);
  110.                 $stmt->bindValue('client_id'$session->get("client_id_adada"));
  111.                 $stmt->bindValue('date_now'date('Y-m-d'));
  112.                 $user $stmt->execute()->fetchAll();
  113.                 if (count($user) == 0
  114.                 {
  115.                     $connexionOK false;
  116.                 }
  117.                 break;
  118.             case 'intranet':
  119.                     $recupOK $this->container->get('authentication_service')->informationsKey($client_identifiant,$client_date_fin,$client_idadada,$client_ip,$errors);
  120.                     if ($recupOK
  121.                     {
  122.                         $server_addr '';
  123.                         if (isset($_SERVER['SERVER_ADDR']) && $_SERVER['SERVER_ADDR'] <> ''
  124.                         { 
  125.                             $server_addr $_SERVER['SERVER_ADDR']; 
  126.                         } else { 
  127.                             $server_addr gethostbyname($_SERVER['SERVER_NAME']); 
  128.                         }
  129.                         $clefOK = (md5($client_identifiant) == md5($this->container->getParameter('client_clef_intranet')));
  130.                         $dateOK = (date("Y-m-d") < $client_date_fin);
  131.                         $ipOK = ($server_addr == $client_ip);
  132.                         $idOK = ($this->container->getParameter('client_id_adada_intranet') == $client_idadada);
  133.                         if(!$clefOK || !$dateOK || !$ipOK || !$idOK )
  134.                         {
  135.                             $connexionOK false;
  136.                         }
  137.                     }
  138.                     else
  139.                     {
  140.                         $connexionOK false;
  141.                     }
  142.                 break;
  143.             default:
  144.                 # code...
  145.                 break;
  146.         }
  147.         if (!$connexionOK
  148.         {
  149.            $this->container->get('security.token_storage')->setToken(null);
  150.            $this->container->get('request_stack')->getSession()->invalidate();
  151.         }
  152.     }
  153.     public function getDonneesFormulaire()
  154.     {
  155.         $session $this->container->get('request_stack')->getSession();
  156.         $client_id_adada $session->get('client_id_adada');
  157.         
  158.         $qualites $this->qualiteRepo->findAll();
  159.         $specialites $this->specialiteRepo->findAll();
  160.         $services $this->serviceRepo->findby(array('clientIdAdada' => $client_id_adada));
  161.         $returned = array();
  162.         $returned['qualites'] = $qualites;
  163.         $returned['specialites'] = $specialites;
  164.         $returned['services'] = $services;
  165.         return $returned;
  166.     }
  167.     public function getInfoCompte()
  168.     {
  169.         $datas = array();
  170.         if ($this->container->getParameter('version_antibiogarde') != 'web_edition'
  171.         {
  172.             $session $this->container->get('request_stack')->getSession();
  173.             $client_id_adada $session->get('client_id_adada');
  174.             $username $session->get('username');
  175.                     
  176.             $utilisateur $this->utilisateurRepo->findOneby(array(
  177.                         'clientIdAdada' => $client_id_adada,
  178.                         'idUtilisateur' =>  $session->get('id_utilisateur')));
  179.             $datas['utilisateur'] = $utilisateur;
  180.             if ($this->authorizationChecker->isGranted('ROLE_REFERENT'))
  181.             {
  182.                 /*********************** COORDONNEES DU COMPTE ***********************/
  183.                 $coord = array();
  184.                 if ($this->container->getParameter('version_antibiogarde') == 'web_hopital'
  185.                 {
  186.                     $boutique_adada $this->container->get('doctrine')->getConnection('adada');
  187.                     $stmt $boutique_adada->prepare("SELECT client_nom as nom_etablissement, client_cle_url as clef_etablissement, client_vidal as connexion_vidal, client_vidal_token as clef_vidal, client_cbip as connexion_cbip
  188.                         FROM ADADA_CLIENT
  189.                         WHERE client_id = :client_id");
  190.                     $stmt->bindValue('client_id'$client_id_adada);
  191.                     $stmt $stmt->execute();
  192.                     $result $stmt->fetchAll();
  193.                     if (count($result) == 1)
  194.                     {
  195.                         $coord $stmt->fetch();
  196.                         $stmt $boutique_adada->prepare("SELECT client_ip_ip as ip
  197.                         FROM ADADA_CLIENT_IP
  198.                         WHERE client_ip_id_client = :client_id");
  199.                         $stmt->bindValue('client_id'$client_id_adada);
  200.                         $stmt $stmt->execute();
  201.                         $ips = array();
  202.                         while($ip $stmt->fetch())
  203.                         {
  204.                             $ips[] = $ip['ip'];
  205.                         }
  206.                         $coord['ips'] = $ips;
  207.                         $coord['clef_etablissement'] = $session->get('cle_url');
  208.                         $coord['finess'] = $session->get('finess');
  209.                         foreach ($result[0] as $key => $value) {
  210.                             $coord[$key] = $value;
  211.                         }
  212.                     }
  213.                 }
  214.                 elseif ($this->container->getParameter('version_antibiogarde') == 'intranet'
  215.                 {
  216.                     $coord['nom_etablissement'] = $this->container->getParameter('nom_hopital_intranet');
  217.                     $coord['connexion_vidal'] = $this->container->getParameter('activation_interfacage_vidal');
  218.                     $coord['clef_vidal'] = $this->container->getParameter('token_interfacage_vidal');
  219.                     $coord['lien_activation'] = $this->container->getParameter('lien_activation_intranet');
  220.                 }
  221.                 $personnalisations $this->parametreRepo->findParametreAffichagePersonnalisations($client_id_adada);
  222.                 $coord['affichage_personnalisation'] = $personnalisations->getValeur();
  223.                 
  224.                 $datas['coordonnees'] = $coord;
  225.                 /*********************** INFORMATIONS DU COMPTE ***********************/
  226.                 //ADMINS
  227.                 $infos = array();
  228.                 $administrateurs $this->utilisateurRepo->findAdministrateurForIdAdada($client_id_adada);
  229.                 $infos['administrateurs'] = $administrateurs;
  230.                 //ABONNEMENT
  231.                 if ($this->container->getParameter('version_antibiogarde') == 'web_hopital'
  232.                 {
  233.                     $stmt $boutique_adada->prepare("SELECT DATE_FORMAT(client_date_fin_installation,'%d/%m/%Y') as date_fin_abonnement
  234.                         FROM ADADA_CLIENT
  235.                         WHERE client_id = :client_id");
  236.                     $stmt->bindValue('client_id'$client_id_adada);
  237.                     $stmt $stmt->execute();
  238.                     if ($stmt->rowCount() == 1)
  239.                     {
  240.                         $date $stmt->fetch();
  241.                         $infos['date_fin_abonnement'] = $date['date_fin_abonnement'];
  242.                     }
  243.                 }
  244.                 elseif ($this->container->getParameter('version_antibiogarde') == 'intranet'
  245.                 {  
  246.                     $recupOK $this->container->get('authentication_service')->informationsKey($client_clef_fichier,$date_validite,$client_idadada,$client_ip,$errors);
  247.                     if ($recupOK)
  248.                     {
  249.                         $infos['date_fin_abonnement'] =  date("d/m/Y",strtotime($date_validite));
  250.                         $infos['pass_key'] =  $client_clef_fichier;
  251.                     }
  252.                 }
  253.                 $factures = array();
  254.                 //FACTURES
  255.                 if (($this->container->getParameter('version_antibiogarde') == 'web_hopital')) 
  256.                 {
  257.                      $stmt $boutique_adada->prepare("SELECT DATE_FORMAT(af.facture_date,'%d/%m/%Y') as facture_date, af.facture_numero, af.fichier_facture, af.facture_libelle
  258.                         FROM ADADA_FACTURE af
  259.                         WHERE af.client_id = :client_id
  260.                         ORDER BY af.facture_date desc");
  261.                     $stmt->bindValue('client_id'$client_id_adada);
  262.                     $stmt $stmt->execute();
  263.                     while($facture $stmt->fetch())
  264.                     {
  265.                         $factures[] = $facture;
  266.                     }
  267.                 }
  268.                 $infos['factures'] = $factures;
  269.                 $datas['informations'] = $infos;
  270.                 /******************** UTILISATEURS INSCRITS *********************/
  271.                 $utilisateurs $this->utilisateurRepo->findBasicUtilisateursForIdAdada($client_id_adada);
  272.                 $datas['util_inscrits'] = $utilisateurs;
  273.             }
  274.         }
  275.         return $datas;
  276.     }
  277. }