src/Repository/Ajustes/UsuarioRepository.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Repository\Ajustes;
  3. use App\Entity\Ajustes\Usuario;
  4. use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
  5. use Doctrine\Persistence\ManagerRegistry;
  6. use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
  7. use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
  8. use Symfony\Component\Security\Core\User\UserInterface;
  9. use Symfony\Component\Security\Core\Security;
  10. /**
  11.  * @method Usuario|null find($id, $lockMode = null, $lockVersion = null)
  12.  * @method Usuario|null findOneBy(array $criteria, array $orderBy = null)
  13.  * @method Usuario[]    findAll()
  14.  * @method Usuario[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
  15.  */
  16. class UsuarioRepository extends ServiceEntityRepository implements PasswordUpgraderInterface
  17. {
  18.     public function __construct(ManagerRegistry $registrySecurity $security)
  19.     {
  20.         parent::__construct($registryUsuario::class);
  21.         $this->security $security;
  22.     }
  23.     /**
  24.      * Used to upgrade (rehash) the user's password automatically over time.
  25.      */
  26.     public function upgradePassword(UserInterface $userstring $newEncodedPassword): void
  27.     {
  28.         if (!$user instanceof Usuario) {
  29.             throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.'\get_class($user)));
  30.         }
  31.         $user->setPassword($newEncodedPassword);
  32.         $this->_em->persist($user);
  33.         $this->_em->flush();
  34.     }
  35.     // /**
  36.     //  * @return Usuario[] Returns an array of Usuario objects
  37.     //  */
  38.     /*
  39.     public function findByExampleField($value)
  40.     {
  41.         return $this->createQueryBuilder('u')
  42.             ->andWhere('u.exampleField = :val')
  43.             ->setParameter('val', $value)
  44.             ->orderBy('u.id', 'ASC')
  45.             ->setMaxResults(10)
  46.             ->getQuery()
  47.             ->getResult()
  48.         ;
  49.     }
  50.     */
  51.     /*
  52.     public function findOneBySomeField($value): ?Usuario
  53.     {
  54.         return $this->createQueryBuilder('u')
  55.             ->andWhere('u.exampleField = :val')
  56.             ->setParameter('val', $value)
  57.             ->getQuery()
  58.             ->getOneOrNullResult()
  59.         ;
  60.     }
  61.     */
  62.     public function filter($data$partial ""$getQuery false$limit null){
  63.         $parameters = array();
  64.         $query      $this
  65.             ->createQueryBuilder('usr')
  66.             ->leftJoin('usr.UsuRoles''rls')
  67.         ;
  68.         if($partial != ""){
  69.             $query->select($partial);
  70.         }
  71.         if(($data['texto']['texto'] ?? $data['texto'] ?? '') != ''){
  72.             $query->andwhere('
  73.                 usr.UsuUsername like :where1 OR
  74.                 usr.UsuName like :where1 OR
  75.                 usr.UsuSurname like :where1
  76.             ');
  77.             $parameters[':where1'] = '%'.($data['texto']['texto'] ?? $data['texto']).'%';
  78.         }
  79.         if(($data['enabled'] ?? '') != ''){
  80.             $query->andwhere('usr.UsuEnabled = :ena');
  81.             $parameters[':ena'] = $data['enabled'];
  82.         }
  83.         if(isset($data['roles']) && $data['roles'] != "" && !empty($data['roles'] )){
  84.             $query->andwhere('rls.id in (:rls)');
  85.             $parameters[':rls'] = $data['role'];
  86.         }
  87.         if(!empty($parameters)){
  88.             $query->setParameters($parameters);
  89.         }
  90.         if ($limit != null){
  91.             $query->setMaxResults($limit);
  92.         }
  93.         
  94.         if($getQuery){
  95.             return $query->getQuery();
  96.         }
  97.         return $query->getQuery()->getResult();
  98.     }
  99.     // Form usuarios coordinadores
  100.     public function findCoordinador(){
  101.         $query      $this
  102.             ->createQueryBuilder('usr')
  103.             ->where('usr.UsuEnabled = true')
  104.             ->andWhere('usr.UsuCoordinador = true')
  105.         ;
  106.         return $query;
  107.     }
  108.     public function findCoordinadorCommand(){
  109.         $query      $this
  110.             ->createQueryBuilder('usr')
  111.             ->leftJoin('usr.UsuRoles''Role')
  112.             ->andWhere('Role.id = 10')
  113.         ;
  114.         return $query;
  115.     }
  116.     // Form usuarios comerciales
  117.     public function findComercial($comercial null){
  118.         $query      $this
  119.             ->createQueryBuilder('usr')
  120.             ->where('usr.UsuEnabled = true')
  121.             ->andWhere('usr.UsuCoordinador = false or usr.UsuCoordinador is null')
  122.         ;
  123.         if ($this->security->isGranted('ROLE_COORDINADOR')) {
  124.             $query->andwhere('usr.id in (:im) or usr.id in (:UserCoords) ');
  125.             $parameters[':im'] = $this->security->getUser()->getId();
  126.             $parameters[':UserCoords'] = $this->security->getUser()->getUsuCoordinados();
  127.         }elseif ($this->security->isGranted('ROLE_COMERCIAL')) {
  128.             $query->andwhere('usr.id in (:im)');
  129.             $parameters[':im'] = $this->security->getUser()->getId();
  130.         }
  131.         if($comercial != "" && !empty($comercial)){
  132.             $query->orwhere('usr.id in (:comercial)');
  133.             $parameters[':comercial'] = $comercial;
  134.         }
  135.         if(!empty($parameters)){
  136.             $query->setParameters($parameters);
  137.         }
  138.         return $query;
  139.     }
  140.     // Form usuarios comerciales
  141.     public function findComercialVista($getQuery=false){
  142.         $query      $this
  143.             ->createQueryBuilder('usr')
  144.             ->where('usr.UsuCoordinador = true')
  145.         ;
  146.         if ($this->security->isGranted('ROLE_COORDINADOR')) {
  147.             $query->andwhere('usr.id in (:im) or usr.id in (:UserCoords) ');
  148.             $parameters[':im'] = $this->security->getUser()->getId();
  149.             $parameters[':UserCoords'] = $this->security->getUser()->getUsuCoordinados();
  150.         }elseif ($this->security->isGranted('ROLE_COMERCIAL')) {
  151.             $query->andwhere('usr.id in (:im)');
  152.             $parameters[':im'] = $this->security->getUser()->getId();
  153.         }
  154.         if(!empty($parameters)){
  155.             $query->setParameters($parameters);
  156.         }
  157.         if($getQuery){
  158.             return $query->getQuery();
  159.         }
  160.         return $query->getQuery()->getResult();
  161.     }
  162.     // Find ususarios que dependen de un coordinador
  163.     public function findUsuariosVista($coordinador,$getQuery=false){
  164.         $parameters = array();
  165.         $query      $this
  166.             ->createQueryBuilder('usr')
  167.             //->where('usr.UsuEnabled = true')
  168.             ->Where('usr.UsuCoordinador = false OR usr.UsuCoordinador is null')
  169.             ->andWhere('usr.UsuCoordinadoPor = :id')
  170.         ;
  171.         $parameters[':id'] = $coordinador->getId();
  172.         if ($this->security->isGranted('ROLE_COORDINADOR')) {
  173.             $query->andwhere('usr.id in (:im) or usr.id in (:UserCoords) ');
  174.             $parameters[':im'] = $this->security->getUser()->getId();
  175.             $parameters[':UserCoords'] = $this->security->getUser()->getUsuCoordinados();
  176.         }elseif ($this->security->isGranted('ROLE_COMERCIAL')) {
  177.             $query->andwhere('usr.id in (:im)');
  178.             $parameters[':im'] = $this->security->getUser()->getId();
  179.         }
  180.         if(!empty($parameters)){
  181.             $query->setParameters($parameters);
  182.         }
  183.         if($getQuery){
  184.             return $query->getQuery();
  185.         }
  186.         return $query->getQuery()->getResult();
  187.     }
  188.     // Find ususarios que no dependen de un coordinador ni son coordinadors
  189.     public function findUsuariosNoCoordVista($getQuery=false){
  190.         $parameters = array();
  191.         $query      $this
  192.             ->createQueryBuilder('usr')
  193.             //->where('usr.UsuEnabled = true')
  194.             ->Where('usr.UsuCoordinador = false OR usr.UsuCoordinador is null')
  195.             ->andWhere('usr.UsuCoordinadoPor = false OR usr.UsuCoordinadoPor is null')
  196.         ;
  197.         if ($this->security->isGranted('ROLE_COORDINADOR')) {
  198.             $query->andwhere('usr.id in (:im) or usr.id in (:UserCoords) ');
  199.             $parameters[':im'] = $this->security->getUser()->getId();
  200.             $parameters[':UserCoords'] = $this->security->getUser()->getUsuCoordinados();
  201.         }elseif ($this->security->isGranted('ROLE_COMERCIAL')) {
  202.             $query->andwhere('usr.id in (:im)');
  203.             $parameters[':im'] = $this->security->getUser()->getId();
  204.         }
  205.         
  206.         if(!empty($parameters)){
  207.             $query->setParameters($parameters);
  208.         }
  209.         if($getQuery){
  210.             return $query->getQuery();
  211.         }
  212.         return $query->getQuery()->getResult();;
  213.     }
  214. }