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/DBCandidatoConvocatoriaRepository.php
<?php

namespace PortalEmpleo\Repository;

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

use Dotenv\Dotenv;
use PortalEmpleo\Entity\DboCandidato;
use PortalEmpleo\Entity\DboCandidatoconvocatoria;
use PortalEmpleo\Entity\DboConvocatoria;
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 DBCandidatoConvocatoriaRepository extends AbstractController
{
    private $dotenv;
    private $entityManager;
    private const MAX_PERFILES = 5;
    
    public function __construct()
    {
    }

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

            $em = getEntityManager();
            
            return $em;
        }
        catch (Exception $ex){
            echo $exception->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 $exception->getMessage();
            return null;
        }
    }

    public function nuevoCandidatoConvocatoria($cndcvt)
    {
        try
        {
            $entityManager = $this->loadEnv();

            //Buscamos que no esté inscrito ya
            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.puestotrabajo = :pt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', ($cndcvt->getCodigocandidato())->getIdcandidato())
            ->setParameter('cvt', ($cndcvt->getCodigoconvocatoria())->getIdconvocatoria())
            ->setParameter('pt', $cndcvt->getPuestotrabajo())
            ->getQuery()
            ->execute();

            if ($lcdtcvt && count($lcdtcvt)>=1) {
                return false;
            }
            
            $candconvo = new DboCandidatoconvocatoria();

            $candconvo = $candconvo->setFechainscripcion($cndcvt->getFechainscripcion());
            $candconvo = $candconvo->setPuestotrabajo($cndcvt->getPuestotrabajo());
            $candconvo = $candconvo->setRutacv($cndcvt->getRutacv());
            $candconvo = $candconvo->setRutacp($cndcvt->getRutacp());
            $candconvo = $candconvo->setRequisitosSuperados(true);
            $candconvo = $candconvo->setImpugnacionRequisitos(false);
            $candconvo = $candconvo->setImpungnacionMeritos(false);
            $candconvo = $candconvo->setBaja(false);
            
            $entityManager->persist($candconvo);
            $entityManager->flush();

            $entityManager2 = $this->loadEnv();
            $cnd = $entityManager2->getRepository(DboCandidato::class)->find(($cndcvt->getCodigocandidato())->getIdcandidato());
            $entityManager2->clear();
            if (!$cnd) {
                throw $this->createNotFoundException(
                    'No se encuentra el candidato con el id '.($cndcvt->getCodigocandidato())->getIdcandidato()
                );
            }
            $candconvo = $candconvo->setCodigocandidato2($cnd);

            $entityManager2 = $this->loadEnv();
            $cvt = $entityManager2->getRepository(DboConvocatoria::class)->find(($cndcvt->getCodigoconvocatoria())->getIdconvocatoria());
            $entityManager2->clear();
            if (!$cvt) {
                throw $this->createNotFoundException(
                    'No se encuentra la convocatoria con el id '.($cndcvt->getCodigoconvocatoria())->getIdconvocatoria()
                );
            }
            $candconvo = $candconvo->setCodigoconvocatoria2($cvt);

            $entityManager->merge($candconvo);
            $entityManager->flush();
            $entityManager->clear();
			$entityManager->getConnection()->close();

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }

    public function insertarEntrevista( $idCandidato, $idConvocatoria, $entrevista )
    {
        try
        {
            $entityManager = $this->loadEnv();

            //Buscamos que no esté inscrito ya
            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->setParameter('cvt', $idConvocatoria)
            ->getQuery()
            ->execute();
            
             if ($lcdtcvt && count($lcdtcvt)>=1) {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            $cdtcvt->setEntrevista($entrevista);
                            $entityManager->flush();
                        }
                    }
            }     

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

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }
 
    public function actualizarRequisitosSuperados( $idCandidato, $idConvocatoria, $reqaprobados )
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->setParameter('cvt', $idConvocatoria)
            ->getQuery()
            ->execute();
            
             if ($lcdtcvt && count($lcdtcvt)>=1) {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            $cdtcvt->setRequisitosSuperados($reqaprobados);
                            $entityManager->flush();
                        }
                    }
            }         
			
			$entityManager->getConnection()->close();

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }  
 
    public function actualizarExamensuperado( $idCandidato, $idConvocatoria, $examenAprobado )
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->setParameter('cvt', $idConvocatoria)
            ->getQuery()
            ->execute();
            
             if ($lcdtcvt && count($lcdtcvt)>=1) {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            $cdtcvt->setExamenSuperado($examenAprobado);
                            $entityManager->flush();
                        }
                    }
            }

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

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }  
 
    public function ImpugnarRequisitos( $idCandidato, $idConvocatoria )
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->setParameter('cvt', $idConvocatoria)
            ->getQuery()
            ->execute();
            
             if ($lcdtcvt && count($lcdtcvt)>=1) {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            $cdtcvt->setImpugnacionRequisitos(true);
                            $entityManager->flush();
                        }
                    }
            } 
			
			$entityManager->getConnection()->close();

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }  

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

            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->setParameter('cvt', $idConvocatoria)
            ->getQuery()
            ->execute();
            
             if ($lcdtcvt && count($lcdtcvt)>=1) {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            $cdtcvt->setImpungnacionMeritos(true);
                            $entityManager->flush();
                        }
                    }
            }  
			
			$entityManager->getConnection()->close();       
			
            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }  
 
    public function obtenerMisCandidaturas($lang, $codigocandidato)
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $codigocandidato)
            ->addOrderBy('c.fechainscripcion', 'DESC')
            ->getQuery()
            ->execute();

            if (!$lcdtcvt) {
                return ;
            }

            if($lang)
            {
                $ltraduccionesestadoconvocatoria = $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);

                if($ltraduccionesestadoconvocatoria)
                {
                    foreach ($lcdtcvt as $cdtcvt) {
                        if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
                                if((($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->getIdestadoconvocatoria() == $traduccionestado["CodigoEstadoConvocatoria"])
                                {
                                    (($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
                                    (($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
                                }
                            }
                        }
                    }
                }
            }
			
			$entityManager->getConnection()->close();
            
            return $lcdtcvt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

    public function nuevaCandidaturaEspontanea($cndcvt)
    {
        try
        {
            $entityManager = $this->loadEnv();

            //Buscamos que no esté inscrito ya
            $lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.codigoconvocatoria is NULL')
                //->andwhere('c.puestotrabajo = :pt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', ($cndcvt->getCodigocandidato())->getIdcandidato())
            //->setParameter('cvt', null)
            //->setParameter('pt', $cndcvt->getPuestotrabajo())
            ->getQuery()
            ->execute();

            if ($lcdtcvt && count($lcdtcvt)>=1) {
                return false;
            }
            
            $candconvo = new DboCandidatoconvocatoria();

            $candconvo = $candconvo->setFechainscripcion($cndcvt->getFechainscripcion());
            $candconvo = $candconvo->setPuestotrabajo($cndcvt->getPuestotrabajo());
            $candconvo = $candconvo->setRutacv($cndcvt->getRutacv());
            $candconvo = $candconvo->setRutacp($cndcvt->getRutacp());
            $candconvo = $candconvo->setBaja(false);
            
            $entityManager->persist($candconvo);
            $entityManager->flush();

            $entityManager2 = $this->loadEnv();
            $cnd = $entityManager2->getRepository(DboCandidato::class)->find(($cndcvt->getCodigocandidato())->getIdcandidato());
            $entityManager2->clear();
            if (!$cnd) {
                throw $this->createNotFoundException(
                    'No se encuentra el candidato con el id '.($cndcvt->getCodigocandidato())->getIdcandidato()
                );
            }
            $candconvo = $candconvo->setCodigocandidato2($cnd);

            /*$entityManager2 = $this->loadEnv();
            $cvt = $entityManager2->getRepository(DboConvocatoria::class)->find(($cndcvt->getCodigoconvocatoria())->getIdconvocatoria());
            $entityManager2->clear();
            if (!$cvt) {
                throw $this->createNotFoundException(
                    'No se encuentra la convocatoria con el id '.($cndcvt->getCodigoconvocatoria())->getIdconvocatoria()
                );
            }
            $candconvo = $candconvo->setCodigoconvocatoria2($cvt);*/

            $entityManager->merge($candconvo);
            $entityManager->flush();
            $entityManager->clear();
			$entityManager->getConnection()->close();

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return null;
        }
    }

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

            $lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
                ->andwhere('c.requisitossuperados = true')
				->andwhere('c.examensuperado = true')
            ->setParameter('cvt', $idConvocatoria)
            ->addOrderBy('c.codigocandidato', 'DESC')
            ->getQuery()
            ->execute();

            if (!$lcdt) {
                return ;
            }
			
			$entityManager->getConnection()->close();

            return $lcdt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }   

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

            $lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
                ->andwhere('c.requisitossuperados = true')
            ->setParameter('cvt', $idConvocatoria)
            ->addOrderBy('c.codigocandidato', 'DESC')
            ->getQuery()
            ->execute();

            if (!$lcdt) {
				$entityManager->getConnection()->close();
                return ;
            }
			
			$entityManager->getConnection()->close();

            return $lcdt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }   
    
    public function obtenerCandidatosPorConvocatoria($lang, $idConvocatoria)
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cvt', $idConvocatoria)
            ->addOrderBy('c.codigocandidato', 'DESC')
            ->getQuery()
            ->execute();

            if (!$lcdt) {
				$entityManager->getConnection()->close();
                return ;
            }
			
			$entityManager->getConnection()->close();

            return $lcdt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }
	
	    
    public function obtenerConvocatoriasPorCandidatos($lang, $idCandidato)
    {
        try
        {
            $entityManager = $this->loadEnv();

            $lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigocandidato = :cdt')
                ->andwhere('c.baja = false')
            ->setParameter('cdt', $idCandidato)
            ->addOrderBy('c.codigoconvocatoria', 'DESC')
            ->getQuery()
            ->execute();

            if (!$lcdt) {
				$entityManager->getConnection()->close();
                return ;
            }
			
			$entityManager->getConnection()->close();

            return $lcdt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }
}

?>