HEX
Server: Apache
System: Linux clpupre 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64
User: undanet (1000)
PHP: 7.4.3
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/undanet/www//PortalEmpleo/src/Repository/DBConvocatoriaRepository.php
<?php

namespace PortalEmpleo\Repository;

require __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../../bootstrap.php';

use Dotenv\Dotenv;
use PortalEmpleo\Entity\DboConvocatoria;
use PortalEmpleo\Entity\DboEstadoconvocatoria;
use Doctrine\Common\Collections\Criteria;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class DBConvocatoriaRepository extends AbstractController
{
    private const MAX_CONVOCATORIAS = 10;

    public function __construct()
    {
    }

    private function loadEnv()
    {
        try {
            $dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
            $dotenv->load();

            return getEntityManager();
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function obtenerConvocatorias(
        $lang, $idconvocatoria, $checkbaja = true
    ) {

        try {
            $entityManager = $this->loadEnv();

            if (!isset($idconvocatoria)) {
                if ($checkbaja) {
                    $lconvocatorias =
                        $entityManager->getRepository(DboConvocatoria::class)
                            ->createQueryBuilder('c')
                            ->where('c.baja = false')
                            ->addOrderBy('c.idconvocatoria', 'DESC')
                            ->addOrderBy('c.fechainicio', 'DESC')
                            ->addOrderBy('c.fechaultimaactualizacion', 'DESC')
                            ->getQuery()
                            ->execute();
                } else {
                    $lconvocatorias =
                        $entityManager->getRepository(DboConvocatoria::class)
                            ->createQueryBuilder('c')
                            ->addOrderBy('c.idconvocatoria', 'DESC')
                            ->addOrderBy('c.fechainicio', 'DESC')
                            ->addOrderBy('c.fechaultimaactualizacion', 'DESC')
                            ->getQuery()
                            ->execute();
                }
            } else {

                $lconvocatorias =
                    $entityManager->getRepository(DboConvocatoria::class)
                        ->createQueryBuilder('c')
                        ->where('c.idconvocatoria = :id')
                        ->setParameter('id', $idconvocatoria)
                        ->getQuery()
                        ->execute();

                $codigoestadoconvocatoria =
                    ($lconvocatorias[0]->getCodigoestadoconvocatoria())->getIdestadoconvocatoria();

                if (!$lconvocatorias) {
                    throw $this->createNotFoundException(
                        'No se encuentra la convocatoria con el id '
                        . $idconvocatoria
                    );
                }
            }

            if (!$lconvocatorias) {
                return;
            }

            if ($lang) {
                //conexion a traduccion_estadoconvocatoria con el lenguaje que sea y traer las convocatorias de ese idioma
                //despues cruzar la lista de $lconvocatorias con la lista de las traducciones
                $ltraduccionesestadoconvocatoria =
                    $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, isset($idconvocatoria)
                        ? $codigoestadoconvocatoria
                        : null);

                if ($ltraduccionesestadoconvocatoria) {
                    foreach ($lconvocatorias as $convo) {
                        foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                            if (($convo->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                                == $traduccionestado["CodigoEstadoConvocatoria"]) {
                                ($convo->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                ($convo->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                            }
                        }
                    }
                }
            }

            $entityManager->getConnection()->close();

            return $lconvocatorias;  //$result; 
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function obtenerConvocatoriasAbiertas($lang)
    {
        try {
            $entityManager = $this->loadEnv();

            $lconvocatorias =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                    ->andWhere('c.codigoestadoconvocatoria IN (1)')
                    ->addOrderBy('c.fechainicio', 'DESC')
                    ->addOrderBy('c.fechaultimaactualizacion', 'DESC')
                    ->setMaxResults(self::MAX_CONVOCATORIAS)
                    ->getQuery()
                    ->execute();

            if (!$lconvocatorias) {
                return;
            }

            if ($lang) {
                //conexion a traduccion_estadoconvocatoria con el lenguaje que sea y traer las convocatorias de ese idioma
                //despues cruzar la lista de $lconvocatorias con la lista de las traducciones
                $ltraduccionesestadoconvocatoria =
                    $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);

                if ($ltraduccionesestadoconvocatoria) {
                    foreach ($lconvocatorias as $convo) {
                        foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                            if (($convo->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                                == $traduccionestado["CodigoEstadoConvocatoria"]) {
                                ($convo->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                ($convo->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                            }
                        }
                    }
                }
            }

            return $lconvocatorias;  //$result; 
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function obtenerConvocatoriasSinCerrar($lang)
    {
        try {
            $entityManager = $this->loadEnv();

            $lconvocatorias =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                    ->andWhere('c.codigoestadoconvocatoria NOT IN (6,7,8,9)')
                    ->addOrderBy('c.fechainicio', 'DESC')
                    ->addOrderBy('c.fechaultimaactualizacion', 'DESC')
                    ->getQuery()
                    ->execute();

            if (!$lconvocatorias) {
                return;
            }

            if ($lang) {
                //conexion a traduccion_estadoconvocatoria con el lenguaje que sea y traer las convocatorias de ese idioma
                //despues cruzar la lista de $lconvocatorias con la lista de las traducciones
                $ltraduccionesestadoconvocatoria =
                    $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);

                if ($ltraduccionesestadoconvocatoria) {
                    foreach ($lconvocatorias as $convo) {
                        foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                            if (($convo->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                                == $traduccionestado["CodigoEstadoConvocatoria"]) {
                                ($convo->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                ($convo->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                            }
                        }
                    }
                }
            }

            return $lconvocatorias;  //$result; 
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function obtenerConvocatoriasReferencia($lang, $referencia)
    {
        try {
            $entityManager = $this->loadEnv();

            if (isset($referencia)) {
                $lconvocatorias =
                    $entityManager->getRepository(DboConvocatoria::class)
                        ->createQueryBuilder('c')
                        ->where('c.baja = false')
                        ->andWhere('c.referencia = :ref')
                        ->setParameter('ref', $referencia)
                        ->getQuery()
                        ->execute();
            } else {
                $lconvocatorias =
                    $entityManager->getRepository(DboConvocatoria::class)
                        ->createQueryBuilder('c')
                        ->where('c.baja = false')
                        ->addOrderBy('c.referencia', 'DESC')
                        ->getQuery()
                        ->execute();
            }

            if (!$lconvocatorias) {
                return;
            }

            if ($lang) {
                //conexion a traduccion_estadoconvocatoria con el lenguaje que sea y traer las convocatorias de ese idioma
                //despues cruzar la lista de $lconvocatorias con la lista de las traducciones
                $ltraduccionesestadoconvocatoria =
                    $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);

                if ($ltraduccionesestadoconvocatoria) {
                    foreach ($lconvocatorias as $convo) {
                        foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                            if (($convo->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                                == $traduccionestado["CodigoEstadoConvocatoria"]) {
                                ($convo->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                ($convo->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                            }
                        }
                    }
                }
            }

            return $lconvocatorias;  //$result; 
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    private function obtenerListaTraducciones(
        $em, $nombretablatraduccion, $columnaid, $columnatexto, $columna2,
        $language, $id
    ) {
        try {
            $sql = "SELECT T." . $columnaid . " , T." . $columnatexto . " , T."
                   . $columna2 . " , T.CodigoIdioma FROM "
                   . $nombretablatraduccion . " T WHERE CodigoIdioma = '"
                   . $language . "'";

            if (isset($id)) {
                $sql = $sql . " AND T." . $columnaid . " = " . $id;
            }

            $rs = $em->getConnection()->query($sql)->fetchAll();

            return $rs;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function actualizarConvocatoria($convocatoria)
    {
        try {
            $entityManager = $this->loadEnv();

            $cvt = $entityManager->getRepository(DboConvocatoria::class)
                ->find($convocatoria->getIdconvocatoria());

            if (!$cvt) {
                throw $this->createNotFoundException(
                    'No se encuentra la convocatoria con el id '
                    . $convocatoria->getIdconvocatoria()
                );
            }

            $cvt = $cvt->setReferencia($convocatoria->getReferencia());
            $cvt = $cvt->setPuestotrabajo($convocatoria->getPuestotrabajo());
            $cvt = $cvt->setCentro($convocatoria->getCentro());
            $cvt = $cvt->setFechainicio($convocatoria->getFechainicio());
            $cvt = $cvt->setFechafin($convocatoria->getFechafin());
            $cvt =
                $cvt->setFechaultimaactualizacion($convocatoria->getFechaultimaactualizacion());
            $cvt =
                $cvt->setRutaarchivoconvocatoria($convocatoria->getRutaarchivoconvocatoria());
            if ($convocatoria->getRutaarchivoespecifico() != null) {
                $cvt =
                    $cvt->setRutaarchivoespecifico($convocatoria->getRutaarchivoespecifico());
            }
            //$cvt = $cvt->setRutaarchivoresolucionfinal($convocatoria->getRutaarchivoresolucionfinal());
            if ($convocatoria->getRutaarchivoresolucionfinal() != null) {
                $cvt =
                    $cvt->setRutaarchivoresolucionfinal($convocatoria->getRutaarchivoresolucionfinal());
            }

            if ($convocatoria->getRutaarchivorequisitos() != null) {
                $cvt =
                    $cvt->setRutaarchivorequisitos($convocatoria->getRutaarchivorequisitos());
            }

            if ($convocatoria->getRutaarchivoexamen() != null) {
                $cvt =
                    $cvt->setRutaarchivoexamen($convocatoria->getRutaarchivoexamen());
            }

            $cvt = $cvt->setUrlweb($convocatoria->getUrlweb());
            $cvt =
                $cvt->setUmbraldepuntuacion($convocatoria->getUmbraldepuntuacion());

            $entityManager2 = $this->loadEnv();

            $cvtEstado =
                $entityManager2->getRepository(DboEstadoconvocatoria::class)
                    ->find(($convocatoria->getCodigoestadoconvocatoria())->getIdestadoconvocatoria());
            $entityManager2->clear();

            if (!$cvtEstado) {
                throw $this->createNotFoundException(
                    'No se encuentra el estado de la convocatoria con el id '
                    . ($convocatoria->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                );
            }

            $cvt = $cvt->setCodigoestadoconvocatoria2($cvtEstado);
            $cvt = $cvt->setCaducada($convocatoria->getCaducada());
            $cvt = $cvt->setBaja($convocatoria->getBaja());
            $cvt = $cvt->setDescripcion($convocatoria->getDescripcion());
            $cvt = $cvt->setDescripcionEn($convocatoria->getDescripcionEn());

            $cvt = $cvt->setTieneExamen($convocatoria->getTieneExamen());
            $cvt = $cvt->setTotalPuntos($convocatoria->getTotalPuntos());
            $cvt =
                $cvt->setPuntuacionCorte($convocatoria->getPuntuacionCorte());
            $cvt =
                $cvt->setPuntuacionMaxima($convocatoria->getPuntuacionMaxima());
            $cvt =
                $cvt->setPuntuacionMaximaMeritos($convocatoria->getPuntuacionMaximaMeritos());
            $cvt =
                $cvt->setPonderacionExamen($convocatoria->getPonderacionExamen());
            $cvt =
                $cvt->setPonderacionMeritos($convocatoria->getPonderacionMeritos());
            $cvt = $cvt->setSustituto($convocatoria->getSustituto());
			$cvt = $cvt->setPlazaAdjudicada($convocatoria->getPlazaAdjudicada());

            $entityManager->merge($cvt);
            $entityManager->flush();
            $entityManager->clear();

            return $cvt;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function nuevaConvocatoria($convocatoria)
    {
        try {
            $entityManager = $this->loadEnv();

            $cvt = new DboConvocatoria();

            $cvt = $cvt->setReferencia($convocatoria->getReferencia());
            $cvt = $cvt->setPuestotrabajo($convocatoria->getPuestotrabajo());
            $cvt = $cvt->setCentro($convocatoria->getCentro());
            $cvt = $cvt->setFechainicio($convocatoria->getFechainicio());
            $cvt = $cvt->setFechafin($convocatoria->getFechafin());
            $cvt =
                $cvt->setFechaultimaactualizacion($convocatoria->getFechaultimaactualizacion());
            $cvt =
                $cvt->setRutaarchivoconvocatoria($convocatoria->getRutaarchivoconvocatoria());
            if ($convocatoria->getRutaarchivoespecifico() != null) {
                $cvt =
                    $cvt->setRutaarchivoespecifico($convocatoria->getRutaarchivoespecifico());
            }
            if ($convocatoria->getRutaarchivoresolucionfinal() != null) {
                $cvt =
                    $cvt->setRutaarchivoresolucionfinal($convocatoria->getRutaarchivoresolucionfinal());
            }

            if ($convocatoria->getRutaarchivoexamen() != null) {
                $cvt =
                    $cvt->setRutaarchivoexamen($convocatoria->getRutaarchivoexamen());
            }

            $cvt = $cvt->setUrlweb($convocatoria->getUrlweb());
            $cvt =
                $cvt->setUmbraldepuntuacion($convocatoria->getUmbraldepuntuacion());
            $cvt = $cvt->setCaducada($convocatoria->getCaducada());
            $cvt = $cvt->setBaja($convocatoria->getBaja());
            $cvt = $cvt->setDescripcion($convocatoria->getDescripcion());
            $cvt = $cvt->setDescripcionEn($convocatoria->getDescripcionEn());

            $cvt = $cvt->setTieneExamen($convocatoria->getTieneExamen());
            $cvt = $cvt->setTotalPuntos($convocatoria->getTotalPuntos());
            $cvt =
                $cvt->setPuntuacionCorte($convocatoria->getPuntuacionCorte());
            $cvt =
                $cvt->setPuntuacionMaxima($convocatoria->getPuntuacionMaxima());
            $cvt =
                $cvt->setPuntuacionMaximaMeritos($convocatoria->getPuntuacionMaximaMeritos());
            $cvt =
                $cvt->setPonderacionExamen($convocatoria->getPonderacionExamen());
            $cvt =
                $cvt->setPonderacionMeritos($convocatoria->getPonderacionMeritos());

            $entityManager->persist($cvt);
            $entityManager->flush();

            $cvtEstado =
                $entityManager->getRepository(DboEstadoconvocatoria::class)
                    ->find(($convocatoria->getCodigoestadoconvocatoria())->getIdestadoconvocatoria());
            $entityManager->clear();

            if (!$cvtEstado) {
                throw $this->createNotFoundException(
                    'No se encuentra el estado de la convocatoria con el id '
                    . ($convocatoria->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                );
            }
            $cvt = $cvt->setCodigoestadoconvocatoria2($cvtEstado);

            $entityManager->merge($cvt);
            $entityManager->flush();
            $entityManager->clear();

            return $cvt;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function buscadorConvocatorias($lang)
    {

        try {
            $entityManager = $this->loadEnv();

            $lconvocatorias =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                    ->addOrderBy('c.referencia', 'DESC')
                    ->addOrderBy('c.fechainicio', 'DESC')
                    ->getQuery()
                    ->execute();

            if (!$lconvocatorias) {
                return;
            }

            if ($lang) {
                //conexion a traduccion_estadoconvocatoria con el lenguaje que sea y traer las convocatorias de ese idioma
                //despues cruzar la lista de $lconvocatorias con la lista de las traducciones
                $ltraduccionesestadoconvocatoria =
                    $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);

                if ($ltraduccionesestadoconvocatoria) {
                    foreach ($lconvocatorias as $convo) {
                        foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                            if (($convo->getCodigoestadoconvocatoria())->getIdestadoconvocatoria()
                                == $traduccionestado["CodigoEstadoConvocatoria"]) {
                                ($convo->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                ($convo->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                            }
                        }
                    }
                }
            }

            return $lconvocatorias;  //$result; 
        } catch (\Exception $ex) {
            echo $ex->getMessage();
            return null;
        }
    }

    public function cambiarEstadoConvocatoria($idConvocatoria, $idEstado)
    {
        try {
            $entityManager = $this->loadEnv();

            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $cvtEstado =
                $entityManager->getRepository(DboEstadoconvocatoria::class)
                    ->find($idEstado);
            $entityManager->clear();

            if (!$cvtEstado) {
                throw $this->createNotFoundException('No se encuentra el estado de la convocatoria con el id ');
            }

            $convocatoria->setCodigoestadoconvocatoria2($cvtEstado);

            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function actualizarPlazaAdjudicada($idConvocatoria, $nombreCandidato)
    {
        try {
            $entityManager = $this->loadEnv();

            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $convocatoria->setPlazaAdjudicada($nombreCandidato);

            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function insertarFechaExamen($idConvocatoria, $fecha)
    {
        try {
            $entityManager = $this->loadEnv();
            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $convocatoria->setFechaExamen($fecha);
            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function insertarFechaResReq($idConvocatoria, $fecha)
    {
        try {
            $entityManager = $this->loadEnv();
            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $convocatoria->setFechaResReq($fecha);
            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function insertarFechaResExamen($idConvocatoria, $fecha)
    {
        try {
            $entityManager = $this->loadEnv();
            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $convocatoria->setFechaResExamen($fecha);
            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }

    public function insertarFechaResFinal($idConvocatoria, $fecha)
    {
        try {
            $entityManager = $this->loadEnv();
            $convocatoria =
                $entityManager->getRepository(DboConvocatoria::class)
                    ->find($idConvocatoria);

            if (!$convocatoria) {
                echo 'No product found for idConvocatoria ' . $idConvocatoria;
            }
            $convocatoria->setFechaResFinal($fecha);

            $entityManager->merge($convocatoria);
            $entityManager->flush();
            $entityManager->clear();

            return $convocatoria;
        } catch (\Exception $ex) {
            echo $ex->getMessage();
        }
    }
}

?>