<?php
namespace App\Repository;
use App\Entity\ProcesoBloqFases;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use App\Utils\CustomPaginator;
/**
* @method ProcesoBloqFases|null find($id, $lockMode = null, $lockVersion = null)
* @method ProcesoBloqFases|null findOneBy(array $criteria, array $orderBy = null)
* @method ProcesoBloqFases[] findAll()
* @method ProcesoBloqFases[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ProcesoBloqFasesRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, ProcesoBloqFases::class);
}
// /**
// * @return ProcesoBloqFases[] Returns an array of ProcesoBloqFases objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->orderBy('p.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?ProcesoBloqFases
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
public function getFaseByCodigo($codigo)
{
$parameters = array();
$query = $this->createQueryBuilder('fase');
$query->andWhere('(
fase.ProcesoBloqFasBarcode like :where1
)');
$parameters[':where1'] = $codigo;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getOneOrNullResult();
return $results;
}
public function getAllProcesos($data, $currentPage = 1, $limit = 12, $sort, $order, $idProceso)
{
$parameters = array();
$query = $this->createQueryBuilder('ProcFases')
->leftJoin('ProcFases.Proceso', "proceso");
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
ProcFases.id like :where1 or
ProcFases.FasesLTotal like :where1 or
ProcFases.ProcesoBloqFasCreated like :where1 or
ProcFases.ProcesoBloqFasNombre like :where1
)');
$parameters[':where1'] = "'%" . $data['value'] . "%'";
}
if (isset($idProceso) && $idProceso != "") {
$query->andWhere('(
proceso.id = :proceso
)');
$parameters[':proceso'] = $idProceso;
}
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 getAllFaseSelect($data, $currentPage = 1, $limit = 30, $sort, $order = "DESC", $barcode = null)
{
$parameters = [];
$query = $this->createQueryBuilder('ProcFases')
->leftJoin('ProcFases.Proceso', "proceso")
->leftJoin('proceso.procMolde', 'molde');
if (isset($data['texto']) && '' != $data['texto']) {
$query->andWhere('(
ProcFases.ProcesoBloqFasNombre like :texto or
molde.moldReferencia like :texto or
proceso.ProcReferencia like :texto or
proceso.ProcNombre like :texto or
molde.moldDescripcion like :texto
)');
$parameters[':texto'] = '%' . $data['texto'] . '%';
}
if (isset($data['idProceso']) && '' != $data['idProceso']) {
$query->andWhere('(
proceso.id = :idProceso
)');
$parameters[':idProceso'] = $data['idProceso'];
}
if ($barcode) {
$query->andWhere('(
ProcFases.ProcesoBloqFasBarcode is not null
)');
}
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 getMinutosUtilizados(int $procesoId)
{
$parameters = [];
$query = $this->createQueryBuilder('ProcFases');
$query
->select('SUM(ProcFases.ProcesoHorasUtilizadas)')
->andWhere('(
ProcFases.Proceso = :proceso
)')
->groupBy('ProcFases.Proceso');
$parameters[':proceso'] = $procesoId;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
public function getMinutosOfertados(int $procesoId)
{
$parameters = [];
$query = $this->createQueryBuilder('ProcFases');
$query
->select('SUM(ProcFases.FasesLTotal)')
->andWhere('(
ProcFases.Proceso = :proceso
)')
->groupBy('ProcFases.Proceso');
$parameters[':proceso'] = $procesoId;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
}