<?php
namespace App\Repository;
use App\Entity\Usuario;
use App\Entity\Contrato;
use App\Entity\Cliente;
use Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface;
use \Doctrine\Common\Persistence\ManagerRegistry;
/**
* @method Usuario|null find($id, $lockMode = null, $lockVersion = null)
* @method Usuario|null findOneBy(array $criteria, array $orderBy = null)
* @method Usuario[] findAll()
* @method Usuario[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class UsuarioRepository extends AbstractRepository implements UserLoaderInterface
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Usuario::class);
}
public function loadUserByUsername($username)
{
return $this->createQueryBuilder('u')
->where('u.username = :username and u.excluido = 0')
->setParameter('username', $username)
->getQuery()
->getOneOrNullResult();
}
public function findByUser(Usuario $usuario, array $criteria = null, array $orderBy = null, $limit = null, $offset = null)
{
$resultSet = parent::findByUser($usuario, $criteria, $orderBy, $limit, $offset);
$resultSetFiltered = array_values(array_filter($resultSet, function ($element) {
return false === $element->isDispositivo();
}));
return $resultSetFiltered;
}
public function getFilterByCliente(Cliente $cliente): array
{
return ['cliente' => $cliente];
}
public function getFilterByContrato(Contrato $contrato): array
{
return ['contrato' => $contrato];
}
}