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/DBTribunalConvocatoriaRepository.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\DboRol;
use PortalEmpleo\Entity\DboTribunalconvocatoria;
use PortalEmpleo\Entity\WpUsers;
use PortalEmpleo\Entity\WpUsermeta;
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 DBTribunalConvocatoriaRepository extends AbstractController
{
    private $dotenv;
    private $entityManager;
    
    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 loadEnvWP()
    {
        try{
            $dotenv = Dotenv::createImmutable(__DIR__ . "/../../");
            $dotenv->load();

            $em = getEntityManagerWP();
            
            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 obtenerTribunal($lang, $codigoconvocatoria)
    {
        try
        {
            $entityManager = $this->loadEnv();

            $ltrbcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cvt', $codigoconvocatoria)
            ->addOrderBy('c.codigorol', 'ASC')
            ->addOrderBy('c.idtribunalconvocatoria', 'ASC')
            ->getQuery()
            ->execute();

            if (!$ltrbcvt) {
                return ;
            }

            if($lang)
            {
                $ltraduccionesrol = $this->obtenerListaTraducciones($entityManager, "traduccion_rol", "CodigoRol", "Rol", "Descripcion", $lang, null);

                if($ltraduccionesrol)
                {
                    foreach ($ltrbcvt as $trbcvt) {
                        if($trbcvt->getCodigorol()) //Si no es nula, es decir, no es una candidatura espontanea
                        {
                            foreach ($ltraduccionesrol as $rol) {
                                if($trbcvt->getCodigorol()->getIdrol() == $rol["CodigoRol"])
                                {
                                    $trbcvt->getCodigorol()->setRol($rol["Rol"]);
                                    $trbcvt->getCodigorol()->setDescripcion($rol["Descripcion"]);
                                }
                            }
                        }
                    }
                }
            }
			
            $entityManager->getConnection()->close();
			
            return $ltrbcvt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

    public function obtenerTribunalPorConvocatoriayUsuario($lang, $codigoconvocatoria, $codigoUsuarioWP)
    {
        try
        {
            if((isset($codigoconvocatoria) && $codigoconvocatoria != null) && (isset($codigoUsuarioWP) && $codigoUsuarioWP != null))
            {
                $entityManager = $this->loadEnv();

                $trbcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
                            ->createQueryBuilder('c')
                            ->where('c.codigoconvocatoria = :cvt')
                                ->andwhere('c.codigousuariowp = :uwp')
                                ->andwhere('c.baja = false')
                            ->setParameter('cvt', $codigoconvocatoria)
                            ->setParameter('uwp', $codigoUsuarioWP)
                            ->addOrderBy('c.idtribunalconvocatoria', 'DESC')
                            ->getQuery()
                            ->execute();
            }
            
            if (!$trbcvt) {
				$entityManager->getConnection()->close();
                return ;
            }
            else
            {
                if(is_array($trbcvt))
                {
                    $trbcvt = reset($trbcvt);
                }
            }
            $entityManager->getConnection()->close();
			
            return $trbcvt;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

    public function obtenerUsuariosWP()
    {
        try
        {
            $entityManagerWP = $this->loadEnvWP();

            $lusuariosWP = $entityManagerWP->getRepository(WpUsers::class)
            ->createQueryBuilder('u')
            ->where('u.userStatus = 0')
            ->addOrderBy('u.displayName', 'ASC')
            ->getQuery()
            ->execute();

            if (!$lusuariosWP) {
                return ;
            }

			$entityManagerWP->getConnection()->close();
			
            return $lusuariosWP;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

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

            $lroles = $entityManager->getRepository(DboRol::class)
            ->createQueryBuilder('r')
            ->where('r.baja = false')
            ->getQuery()
            ->execute();

            if (!$lroles) {
                return ;
            }

            if($lang)
            {
                $ltraduccionesrol = $this->obtenerListaTraducciones($entityManager, "traduccion_rol", "CodigoRol", "Rol", "Descripcion", $lang, null);

                if($ltraduccionesrol)
                {
                    foreach ($lroles as $roles) {
                        foreach ($ltraduccionesrol as $rol) {
                            if($roles->getIdrol() == $rol["CodigoRol"])
                            {
                                $roles->setRol($rol["Rol"]);
                                $roles->setDescripcion($rol["Descripcion"]);
                            }
                        }
                        
                    }
                }
            }
			
            $entityManager->getConnection()->close();
            return $lroles;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

    public function quitarPerfilesEvaluadoresTribunalConvocatoria($codigoconvocatoria)
    {
        try
        {
            $entityManager = $this->loadEnv();
            $entityManagerWP = $this->loadEnvWP();

            $ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cvt', $codigoconvocatoria)
            ->getQuery()
            ->execute();

            if(is_array($ltrbnlcvt))
            {
                 foreach ($ltrbnlcvt as $trbnlcvt) {
                    $usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
                    ->createQueryBuilder('c')
                    ->where('c.userId = :uid')
                        ->andwhere('c.metaKey = :key')
                    ->setParameter('uid',($trbnlcvt->getCodigousuariowp())->getId())
                    ->setParameter('key','wp_capabilities')
                    ->getQuery()
                    ->execute();

                    if (!$usuarioWP) {
                        throw $this->createNotFoundException(
                            'No se encuentran metadatos para el usuarioWP con el id '. ($trbnlcvt->getCodigousuariowp())->getId()
                        );
                    }

                    if(is_array($usuarioWP))
                    {
                        foreach ($usuarioWP as $uWP) {
                            if(strpos($uWP->getMetaValue(), 'um_evaluador') !== false){
                                $uWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');

                                $entityManagerWP->merge($uWP);
                                $entityManagerWP->flush();
                            }
                        }

                        $entityManagerWP->clear();
                    }
                    else
                    {
                        if(strpos($usuarioWP->getMetaValue(), 'um_evaluador') !== false){
                            $usuarioWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');

                            $entityManagerWP->merge($usuarioWP);
                            $entityManagerWP->flush();
                            $entityManagerWP->clear();
                        }
                    }
                }
            }
            else
            {
                $usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
                ->createQueryBuilder('c')
                ->where('c.userId = :uid')
                    ->andwhere('c.metaKey = :key')
                ->setParameter('uid',($ltrbnlcvt->getCodigousuariowp())->getId())
                ->setParameter('key','wp_capabilities')
                ->getQuery()
                ->execute();

                if (!$usuarioWP) {
                    throw $this->createNotFoundException(
                        'No se encuentran metadatos para el usuarioWP con el id '. ($ltrbnlcvt->getCodigousuariowp())->getId()
                    );
                }

                if(is_array($usuarioWP))
                {
                    foreach ($usuarioWP as $uWP) {
                        if(strpos($uWP->getMetaValue(), 'um_evaluador') !== false){
                            $uWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');

                            $entityManagerWP->merge($uWP);
                            $entityManagerWP->flush();
                        }
                    }

                    $entityManagerWP->clear();
                }
                else
                {
                    if(strpos($usuarioWP->getMetaValue(), 'um_evaluador') !== false){
                        $usuarioWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');

                        $entityManagerWP->merge($usuarioWP);
                        $entityManagerWP->flush();
                        $entityManagerWP->clear();
                    }
                }
            }
			
			$entityManager->getConnection()->close();
			$entityManagerWP->getConnection()->close();
            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return false;
        }
    }

    public function asignarPerfilEvaluadorTribunalConvocatoria($codigoconvocatoria, $convocatoriaTribunal)
    {
        try
        {
            $entityManager = $this->loadEnv();
            $entityManagerWP = $this->loadEnvWP();

            $ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.codigousuariowp = :uwp')
                ->andwhere('c.baja = false')
                ->andWhere("c.essuplente = false OR (c.essuplente = true AND c.asumerolprincipal = true)")
            ->setParameter('cvt', $codigoconvocatoria)
            ->setParameter('uwp', ($convocatoriaTribunal->getCodigousuariowp())->getId())
            ->getQuery()
            ->execute();

            if($ltrbnlcvt)
            {
                $usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
                ->createQueryBuilder('c')
                ->where('c.userId = :uid')
                    ->andwhere('c.metaKey = :key')
                ->setParameter('uid',($convocatoriaTribunal->getCodigousuariowp())->getId())
                ->setParameter('key','wp_capabilities')
                ->getQuery()
                ->execute();

                if (!$usuarioWP) {
                    throw $this->createNotFoundException(
                        'No se encuentran metadatos para el usuarioWP con el id '. ($convocatoriaTribunal->getCodigousuariowp())->getId()
                    );
                }

                if(is_array($usuarioWP))
                {
                    foreach ($usuarioWP as $uWP) {
                        if(strpos($uWP->getMetaValue(), 'um_candidato') !== false){
                            $uWP->setMetaValue('a:1:{s:12:"um_evaluador";b:1;}');

                            $entityManagerWP->merge($uWP);
                            $entityManagerWP->flush();
                        }
                    }

                    $entityManagerWP->clear();
                }
                else
                {
                    if(strpos($usuarioWP->getMetaValue(), 'um_candidato') !== false){
                        $usuarioWP->setMetaValue('a:1:{s:12:"um_evaluador";b:1;}');

                        $entityManagerWP->merge($usuarioWP);
                        $entityManagerWP->flush();
                        $entityManagerWP->clear();
                    }
                }
            }

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

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

    public function borrarTribunalConvocatoria($codigoconvocatoria)
    {
        try
        {
            $entityManager = $this->loadEnv();

            $ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
            ->createQueryBuilder('c')
            ->where('c.codigoconvocatoria = :cvt')
                ->andwhere('c.baja = false')
            ->setParameter('cvt', $codigoconvocatoria)
            ->getQuery()
            ->execute();

            if(is_array($ltrbnlcvt))
            {
                 foreach ($ltrbnlcvt as $trbnlcvt) {
                    $trbnlcvt->setBaja(true);

                    $entityManager->merge($trbnlcvt);
                    $entityManager->flush();
                    $entityManager->clear();
                }
            }
            else
            {
                $ltrbnlcvt->setBaja(true);

                $entityManager->merge($ltrbnlcvt);
                $entityManager->flush();
                $entityManager->clear();
            }

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

            return true;
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
            return false;
        }
    }
    
    public function insertarTribunalConvocatoria($codigoconvocatoria, $convocatoriaTribunal)
    {
        try
        {
            $entityManager = $this->loadEnv();
            
            $cvtTrb = new DboTribunalconvocatoria();

            $cvtTrb = $cvtTrb->setEssuplente($convocatoriaTribunal->getEssuplente());
            $cvtTrb = $cvtTrb->setAsumerolprincipal($convocatoriaTribunal->getAsumerolprincipal());
            $cvtTrb = $cvtTrb->setBaja($convocatoriaTribunal->getBaja());
            
            $entityManager->persist($cvtTrb);
            $entityManager->flush();

            $cvt = $entityManager->getRepository(DboConvocatoria::class)->find($codigoconvocatoria);
            $entityManager->clear();
            if (!$cvt) {
                throw $this->createNotFoundException(
                    'No se encuentra la convocatoria con el id '. $codigoconvocatoria
                );
            }
            $cvtTrb = $cvtTrb->setCodigoconvocatoria2($cvt);

            $rol = $entityManager->getRepository(DboRol::class)->find(($convocatoriaTribunal->getCodigorol())->getIdrol());
            $entityManager->clear();
            if (!$rol) {
                throw $this->createNotFoundException(
                    'No se encuentra el rol con el id '. ($convocatoriaTribunal->getCodigorol())->getIdrol()
                );
            }
            $cvtTrb = $cvtTrb->setCodigorol2($rol);

            $entityManagerWP = $this->loadEnvWP();
            $usuarioWP = $entityManagerWP->getRepository(WpUsers::class)->find(($convocatoriaTribunal->getCodigousuariowp())->getId());
            $entityManagerWP->clear();
            if (!$usuarioWP) {
                throw $this->createNotFoundException(
                    'No se encuentra el usuarioWP con el id '. ($convocatoriaTribunal->getCodigousuariowp())->getId()
                );
            }
            $cvtTrb = $cvtTrb->setCodigousuariowp2($usuarioWP);

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

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

    public function obtenerTribunalConvocatoriasPorUsuarioWP($lang, $codigoUsuarioWP)
    {
        try
        {
            if($codigoUsuarioWP != null && is_numeric($codigoUsuarioWP))
            {
                $entityManager = $this->loadEnv();

                $lconvocatorias = $entityManager->getRepository(DboTribunalconvocatoria::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                        ->andWhere('c.codigousuariowp = :uwp')
                    ->setParameter('uwp', $codigoUsuarioWP)
                    ->addOrderBy('c.codigoconvocatoria', 'DESC')
                    ->groupBy('c.codigoconvocatoria')
                    ->getQuery()
                    ->execute();
                
                if (!$lconvocatorias) {
					$entityManager->getConnection()->close();
                    return ;
                }
				
				$entityManager->getConnection()->close();
				
                return $lconvocatorias;  //$result; 
            }
        }
        catch (Exception $ex){
            echo $exception->getMessage();
            return null;
        }
    }
}

?>