<?php
namespace App\Repository;
use App\Entity\Proceso;
use App\Utils\CustomPaginator;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method null|Proceso find($id, $lockMode = null, $lockVersion = null)
* @method null|Proceso findOneBy(array $criteria, array $orderBy = null)
* @method Proceso[] findAll()
* @method Proceso[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class ProcesoRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Proceso::class);
}
// /**
// * @return Proceso[] Returns an array of Proceso 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): ?Proceso
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
public function getAllProcesos($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso')
->leftJoin('Proceso.procOferta', 'Oferta')
->leftJoin('Proceso.procMolde', 'Molde')
->leftJoin('Proceso.procTipo', 'Tipo')
->leftJoin('Oferta.OfPresupuesto', 'Presupuesto');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['Referencia']) && '' != $data['Referencia']) {
$query
->andWhere('Proceso.ProcReferencia like :Referencia')
->andWhere('Proceso.ProcReferencia is not null
');
$parameters[':Referencia'] = '%' . $data['Referencia'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query
->andWhere('Proceso.ProcNombre like :nombre')
->andWhere('Proceso.ProcNombre is not null
');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['oferta']) && '' != $data['oferta']) {
$query
->andWhere('Oferta.OfNombre like :oferta')
->andWhere('Oferta.OfNombre is not null
');
$parameters[':oferta'] = '%' . $data['oferta'] . '%';
}
if (isset($data['presupuesto']) && '' != $data['presupuesto']) {
$query
->andWhere('Presupuesto.PresuReferencia like :presupuesto')
->andWhere('Presupuesto.PresuReferencia is not null
');
$parameters[':presupuesto'] = '%' . $data['presupuesto'] . '%';
}
if (isset($data['molde']) && '' != $data['molde']) {
$query
->andWhere('Molde.moldReferencia like :molde')
->andWhere('Molde.moldReferencia is not null
');
$parameters[':molde'] = '%' . $data['molde'] . '%';
}
if (isset($data['tipo']) && '' != $data['tipo']) {
$query
->andWhere('Tipo.PTipoNombre like :tipo')
->andWhere('Tipo.PTipoNombre is not null
');
$parameters[':tipo'] = '%' . $data['tipo'] . '%';
}
if (isset($data['estado']) && '' != $data['estado']) {
$query
->andWhere('Proceso.ProcEstado like :estado')
->andWhere('Proceso.ProcEstado is not null
');
$parameters[':estado'] = '%' . $data['estado'] . '%';
}
$query->andWhere('(
Proceso.ProcesoSchneider = 0 or
Proceso.ProcesoSchneider is 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 getAllProcesosByCliente($data, $currentPage = 1, $limit = 12, $sort, $order, $cliente_id)
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso')
->leftJoin('Proceso.procOferta', 'Oferta')
->leftJoin('Proceso.procMolde', 'Molde')
->leftJoin('Proceso.procTipo', 'Tipo')
->leftJoin('Proceso.ProcCliente', 'Cliente')
->leftJoin('Oferta.OfPresupuesto', 'Presupuesto');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['Referencia']) && '' != $data['Referencia']) {
$query
->andWhere('Proceso.ProcReferencia like :Referencia')
->andWhere('Proceso.ProcReferencia is not null
');
$parameters[':Referencia'] = '%' . $data['Referencia'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query
->andWhere('Proceso.ProcNombre like :nombre')
->andWhere('Proceso.ProcNombre is not null
');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['oferta']) && '' != $data['oferta']) {
$query
->andWhere('Oferta.OfNombre like :oferta')
->andWhere('Oferta.OfNombre is not null
');
$parameters[':oferta'] = '%' . $data['oferta'] . '%';
}
if (isset($data['presupuesto']) && '' != $data['presupuesto']) {
$query
->andWhere('Presupuesto.PresuReferencia like :presupuesto')
->andWhere('Presupuesto.PresuReferencia is not null
');
$parameters[':presupuesto'] = '%' . $data['presupuesto'] . '%';
}
if (isset($data['molde']) && '' != $data['molde']) {
$query
->andWhere('Molde.moldReferencia like :molde')
->andWhere('Molde.moldReferencia is not null
');
$parameters[':molde'] = '%' . $data['molde'] . '%';
}
if (isset($data['tipo']) && '' != $data['tipo']) {
$query
->andWhere('Tipo.PTipoNombre like :tipo')
->andWhere('Tipo.PTipoNombre is not null
');
$parameters[':tipo'] = '%' . $data['tipo'] . '%';
}
if (isset($data['estado']) && '' != $data['estado']) {
$query
->andWhere('Proceso.ProcEstado like :estado')
->andWhere('Proceso.ProcEstado is not null
');
$parameters[':estado'] = '%' . $data['estado'] . '%';
}
$query->andWhere('(
Cliente.id = :cliente_id
)');
$parameters[':cliente_id'] = $cliente_id;
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 getAllProcesosByMolde($data, $currentPage = 1, $limit = 12, $sort, $order, $molde_id)
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso')
->leftJoin('Proceso.procOferta', 'Oferta')
->leftJoin('Proceso.procMolde', 'Molde')
->leftJoin('Proceso.procTipo', 'Tipo')
->leftJoin('Proceso.ProcCliente', 'Cliente')
->leftJoin('Oferta.OfPresupuesto', 'Presupuesto');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['Referencia']) && '' != $data['Referencia']) {
$query
->andWhere('Proceso.ProcReferencia like :Referencia')
->andWhere('Proceso.ProcReferencia is not null
');
$parameters[':Referencia'] = '%' . $data['Referencia'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query
->andWhere('Proceso.ProcNombre like :nombre')
->andWhere('Proceso.ProcNombre is not null
');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['oferta']) && '' != $data['oferta']) {
$query
->andWhere('Oferta.OfNombre like :oferta')
->andWhere('Oferta.OfNombre is not null
');
$parameters[':oferta'] = '%' . $data['oferta'] . '%';
}
if (isset($data['presupuesto']) && '' != $data['presupuesto']) {
$query
->andWhere('Presupuesto.PresuReferencia like :presupuesto')
->andWhere('Presupuesto.PresuReferencia is not null
');
$parameters[':presupuesto'] = '%' . $data['presupuesto'] . '%';
}
if (isset($data['molde']) && '' != $data['molde']) {
$query
->andWhere('Molde.moldReferencia like :molde')
->andWhere('Molde.moldReferencia is not null
');
$parameters[':molde'] = '%' . $data['molde'] . '%';
}
if (isset($data['tipo']) && '' != $data['tipo']) {
$query
->andWhere('Tipo.PTipoNombre like :tipo')
->andWhere('Tipo.PTipoNombre is not null
');
$parameters[':tipo'] = '%' . $data['tipo'] . '%';
}
if (isset($data['estado']) && '' != $data['estado']) {
$query
->andWhere('Proceso.ProcEstado like :estado')
->andWhere('Proceso.ProcEstado is not null
');
$parameters[':estado'] = '%' . $data['estado'] . '%';
}
$query->andWhere('(
Molde.id = :molde_id
)');
$parameters[':molde_id'] = $molde_id;
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('Proceso')
->leftJoin('Proceso.procOferta', 'Oferta')
->leftJoin('Proceso.procMolde', 'Molde')
->leftJoin('Proceso.procTipo', 'Tipo')
->leftJoin('Oferta.OfPresupuesto', 'Presupuesto')
->andWhere('Proceso.ProcEstado = 1');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['Referencia']) && '' != $data['Referencia']) {
$query
->andWhere('Proceso.ProcReferencia like :Referencia')
->andWhere('Proceso.ProcReferencia is not null
');
$parameters[':Referencia'] = '%' . $data['Referencia'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query
->andWhere('Proceso.ProcNombre like :nombre')
->andWhere('Proceso.ProcNombre is not null
');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['oferta']) && '' != $data['oferta']) {
$query
->andWhere('Oferta.OfNombre like :oferta')
->andWhere('Oferta.OfNombre is not null
');
$parameters[':oferta'] = '%' . $data['oferta'] . '%';
}
if (isset($data['presupuesto']) && '' != $data['presupuesto']) {
$query
->andWhere('Presupuesto.PresuCodigo like :presupuesto')
->andWhere('Presupuesto.PresuCodigo is not null
');
$parameters[':presupuesto'] = '%' . $data['presupuesto'] . '%';
}
if (isset($data['molde']) && '' != $data['molde']) {
$query
->andWhere('Molde.moldReferencia like :molde')
->andWhere('Molde.moldReferencia is not null
');
$parameters[':molde'] = '%' . $data['molde'] . '%';
}
if (isset($data['tipo']) && '' != $data['tipo']) {
$query
->andWhere('Tipo.PTipoNombre like :tipo')
->andWhere('Tipo.PTipoNombre is not null
');
$parameters[':tipo'] = '%' . $data['tipo'] . '%';
}
if (isset($data['estado']) && '' != $data['estado']) {
$query
->andWhere('Proceso.ProcEstado like :estado')
->andWhere('Proceso.ProcEstado is not null
');
$parameters[':estado'] = '%' . $data['estado'] . '%';
}
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 getAllFinalizados($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso')
->leftJoin('Proceso.procOferta', 'Oferta')
->leftJoin('Proceso.procMolde', 'Molde')
->leftJoin('Proceso.procTipo', 'Tipo')
->leftJoin('Oferta.OfPresupuesto', 'Presupuesto')
->andWhere('Proceso.ProcEstado = 0');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('( Proceso.ProcNombre like :where1
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
if (isset($data['Referencia']) && '' != $data['Referencia']) {
$query
->andWhere('Proceso.ProcReferencia like :Referencia')
->andWhere('Proceso.ProcReferencia is not null
');
$parameters[':Referencia'] = '%' . $data['Referencia'] . '%';
}
if (isset($data['nombre']) && '' != $data['nombre']) {
$query
->andWhere('Proceso.ProcNombre like :nombre')
->andWhere('Proceso.ProcNombre is not null
');
$parameters[':nombre'] = '%' . $data['nombre'] . '%';
}
if (isset($data['oferta']) && '' != $data['oferta']) {
$query
->andWhere('Oferta.OfNombre like :oferta')
->andWhere('Oferta.OfNombre is not null
');
$parameters[':oferta'] = '%' . $data['oferta'] . '%';
}
if (isset($data['presupuesto']) && '' != $data['presupuesto']) {
$query
->andWhere('Presupuesto.PresuCodigo like :presupuesto')
->andWhere('Presupuesto.PresuCodigo is not null
');
$parameters[':presupuesto'] = '%' . $data['presupuesto'] . '%';
}
if (isset($data['molde']) && '' != $data['molde']) {
$query
->andWhere('Molde.moldReferencia like :molde')
->andWhere('Molde.moldReferencia is not null
');
$parameters[':molde'] = '%' . $data['molde'] . '%';
}
if (isset($data['tipo']) && '' != $data['tipo']) {
$query
->andWhere('Tipo.PTipoNombre like :tipo')
->andWhere('Tipo.PTipoNombre is not null
');
$parameters[':tipo'] = '%' . $data['tipo'] . '%';
}
if (isset($data['estado']) && '' != $data['estado']) {
$query
->andWhere('Proceso.ProcEstado like :estado')
->andWhere('Proceso.ProcEstado is not null
');
$parameters[':estado'] = '%' . $data['estado'] . '%';
}
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 getAllProcesosSchneider($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso');
if (isset($data['value']) && '' != $data['value']) {
$query->andWhere('(
)');
$parameters[':where1'] = '%' . $data['value'] . '%';
}
$query->andWhere('(
Proceso.ProcesoSchneider = 1
)');
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 getAllProcesoSelect($data, $currentPage = 1, $limit = 12, $sort, $order = "DESC")
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso')
->leftJoin('Proceso.ProcCliente', 'cliente');
if (isset($data['texto']) && '' != $data['texto']) {
$query->andWhere('(
Proceso.ProcNombre like :where1
)');
$parameters[':texto'] = '%' . $data['texto'] . '%';
}
if (isset($data['idCliente']) && '' != $data['idCliente']) {
$query->andWhere('(
cliente.id = :idCliente
)');
$parameters[':idCliente'] = $data['idCliente'];
}
$query->andWhere('(
Proceso.ProcEstado = :estado
)');
$parameters[':estado'] = Proceso::ESTADO['ACTIVO'];
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 getLast()
{
$query = $this->createQueryBuilder('Proceso');
$query->addOrderBy('Proceso.id', 'DESC');
$query->setMaxResults(1);
return $query->getQuery()->getOneOrNullResult();
}
public function getInformeData($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$query = $this
->createQueryBuilder('Proceso')
->leftJoin('Proceso.ProcCliente', 'cliente')
->leftJoin('Proceso.ProcesoFases', 'fase')
->leftJoin('Proceso.procesoBloqFasesCliente', 'faseCliente')
->leftJoin('Proceso.procArticulos', 'articulo')
->leftJoin('Proceso.procArticulosCliente', 'articuloCliente')
->select(
'Proceso',
'Proceso.ProcFecha,
YEAR(Proceso.ProcFecha) as year,
MONTH(Proceso.ProcFecha) AS month,
SUM(articulo.proArtPrecioTotal) as totalArticulo ,
SUM(articuloCliente.proArtPrecioTotal) as totalArticuloCliente ,
SUM(fase.ProcesoBloqFasTotalVenta) as totalFase,
SUM(faseCliente.ProcesoBloqFasTotalVenta) as totalFaseCliente
'
)
->addGroupBy('year')
->addGroupBy('month');
if ($sort == "fecha") {
$query
->addOrderBy('year', $order)
->addOrderBy('month', $order);
} else {
$query->addOrderBy($sort, $order);
}
if (isset($data['desde']) && $data['desde'] != null) {
$query
->andWhere("Proceso.ProcFecha >= :desde");
$parameters[':desde'] = $data['desde'];
}
if (isset($data['hasta']) && $data['hasta'] != null) {
$query
->andWhere("Proceso.ProcFecha <= :hasta");
$parameters[':hasta'] = $data['hasta'];
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
return $query->getQuery()->getResult();
}
public function getNumActivos()
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso');
$query
->select('COUNT(Proceso.id)')
->andWhere('(
Proceso.ProcEstado = 1
)')
->andWhere('(
Proceso.ProcesoSchneider = 0 or
Proceso.ProcesoSchneider is null
)');
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
public function getNumActivosSchneider()
{
$parameters = [];
$query = $this->createQueryBuilder('Proceso');
$query
->select('COUNT(Proceso.id)')
->andWhere('(
Proceso.ProcEstado = 1
)')
->andWhere('(
Proceso.ProcesoSchneider = 1
)');
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
}