<?php
namespace App\Repository\Users\User;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Tools\Pagination\Paginator;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use App\Entity\Users\User\User;
/**
* UserRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class UserRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, User::class);
}
public function findUserNotIn($liste)// cette fonction n'est pas encore utilisée
{
$query = $this->createQueryBuilder('u')
->leftJoin('u.imgprofil','ip')
->leftJoin('u.imgcouverture','ic')
->addSelect('ip')
->addSelect('ic')
->where('u.id NOT(IN (:liste))')
->setParameter('liste', $liste)
->orderBy('u.dernierevisite','DESC')
->getQuery();
return $query->getResult();
}
public function suggestionuservisit()
{
$query = $this->createQueryBuilder('u')
->leftJoin('u.imgprofil','ip')
->leftJoin('u.imgcouverture','ic')
->addSelect('ip')
->addSelect('ic')
->orderBy('u.dernierevisite','DESC')
->setMaxResults(4000)
->getQuery();
return $query->getResult();
}
public function findLastUser($donnee,$taille)
{
$query = $this->createQueryBuilder('u')
->where('u.nom LIKE :n')
->orWhere('u.prenom LIKE :n')
->orWhere('u.username LIKE :n')
->orWhere('u.tel LIKE :n')
->orWhere('u.tcode LIKE :n')
->setParameter('n','%'.$donnee.'%')
->orderBy('u.nom', 'ASC')
->setMaxResults($taille)
->getQuery();
return $query->getResult();
}
public function searchinguserpage($donnee,$page,$nombreParPage)
{
// On déplace la vérification du numéro de page dans cette méthode
if ($page < 1){
throw new \InvalidArgumentException('Page inexistant');
}
$query = $this->createQueryBuilder('u')
->where('CONCAT(CONCAT(u.nom, \' \'),u.prenom) LIKE :n')
->setParameter('n','%'.$donnee.'%')
->orderBy('u.nom', 'ASC')
->getQuery();
// On définit l'établissemnt à partir duquel commencer la liste
$query->setFirstResult(($page-1) * $nombreParPage)
// Ainsi que le nombre d'établissement à afficher
->setMaxResults($nombreParPage);
// Enfin, on retourne l'objet Paginator correspondant à la requête construite
return new Paginator($query);
}
public function listeUserImport($page,$nombreParPage)
{
$query= $this->createQueryBuilder('u')
->leftJoin('u.imgprofil', 'i')
->leftJoin('u.pays', 'p')
->addselect('i')
->addselect('p')
->orderBy('u.dateinscription', 'ASC')
->getQuery();
// On définit l'établissemnt à partir duquel commencer la liste
$query->setFirstResult(($page-1) * $nombreParPage)
// Ainsi que le nombre d'établissement à afficher
->setMaxResults($nombreParPage);
// Enfin, on retourne l'objet Paginator correspondant à la requête construite
return new Paginator($query);
}
public function findManager()
{
$query = $this->createQueryBuilder('u')
->where('u.roles LIKE :a OR u.roles LIKE :g OR u.roles LIKE :m OR u.roles LIKE :c OR u.roles LIKE :ca OR u.roles LIKE :ma OR u.roles LIKE :co')
->setParameter('a','%ROLE_ADMIN%')
->setParameter('g','%ROLE_GESTION%')
->setParameter('m','%ROLE_ADMIN_MPLACE%')
->setParameter('c','%ROLE_COMMERCIAL_MPLACE%')
->setParameter('ca','%ROLE_CAISSE_MPLACE%')
->setParameter('ma','%ROLE_MAGASIN_MPLACE%')
->setParameter('co','%ROLE_COMPTABLE_MPLACE%')
->orderBy('u.nom', 'ASC')
->getQuery();
return $query->getResult();
}
}