<?php
namespace App\Repository;
use App\Entity\Orden;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use App\Utils\CustomPaginator;
/**
* @method Orden|null find($id, $lockMode = null, $lockVersion = null)
* @method Orden|null findOneBy(array $criteria, array $orderBy = null)
* @method Orden[] findAll()
* @method Orden[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class OrdenRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Orden::class);
}
// /**
// * @return Orden[] Returns an array of Orden objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('o')
->andWhere('o.exampleField = :val')
->setParameter('val', $value)
->orderBy('o.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Orden
{
return $this->createQueryBuilder('o')
->andWhere('o.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
public function getAll($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario')
->leftJoin('Orden.ordenFase', 'Fase')
->leftJoin('Fase.Proceso', 'Proceso');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1 or
Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['proyecto']) && '' != $data['proyecto']) {
$query->andWhere('(
Proceso.ProcNombre like :proyecto
)');
$parameters[':proyecto'] = '%' . $data['proyecto'] . '%';
}
if (isset($data['operario']) && '' != $data['operario']) {
$query->andWhere('(
Operario.UsuarioNombre like :operario
)');
$parameters[':operario'] = '%' . $data['operario'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$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 getAllActivos($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario')
->leftJoin('Orden.ordenFase', 'Fase')
->leftJoin('Fase.Proceso', 'Proceso')
->andWhere('Orden.ordenFinalizada is null');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1 or
Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['proyecto']) && '' != $data['proyecto']) {
$query->andWhere('(
Proceso.ProcNombre like :proyecto
)');
$parameters[':proyecto'] = '%' . $data['proyecto'] . '%';
}
if (isset($data['operario']) && '' != $data['operario']) {
$query->andWhere('(
Operario.UsuarioNombre like :operario
)');
$parameters[':operario'] = '%' . $data['operario'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$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 getAllActivosCentro($data, $idCentro, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario')
->leftJoin('Orden.ordenFase', 'Fase')
->leftJoin('Orden.ordenCentro', 'Centro')
->leftJoin('Fase.Proceso', 'Proceso')
->andWhere('Orden.ordenFinalizada is null')
->andWhere('Centro.id = :idCentro');
$parameters[':idCentro'] = $idCentro;
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1 or
Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['proyecto']) && '' != $data['proyecto']) {
$query->andWhere('(
Proceso.ProcNombre like :proyecto
)');
$parameters[':proyecto'] = '%' . $data['proyecto'] . '%';
}
if (isset($data['operario']) && '' != $data['operario']) {
$query->andWhere('(
Operario.UsuarioNombre like :operario
)');
$parameters[':operario'] = '%' . $data['operario'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$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 getAllByProyecto($data, $currentPage = 1, $limit = 12, $sort, $order, $idProceso)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario')
->leftJoin('Orden.ordenFase', 'Fase')
->leftJoin('Fase.Proceso', 'Proceso')
->andWhere('Proceso.id = :idProceso');
$parameters[':idProceso'] = $idProceso;
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1
Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['proyecto']) && '' != $data['proyecto']) {
$query->andWhere('(
Proceso.ProcNombre like :proyecto
)');
$parameters[':proyecto'] = '%' . $data['proyecto'] . '%';
}
if (isset($data['operario']) && '' != $data['operario']) {
$query->andWhere('(
Operario.UsuarioNombre like :operario
)');
$parameters[':operario'] = '%' . $data['operario'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$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 getAllByCentro($data, $currentPage = 1, $limit = 12, $sort, $order, $idCentro)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario')
->leftJoin('Orden.ordenFase', 'Fase')
->leftJoin('Orden.ordenCentro', 'Centro')
->leftJoin('Fase.Proceso', 'Proceso')
->andWhere('Centro.id = :idCentro');
$parameters[':idCentro'] = $idCentro;
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1 or
Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['proyecto']) && '' != $data['proyecto']) {
$query->andWhere('(
Proceso.ProcNombre like :proyecto
)');
$parameters[':proyecto'] = '%' . $data['proyecto'] . '%';
}
if (isset($data['operario']) && '' != $data['operario']) {
$query->andWhere('(
Operario.UsuarioNombre like :operario
)');
$parameters[':operario'] = '%' . $data['operario'] . '%';
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$query->addOrderBy($sort, $order);
$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 getOrdenesTrabajador($operario, $filter)
{
$parameters = array();
$query = $this->createQueryBuilder('orden')
->leftJoin('orden.ordenOperario', 'operario')
->leftJoin('orden.ordenFase', 'fase')
->leftJoin('orden.ordenCentro', 'centro');
$query->andWhere('(
operario.id = :idOperario and
orden.ordenIniciada is not null and
orden.ordenFinalizada is not null
)');
$parameters[':idOperario'] = $operario;
if (isset($filter['centro']) && '' != $filter['centro']) {
$query->andWhere('centro.id = :centro');
$parameters[':centro'] = $filter['centro'];
}
if (isset($filter['desde']) && '' != $filter['desde']) {
$query->andWhere('orden.ordenIniciada > :desde');
$parameters[':desde'] = $filter['desde'];
}
if (isset($filter['hasta']) && '' != $filter['hasta']) {
$query->andWhere('orden.ordenFinalizada < :hasta');
$parameters[':hasta'] = $filter['hasta'];
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getResult();
return $results;
}
public function getOrdenByUsuarioFase($operario, $fase)
{
$parameters = array();
$query = $this->createQueryBuilder('orden')
->leftJoin('orden.ordenOperario', 'operario')
->leftJoin('orden.ordenFase', 'fase');
$query->andWhere('(
operario.id = :where1 and
fase.id = :where2 and
orden.ordenIniciada is not null and
orden.ordenFinalizada is null
)');
$parameters[':where1'] = $operario;
$parameters[':where2'] = $fase;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getOneOrNullResult();
return $results;
}
public function getCountActivas($idCentro = null)
{
$parameters = [];
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenCentro', 'centro');
$query
->select('count(Orden.id)')
->andWhere('(
Orden.ordenFinalizada is null
)');
if ($idCentro) {
$query
->andWhere('centro.id = :idCentro');
$parameters[':idCentro'] = $idCentro;
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
public function getActivas($operarioCodigo)
{
$parameters = array();
$query = $this->createQueryBuilder('Orden')
->leftJoin('Orden.ordenOperario', 'Operario');
$query->andWhere('(
Operario.UsuarioCodigo like :where1 and
Orden.ordenFinalizada is null
)');
$parameters[':where1'] = $operarioCodigo;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getResult();
return $results;
}
}