<?php
namespace App\Repository;
use App\Entity\Incidencia;
use App\Entity\Proceso;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
use App\Utils\CustomPaginator;
use DateInterval;
/**
* @method Incidencia|null find($id, $lockMode = null, $lockVersion = null)
* @method Incidencia|null findOneBy(array $criteria, array $orderBy = null)
* @method Incidencia[] findAll()
* @method Incidencia[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class IncidenciaRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Incidencia::class);
}
// /**
// * @return Incidencia[] Returns an array of Incidencia objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('i')
->andWhere('i.exampleField = :val')
->setParameter('val', $value)
->orderBy('i.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Incidencia
{
return $this->createQueryBuilder('i')
->andWhere('i.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
public function getIncidenciaByUsuarioFase($operario, $fase)
{
$parameters = array();
$query = $this->createQueryBuilder('incidencia')
->leftJoin('incidencia.inciOperario', 'operario')
->leftJoin('incidencia.inciFase', 'fase');
$query->andWhere('(
operario.id = :where1 and
fase.id = :where2 and
incidencia.inciSolucionada = false
)');
$parameters[':where1'] = $operario;
$parameters[':where2'] = $fase;
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$results = $query->getQuery()->getOneOrNullResult();
return $results;
}
public function getAllIncidencias($data, $currentPage = 1, $limit = 12, $sort, $order, $solucionada = null)
{
$parameters = array();
$query = $this->createQueryBuilder('Incidencia')
->leftJoin("Incidencia.inciFase", "Fase")
->leftJoin("Fase.Proceso", "Proceso")
->leftJoin("Incidencia.inciOperario", "Operario");
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
Incidencia.inciMotivo like :where1 or
Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if ($solucionada != null) {
$query->andWhere(
'Incidencia.inciSolucionada = :where3'
);
$parameters[':where3'] = $solucionada;
}
if (isset($data['fase']) && '' != $data['fase']) {
$query->andWhere('(
Fase.ProcesoBloqFasNombre like :fase
)');
$parameters[':fase'] = '%' . $data['fase'] . '%';
}
if (isset($data['motivo']) && '' != $data['motivo']) {
$query->andWhere('(
Incidencia.inciMotivo like :motivo
)');
$parameters[':motivo'] = '%' . $data['motivo'] . '%';
}
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 (isset($data['solucionada']) && null !== $data['solucionada']) {
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = ($data['solucionada'] == 0 ? false : true);
}
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 getAllIncidenciasSchneider($data, $currentPage = 1, $limit = 12, $sort, $order, $solucionada = null)
{
$parameters = array();
$query = $this->createQueryBuilder('Incidencia')
->leftJoin("Incidencia.inciFase", "Fase")
->leftJoin("Fase.Proceso", "Proceso")
->leftJoin("Incidencia.inciOperario", "Operario")
->andWhere('Proceso.ProcesoSchneider = true');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
Incidencia.inciMotivo like :where1 or
Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = $solucionada;
if (isset($data['fase']) && '' != $data['fase']) {
$query->andWhere('(
Fase.ProcesoBloqFasNombre like :fase
)');
$parameters[':fase'] = '%' . $data['fase'] . '%';
}
if (isset($data['motivo']) && '' != $data['motivo']) {
$query->andWhere('(
Incidencia.inciMotivo like :motivo
)');
$parameters[':motivo'] = '%' . $data['motivo'] . '%';
}
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 (isset($data['solucionada']) && null !== $data['solucionada']) {
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = ($data['solucionada'] == 0 ? false : true);
}
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 getAllActivoProyecto($data, $currentPage = 1, $limit = 12, $sort, $order, $solucionada = false)
{
$parameters = array();
$query = $this->createQueryBuilder('Incidencia')
->leftJoin("Incidencia.inciFase", "Fase")
->leftJoin("Fase.Proceso", "Proceso")
->leftJoin("Incidencia.inciOperario", "Operario")
->andWhere('Proceso.ProcesoSchneider = false or
Proceso.ProcesoSchneider is null
');
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
Incidencia.inciMotivo like :where1 or
Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = $solucionada;
if (isset($data['fase']) && '' != $data['fase']) {
$query->andWhere('(
Fase.ProcesoBloqFasNombre like :fase
)');
$parameters[':fase'] = '%' . $data['fase'] . '%';
}
if (isset($data['motivo']) && '' != $data['motivo']) {
$query->andWhere('(
Incidencia.inciMotivo like :motivo
)');
$parameters[':motivo'] = '%' . $data['motivo'] . '%';
}
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 (isset($data['solucionada']) && null !== $data['solucionada']) {
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = ($data['solucionada'] == 0 ? false : true);
}
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 getAllIncidenciasByPersona($data, $currentPage = 1, $limit = 12, $sort, $order, $solucionada = null, $usuario_id)
{
$parameters = array();
$query = $this->createQueryBuilder('Incidencia')
->leftJoin("Incidencia.inciFase", "Fase")
->leftJoin("Fase.Proceso", "Proceso")
->leftJoin("Incidencia.inciOperario", "Operario")
->andWhere('Operario.id = :usuario_id');
$parameters[':usuario_id'] = $usuario_id;
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
Incidencia.inciMotivo like :where1 or
Operario.username like :where1 or
Fase.ProcesoBloqFasNombre like :where1
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
if ($solucionada != null) {
$query->andWhere(
'Incidencia.inciSolucionada = :where3'
);
$parameters[':where3'] = $solucionada;
}
if (isset($data['fase']) && '' != $data['fase']) {
$query->andWhere('(
Fase.ProcesoBloqFasNombre like :fase
)');
$parameters[':fase'] = '%' . $data['fase'] . '%';
}
if (isset($data['motivo']) && '' != $data['motivo']) {
$query->andWhere('(
Incidencia.inciMotivo like :motivo
)');
$parameters[':motivo'] = '%' . $data['motivo'] . '%';
}
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 (isset($data['solucionada']) && null !== $data['solucionada']) {
$query->andWhere(
'Incidencia.inciSolucionada = :solucionada'
);
$parameters[':solucionada'] = ($data['solucionada'] == 0 ? false : true);
}
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 getAllIncidenciasProyecto($data, $currentPage = 1, $limit = 12, $sort, $order, Proceso $proceso)
{
$parameters = array();
$query = $this->createQueryBuilder('incidencia')
->leftJoin('incidencia.inciFase', 'fase')
->leftJoin('fase.Proceso', 'proceso')
->andWhere('proceso = :proceso');
$parameters[':proceso'] = $proceso;
if (isset($data['value']) && $data['value'] != "") {
$query->andWhere('(
incidencia.inciMotivo
)');
$parameters[':where1'] = "%" . $data['value'] . "%";
}
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 getAllActivas()
{
$parameters = [];
$query = $this->createQueryBuilder('incidencia');
$query
->select('count(incidencia.id)')
->andWhere('(
incidencia.inciSolucionada = 0
)');
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
public function getInformeData($data, $currentPage = 1, $limit = 12, $sort, $order)
{
$query = $this
->createQueryBuilder('incidencia')
->select('incidencia.inciCreated, YEAR(incidencia.inciCreated) as year,MONTH(incidencia.inciCreated) AS month, COUNT(incidencia) as total')
->addGroupBy('year')
->addGroupBy('month');
if ($sort == "Informe.fecha") {
$query
->addOrderBy('year', $order)
->addOrderBy('month', $order);
} else if ($sort == "Informe.total") {
$query
->addOrderBy('total', $order);
}
if (isset($data['desde']) && $data['desde'] != null) {
$query
->andWhere("incidencia.inciCreated >= :desde");
$parameters[':desde'] = $data['desde'];
}
if (isset($data['hasta']) && $data['hasta'] != null) {
$query
->andWhere("incidencia.inciCreated <= :hasta");
$parameters[':hasta'] = $data['hasta'];
}
if (!empty($parameters)) {
$query->setParameters($parameters);
}
return $query->getQuery()->getResult();
}
public function getNumHoy()
{
$parameters = [];
$query = $this->createQueryBuilder('incidencia')
->leftJoin('incidencia.inciFase', 'fase')
->leftJoin('fase.Proceso', 'proceso');
$query
->select('COUNT(incidencia.id)')
->andWhere('DATE_DIFF(incidencia.inciCreated, CURRENT_DATE()) = 0')
->andWhere('(
proceso.ProcesoSchneider = 0 or
proceso.ProcesoSchneider is null
)');
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
public function getNumHoySchneider()
{
$parameters = [];
$query = $this->createQueryBuilder('incidencia')
->leftJoin('incidencia.inciFase', 'fase')
->leftJoin('fase.Proceso', 'proceso');
$query
->select('COUNT(incidencia.id)')
->andWhere(' DATE_DIFF(incidencia.inciCreated, CURRENT_DATE()) = 0')
->andWhere('(
proceso.ProcesoSchneider = 1
)');
if (!empty($parameters)) {
$query->setParameters($parameters);
}
$resultado = $query->getQuery()->getOneOrNullResult();
$total = 0;
if ($resultado) {
$total = $resultado[1];
}
return $total;
}
}