<?php
namespace App\Repository;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use App\Entity\Usuario;
use App\Utils\CustomPaginator;
/**
* @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 ServiceEntityRepository implements PasswordUpgraderInterface
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Usuario::class);
}
/**
* Used to upgrade (rehash) the user's password automatically over time.
*/
public function upgradePassword(UserInterface $user, string $newEncodedPassword): void
{
if (!$user instanceof Usuario) {
throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', \get_class($user)));
}
$user->setPassword($newEncodedPassword);
$this->_em->persist($user);
$this->_em->flush();
}
public function getAllUsers($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (isset($data['username']) && '' != $data['username']) {
$query->andWhere('(
usuario.username like :username
)');
$parameters[':username'] = '%' . $data['username'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query->andWhere('(
usuario.UsuarioNombre like :nombre
)');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['apellidos']) && '' != $data['apellidos']) {
$query->andWhere('(
usuario.UsuarioApe like :apellidos
)');
$parameters[':apellidos'] = '%' . $data['apellidos'] . '%';
}
if (isset($data['email']) && '' != $data['email']) {
$query->andWhere('(
usuario.UsuarioEmail like :email
)');
$parameters[':email'] = '%' . $data['email'] . '%';
}
if (isset($data['telefono']) && '' != $data['telefono']) {
$query->andWhere('(
usuario.UsuarioTelefono like :telefono
)');
$parameters[':telefono'] = '%' . $data['telefono'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$query->getQuery();
//dd($query->getQuery()->getResult());
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllUsersActivos($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->leftJoin('usuario.ordenes', 'orden')
->andWhere('orden.ordenFinalizada is null');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (isset($data['username']) && '' != $data['username']) {
$query->andWhere('(
usuario.username like :username
)');
$parameters[':username'] = '%' . $data['username'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query->andWhere('(
usuario.UsuarioNombre like :nombre
)');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['apellidos']) && '' != $data['apellidos']) {
$query->andWhere('(
usuario.UsuarioApe like :apellidos
)');
$parameters[':apellidos'] = '%' . $data['apellidos'] . '%';
}
if (isset($data['email']) && '' != $data['email']) {
$query->andWhere('(
usuario.UsuarioEmail like :email
)');
$parameters[':email'] = '%' . $data['email'] . '%';
}
if (isset($data['telefono']) && '' != $data['telefono']) {
$query->andWhere('(
usuario.UsuarioTelefono like :telefono
)');
$parameters[':telefono'] = '%' . $data['telefono'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$query->getQuery();
//dd($query->getQuery()->getResult());
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllUsersAusente($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->leftJoin('usuario.ordenes', 'orden');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (isset($data['username']) && '' != $data['username']) {
$query->andWhere('(
usuario.username like :username
)');
$parameters[':username'] = '%' . $data['username'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query->andWhere('(
usuario.UsuarioNombre like :nombre
)');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['apellidos']) && '' != $data['apellidos']) {
$query->andWhere('(
usuario.UsuarioApe like :apellidos
)');
$parameters[':apellidos'] = '%' . $data['apellidos'] . '%';
}
if (isset($data['email']) && '' != $data['email']) {
$query->andWhere('(
usuario.UsuarioEmail like :email
)');
$parameters[':email'] = '%' . $data['email'] . '%';
}
if (isset($data['telefono']) && '' != $data['telefono']) {
$query->andWhere('(
usuario.UsuarioTelefono like :telefono
)');
$parameters[':telefono'] = '%' . $data['telefono'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$query->getQuery();
//dd($query->getQuery()->getResult());
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllEmpleados($data, $currentPage = 1, $limit = 12)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->andWhere('usuario.UsuarioCodigo is not null');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (isset($data['username']) && '' != $data['username']) {
$query->andWhere('(
usuario.username like :username
)');
$parameters[':username'] = '%' . $data['username'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query->andWhere('(
usuario.UsuarioNombre like :nombre
)');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['apellidos']) && '' != $data['apellidos']) {
$query->andWhere('(
usuario.UsuarioApe like :apellidos
)');
$parameters[':apellidos'] = '%' . $data['apellidos'] . '%';
}
if (isset($data['email']) && '' != $data['email']) {
$query->andWhere('(
usuario.UsuarioEmail like :email
)');
$parameters[':email'] = '%' . $data['email'] . '%';
}
if (isset($data['telefono']) && '' != $data['telefono']) {
$query->andWhere('(
usuario.UsuarioTelefono like :telefono
)');
$parameters[':telefono'] = '%' . $data['telefono'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->getQuery();
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllEmpleadosByProceso($data, $currentPage = 1, $limit = 12, $sort, $order, int $procesoId)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->leftJoin('usuario.ordenes', 'orden')
->leftJoin('orden.ordenFase', 'fase')
->leftJoin('fase.Proceso', 'proceso')
->andWhere('proceso.id = :proceso');
$parameters[':proceso'] = $procesoId;
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->getQuery();
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllEmpleadosSchneider($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->leftJoin('usuario.ordenes', 'orden')
->leftJoin('orden.ordenFase', 'fase')
->leftJoin('fase.Proceso', 'proceso')
->andWhere('proceso.ProcesoSchneider = 1')
->andWhere('orden.ordenFinalizada is null');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->getQuery();
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getAllEmpleadosProyecto($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario')
->leftJoin('usuario.ordenes', 'orden')
->leftJoin('orden.ordenFase', 'fase')
->leftJoin('fase.Proceso', 'proceso')
->andWhere('proceso.ProcesoSchneider = 0')
->andWhere('orden.ordenFinalizada is null');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
usuario.username like :where1 or
usuario.UsuarioNombre like :where1 or
usuario.UsuarioApe like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->getQuery();
$paginator = new CustomPaginator($query);
$result = $paginator->paginate($currentPage, $limit);
if ($result['count'] > 0 && $result['maxPages'] < $result['thisPage']) {
$result = $paginator->paginate(1, $limit);
}
return $result;
}
public function getUserByCodigo($codigo)
{
$parameters = array();
$query = $this->createQueryBuilder('usuario');
$query->andWhere('(
usuario.UsuarioCodigo like :where1
)');
$parameters[':where1'] = $codigo;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getOneOrNullResult();
return $results;
}
public function filter($data, $partial = "", $getQuery = false)
{
$parameters = array();
$query = $this
->createQueryBuilder('usuario');
if ($partial != "") {
$query->select($partial);
}
if (isset($data['texto']) && $data['texto'] != "") {
$query->andwhere('
usuario.username like :like OR
usuario.UsuarioNombre like :like OR
usuario.UsuarioApe like :like OR
CAST(usr.id as nchar) = :equal
');
$parameters[':like'] = '%' . $data['texto'] . '%';
$parameters[':equal'] = $data['texto'];
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
if ($getQuery) {
return $query->getQuery();
}
return $query->getQuery()->getResult();
}
}