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/DBCandidatoRepository.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\DboArea;
use PortalEmpleo\Entity\DboCandidatoidioma;
use PortalEmpleo\Entity\DboCandidatoperfil;
use PortalEmpleo\Entity\DboPerfil;
use PortalEmpleo\Entity\DboMateria;
use PortalEmpleo\Entity\DboTitulacion;
use PortalEmpleo\Entity\WpUsers;
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 DBCandidatoRepository extends AbstractController
{
    private $dotenv;
    private $entityManager;
    private const MAX_CANDIDATOS = 50;

    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;
        }
    }
    

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

            if(!isset($idWp))
            {
                $lcandidatos = $entityManager->getRepository(DboCandidato::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                    ->addOrderBy('c.apellido1', 'DESC')
                    ->addOrderBy('c.apellido2', 'DESC')
                    ->addOrderBy('c.nombre', 'DESC')
                    //->setMaxResults(self::MAX_CANDIDATOS)
                    ->getQuery()
                    ->execute();
            }
            else
            {
                $lcandidatos = $entityManager->getRepository(DboCandidato::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                        ->andWhere('c.codigousuariowp = :idwp')
                    ->setParameter('idwp', $idWp)
                    ->getQuery()
                    ->execute();
                
                if (!$lcandidatos) {
                    return;
                    throw $this->createNotFoundException(
                        'No se encuentra el usuario con el id de wp '.$idWp
                    );
                }
                
                $codigoarea = ($lcandidatos[0]->getCodigoarea())->getIdarea();
                $codigotitulacion = ($lcandidatos[0]->getCodigotitulacion())->getIdtitulacion();
                $codigomateria = ($lcandidatos[0]->getCodigomateria())->getIdmateria();
            }
             
            if (!$lcandidatos) {
				$entityManager->getConnection()->close();
                return ;
            }

            if($lang)
            {
                $ltraduccionesarea = $this->obtenerListaTraducciones($entityManager, "traduccion_area", "CodigoArea", "Area", "Descripcion", $lang, isset($idWp) ? $codigoarea : null);

                if($ltraduccionesarea)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionesarea as $traduccionarea) {
                            if(($cand->getCodigoarea())->getIdarea() == $traduccionarea["CodigoArea"])
                            {
                                ($cand->getCodigoarea())->setArea($traduccionarea["Area"]);
                                ($cand->getCodigoarea())->setDescripcion($traduccionarea["Descripcion"]);
                            }
                        }
                    }
                }

                $ltraduccionestitulacion = $this->obtenerListaTraducciones($entityManager, "traduccion_titulacion", "CodigoTitulacion", "Titulacion", "Descripcion", $lang, isset($idWp) ? $codigotitulacion : null);

                if($ltraduccionestitulacion)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionestitulacion as $traducciontitulacion) {
                            if(($cand->getCodigotitulacion())->getIdtitulacion() == $traducciontitulacion["CodigoTitulacion"])
                            {
                                ($cand->getCodigotitulacion())->setTitulacion($traducciontitulacion["Titulacion"]);
                                ($cand->getCodigotitulacion())->setDescripcion($traducciontitulacion["Descripcion"]);
                            }
                        }
                    }
                }
                
                $ltraduccionesmateria = $this->obtenerListaTraducciones($entityManager, "traduccion_materia", "CodigoMateria", "Materia", "Descripcion", $lang, isset($idWp) ? $codigomateria : null);

                if($ltraduccionesmateria)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionesmateria as $traduccionmateria) {
                            if(($cand->getCodigomateria())->getIdmateria() == $traduccionmateria["CodigoMateria"])
                            {
                                ($cand->getCodigomateria())->setMateria($traduccionmateria["Materia"]);
                                //($cand->getCodigomateria())->setDescripcion($traduccionmateria["Descripcion"]); ->DboMateria no tiene descripción
                            }
                        }
                    }
                }
            }
			
			$entityManager->getConnection()->close();
            
            return $lcandidatos;  //$result; 
        }
        catch (Exception $ex){
            echo $exception->getMessage();
            return null;
        }
    }

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

            if(isset($idCandidato))
            {
                $lcandidatos = $entityManager->getRepository(DboCandidato::class)
                    ->createQueryBuilder('c')
                    ->where('c.baja = false')
                        ->andWhere('c.idcandidato = :id')
                    ->setParameter('id', $idCandidato)
                    ->getQuery()
                    ->execute();
                
                if (!$lcandidatos) {
                    return;
                    throw $this->createNotFoundException(
                        'No se encuentra el usuario con el id '.$idCandidato
                    );
                }
                
                $codigoarea = ($lcandidatos[0]->getCodigoarea())->getIdarea();
                $codigotitulacion = ($lcandidatos[0]->getCodigotitulacion())->getIdtitulacion();
                $codigomateria = ($lcandidatos[0]->getCodigomateria())->getIdmateria();
            }
            else
            {
                return null;
            }
             
            if (!$lcandidatos) {
                return ;
            }

            if($lang)
            {
                $ltraduccionesarea = $this->obtenerListaTraducciones($entityManager, "traduccion_area", "CodigoArea", "Area", "Descripcion", $lang, isset($idCandidato) ? $codigoarea : null);

                if($ltraduccionesarea)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionesarea as $traduccionarea) {
                            if(($cand->getCodigoarea())->getIdarea() == $traduccionarea["CodigoArea"])
                            {
                                ($cand->getCodigoarea())->setArea($traduccionarea["Area"]);
                                ($cand->getCodigoarea())->setDescripcion($traduccionarea["Descripcion"]);
                            }
                        }
                    }
                }

                $ltraduccionestitulacion = $this->obtenerListaTraducciones($entityManager, "traduccion_titulacion", "CodigoTitulacion", "Titulacion", "Descripcion", $lang, isset($idCandidato) ? $codigotitulacion : null);

                if($ltraduccionestitulacion)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionestitulacion as $traducciontitulacion) {
                            if(($cand->getCodigotitulacion())->getIdtitulacion() == $traducciontitulacion["CodigoTitulacion"])
                            {
                                ($cand->getCodigotitulacion())->setTitulacion($traducciontitulacion["Titulacion"]);
                                ($cand->getCodigotitulacion())->setDescripcion($traducciontitulacion["Descripcion"]);
                            }
                        }
                    }
                }
                
                $ltraduccionesmateria = $this->obtenerListaTraducciones($entityManager, "traduccion_materia", "CodigoMateria", "Materia", "Descripcion", $lang, isset($idCandidato) ? $codigomateria : null);

                if($ltraduccionesmateria)
                {
                    foreach ($lcandidatos as $cand) {
                        foreach ($ltraduccionesmateria as $traduccionmateria) {
                            if(($cand->getCodigomateria())->getIdmateria() == $traduccionmateria["CodigoMateria"])
                            {
                                ($cand->getCodigomateria())->setMateria($traduccionmateria["Materia"]);
                                //($cand->getCodigomateria())->setDescripcion($traduccionmateria["Descripcion"]); ->DboMateria no tiene descripción
                            }
                        }
                    }
                }
            }
            
			$entityManager->getConnection()->close();
			
            return $lcandidatos;  //$result; 
        }
        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 actualizarCandidatoPerfil($candidato)
    {
        try
        {
            $entityManager = $this->loadEnv();
            
            $cdt = $entityManager->getRepository(DboCandidato::class)->find($candidato->getIdcandidato());

            if (!$cdt) {
                throw $this->createNotFoundException(
                    'No se encuentra el candidato con el id '.$candidato->getIdcandidato()
                );
            }

            $cdt = $cdt->setNombre($candidato->getNombre());
            $cdt = $cdt->setApellido1($candidato->getApellido1());
            $cdt = $cdt->setApellido2($candidato->getApellido2());
            $cdt = $cdt->setDocumento($candidato->getDocumento());
            $cdt = $cdt->setFechanacimiento($candidato->getFechanacimiento());
            
            $entityManager2 = $this->loadEnv();

            $cdtArea = $entityManager2->getRepository(DboArea::class)->find(($candidato->getCodigoarea())->getIdarea());
            $entityManager2->clear();
            if (!$cdtArea) {
                throw $this->createNotFoundException(
                    'No se encuentra el area de candidato con el id '.($candidato->getCodigoarea())->getIdarea()
                );
            }
            $cdt = $cdt->setCodigoarea2($cdtArea);

            $cdtTitulacion = $entityManager2->getRepository(DboTitulacion::class)->find(($candidato->getCodigotitulacion())->getIdtitulacion());
            $entityManager2->clear();
            if (!$cdtTitulacion) {
                throw $this->createNotFoundException(
                    'No se encuentra la titulacion de candidato con el id '.($candidato->getCodigotitulacion())->getIdtitulacion()
                );
            }
            $cdt = $cdt->setCodigotitulacion2($cdtTitulacion);

            $cdtMateria = $entityManager2->getRepository(DboMateria::class)->find(($candidato->getCodigomateria())->getIdmateria());
            $entityManager2->clear();
            if (!$cdtMateria) {
                throw $this->createNotFoundException(
                    'No se encuentra la materia de candidato con el id '.($candidato->getCodigomateria())->getIdmateria()
                );
            }
            $cdt = $cdt->setCodigomateria2($cdtMateria);

            $cdt = $cdt->setPuesto(null);
            $cdt = $cdt->setDescripcionmaster($candidato->getDescripcionmaster());
            $cdt = $cdt->setDescripcionespecializacion($candidato->getDescripcionespecializacion());
            $cdt = $cdt->setRutacv($candidato->getRutacv());
            $cdt = $cdt->setRutacp($candidato->getRutacp());
            $cdt = $cdt->setMotivacion($candidato->getMotivacion());
            $cdt = $cdt->setHaparticipadoanteriormente($candidato->getHaparticipadoanteriormente());
            $cdt = $cdt->setComoconocido($candidato->getComoconocido());

            $entityManager3 = $this->loadEnvWP();

            $cdtUserWP = $entityManager3->getRepository(WpUsers::class)->find(($candidato->getCodigousuariowp())->getId());
            $entityManager3->clear();
            if (!$cdtUserWP) {
                throw $this->createNotFoundException(
                    'No se encuentra el usuario de WP con el id '.($candidato->getCodigousuariowp())->getId()
                );
            }
            $cdt = $cdt->setCodigousuariowp2($cdtUserWP);
            
            $cdt = $cdt->setAceptargpd($candidato->getAceptargpd());
            $cdt = $cdt->setAceptarecibiremails($candidato->getAceptarecibiremails());
            $cdt = $cdt->setBaja($candidato->getBaja());

            $entityManager->merge($cdt);
            $entityManager->flush();
            $entityManager->clear();
			$entityManager->getConnection()->close();
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }

    public function nuevoCandidatoPerfil($candidato)
    {
        try
        {
            $entityManager = $this->loadEnv();
            
            $cdt = new DboCandidato();

            $cdt = $cdt->setNombre($candidato->getNombre());
            $cdt = $cdt->setApellido1($candidato->getApellido1());
            $cdt = $cdt->setApellido2($candidato->getApellido2());
            $cdt = $cdt->setDocumento($candidato->getDocumento());
            $cdt = $cdt->setFechanacimiento($candidato->getFechanacimiento());
            $cdt = $cdt->setDescripcionmaster($candidato->getDescripcionmaster());
            $cdt = $cdt->setDescripcionespecializacion($candidato->getDescripcionespecializacion());
            $cdt = $cdt->setRutacv($candidato->getRutacv());
            $cdt = $cdt->setRutacp($candidato->getRutacp());
            $cdt = $cdt->setMotivacion($candidato->getMotivacion());
            $cdt = $cdt->setHaparticipadoanteriormente($candidato->getHaparticipadoanteriormente());
            $cdt = $cdt->setComoconocido($candidato->getComoconocido());
            $cdt = $cdt->setAceptargpd($candidato->getAceptargpd());
            $cdt = $cdt->setAceptarecibiremails($candidato->getAceptarecibiremails());
            $cdt = $cdt->setBaja($candidato->getBaja());
            
            $entityManager->persist($cdt);
            $entityManager->flush();

            $entityManager2 = $this->loadEnv();
            $cdtArea = $entityManager2->getRepository(DboArea::class)->find(($candidato->getCodigoarea())->getIdarea());
            $entityManager2->clear();
            if (!$cdtArea) {
                throw $this->createNotFoundException(
                    'No se encuentra el area de candidato con el id '.($candidato->getCodigoarea())->getIdarea()
                );
            }
            $cdt = $cdt->setCodigoarea2($cdtArea);

            $cdtTitulacion = $entityManager2->getRepository(DboTitulacion::class)->find(($candidato->getCodigotitulacion())->getIdtitulacion());
            $entityManager2->clear();
            if (!$cdtTitulacion) {
                throw $this->createNotFoundException(
                    'No se encuentra la titulacion de candidato con el id '.($candidato->getCodigotitulacion())->getIdtitulacion()
                );
            }
            $cdt = $cdt->setCodigotitulacion2($cdtTitulacion);

            $cdtMateria = $entityManager2->getRepository(DboMateria::class)->find(($candidato->getCodigomateria())->getIdmateria());
            $entityManager2->clear();
            if (!$cdtMateria) {
                throw $this->createNotFoundException(
                    'No se encuentra la materia de candidato con el id '.($candidato->getCodigomateria())->getIdmateria()
                );
            }
            $cdt = $cdt->setCodigomateria2($cdtMateria);

            $entityManager3 = $this->loadEnvWP();
            $cdtUserWP = $entityManager3->getRepository(WpUsers::class)->find(($candidato->getCodigousuariowp())->getId());
            $entityManager3->clear();
            if (!$cdtUserWP) {
                throw $this->createNotFoundException(
                    'No se encuentra el usuario de WP con el id '.($candidato->getCodigousuariowp())->getId()
                );
            }
            $cdt = $cdt->setCodigousuariowp2($cdtUserWP);
            
            $entityManager->merge($cdt);
            $entityManager->flush();
            $entityManager->clear();
			$entityManager->getConnection()->close();
        }
        catch (Exception $ex)
        {
            echo $exception->getMessage();
        }
    }
}

?>