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/dump/data/PortalEmpleo/src/Controller/CandidatoController.php
<?php

namespace PortalEmpleo\Controller;

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

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use PortalEmpleo\Repository\DBCandidatoRepository;
use PortalEmpleo\Repository\DBCandidatoIdiomaRepository;
use PortalEmpleo\Repository\DBCandidatoPerfilRepository;
use PortalEmpleo\Utils\Load;

class CandidatoController extends AbstractController
{
    public $load;

    public function __construct()
    {
        $this->load = new Load();
    }

    /**
     * @Route("/convocatorias", name="convocatoria")
     */
    public function index(): Response
    {
        return $this->render('convocatoria/index.html.twig', [
            'controller_name' => 'ConvocatoriaController',
        ]);
    }


    public function detalleCandidato($idWp, $lang)
    {
        $dbRepository = new DBCandidatoRepository();
        $candidato = call_user_func(array($dbRepository, 'obtenerCandidato'), $lang, $idWp);

        if(is_array($candidato))
        {
            $candidato = reset($candidato);

            $dbRepositoryIdioma = new DBCandidatoIdiomaRepository();
            $lidiomas = call_user_func(array($dbRepositoryIdioma, 'obtenerIdiomas'), $lang, $candidato->getIdcandidato());

            $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
            $lperfil = call_user_func(array($dbRepositoryPerfil, 'obtenerPerfiles'), $lang, $candidato->getIdcandidato());

            $data['candidato'] = $candidato;
            $data['listaidiomas'] = $lidiomas;
            $data['listaperfiles'] = $lperfil;
        }
        else
        {
            $data['candidato'] = $candidato;
            $data['listaidiomas'] = null;
            $data['listaperfiles'] = null;
        }

        $this->load->view('DetalleCandidatoView.php', $data);
    }

    public function actualizarCandidatoPerfil($candidato, $lang)
    {
        $dbRepository = new DBCandidatoRepository();

        if($candidato)
        {
            if($candidato->getIdcandidato())
            {
                $lConvocatorias = call_user_func(array($dbRepository, 'actualizarCandidatoPerfil'), $candidato);
            }
            else
            {
                $lConvocatorias = call_user_func(array($dbRepository, 'nuevoCandidatoPerfil'), $candidato);
            }
        }
    }

    public function quitarCandidatoIdioma($idCandIdioma, $idWp, $lang)
    {
        $dbRepositoryIdioma = new DBCandidatoIdiomaRepository();

        if($idCandIdioma)
        {
            call_user_func(array($dbRepositoryIdioma, 'eliminarCandidatoIdioma'), $idCandIdioma);
        }
        
        $this->detalleCandidato($idWp, $lang);
    }

    public function addCandidatoIdioma($candIdioma, $idWp, $lang)
    {
        $dbRepositoryIdioma = new DBCandidatoIdiomaRepository();

        if($candIdioma)
        {
            $existe =  call_user_func(array($dbRepositoryIdioma, 'comprobarCandidatoIdioma'), ($candIdioma->getCodigocandidato())->getIdcandidato(), ($candIdioma->getCodigoidiomas())->getIdidiomas());

            if(isset($existe) && $existe != false)
            {
                //se actualiza el que existe o se añade uno nuevo si es "otro" idioma
                if($candIdioma->getOtroidioma()!=null && strlen(trim($candIdioma->getOtroidioma()))>0)
                {
                    $result = call_user_func(array($dbRepositoryIdioma, 'comprobarOtrosIdiomas'), $candIdioma);
                    
                    if ($result === true)
                    {
                        //se añade nuevo "otro" idioma
                        call_user_func(array($dbRepositoryIdioma, 'nuevoCandidatoIdioma'), $candIdioma);
                    }
                    else
                    {
                        if($result!=null && $result->getIdcandidatoidioma()>0)
                        {
                            //Se modifica el "otro" idioma que existe
                            call_user_func(array($dbRepositoryIdioma, 'actualizarCandidatoIdioma'), $candIdioma);
                        }
                        else
                        {
                            //no se hace nada porque ya ha añadido el maximo o ha dado error
                            echo '<script language="javascript">alert("No puedes meter más idiomas");</script>';
                        }
                    }
                }
                else
                {
                    //se modifica el que existe y no es "otro" idioma
                    call_user_func(array($dbRepositoryIdioma, 'actualizarCandidatoIdioma'), $candIdioma);
                }
            }
            else
            {
                //no existe, insert nuevo
                call_user_func(array($dbRepositoryIdioma, 'nuevoCandidatoIdioma'), $candIdioma);
            }
        }
        
        $this->detalleCandidato($idWp, $lang);
    }

    public function quitarCandidatoPerfil($idCandPerfil, $idWp, $lang)
    {
        $dbRepositoryPerfil = new DBCandidatoPerfilRepository();

        if($idCandPerfil)
        {
            call_user_func(array($dbRepositoryPerfil, 'eliminarCandidatoPerfil'), $idCandPerfil);
        }
        
        $this->detalleCandidato($idWp, $lang);
    }

    public function addPerfil($candPerfil, $idWp, $lang)
    {
        $dbRepositoryPerfil = new DBCandidatoPerfilRepository();

        if($candPerfil)
        {
            $existe =  call_user_func(array($dbRepositoryPerfil, 'comprobarCandidatoPerfil'), ($candPerfil->getCodigocandidato())->getIdcandidato(), ($candPerfil->getCodigoperfil())->getIdperfil());

            if(isset($existe) && $existe != false)
            {
                //se modifica el que existe
                call_user_func(array($dbRepositoryPerfil, 'actualizarCandidatoPerfil'), $candPerfil);
            }
            else
            {
                //no existe, insert nuevo
                call_user_func(array($dbRepositoryPerfil, 'nuevoCandidatoPerfil'), $candPerfil);
            }
        }
        
        $this->detalleCandidato($idWp, $lang);
    }

    public function obtenerFichaCandidato($idCandidato, $idConvocatoria, $refConvocatoria, $lang)
    {
        if(isset($idCandidato) && is_numeric($idCandidato)/* && (isset($idConvocatoria) && is_numeric($idConvocatoria))*/)
        {
            $dbRepository = new DBCandidatoRepository();
            $candidato = call_user_func(array($dbRepository, 'obtenerCandidatoById'), $lang, $idCandidato);

            if(is_array($candidato))
            {
                $candidato = reset($candidato);

                $dbRepositoryIdioma = new DBCandidatoIdiomaRepository();
                $lidiomas = call_user_func(array($dbRepositoryIdioma, 'obtenerIdiomas'), $lang, $candidato->getIdcandidato());

                $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
                $lperfil = call_user_func(array($dbRepositoryPerfil, 'obtenerPerfiles'), $lang, $candidato->getIdcandidato());

                $data['candidato'] = $candidato;
                if(is_array($lidiomas))
                {
                    $data['listaidiomas'] = $lidiomas;
                }
                else
                {
                    $data['listaidiomas'] = null;
                }
                if(is_array($lperfil))
                {
                    $data['listaperfiles'] = $lperfil;
                }
                else
                {
                    $data['listaperfiles'] = null;
                }
            }

            $data['idConvocatoria'] = $idConvocatoria;
            $data['refConvocatoria'] = $refConvocatoria;
        }

        $this->load->view('FichaCandidatoView.php', $data);
    }

    public function buscadorCandidatos($lang)
    {
        $dbRepository = new DBCandidatoRepository();
        $lcandidato = call_user_func(array($dbRepository, 'obtenerCandidato'), $lang, null);
        $data = [];

        if(is_array($lcandidato))
        {
            foreach ($lcandidato as $candidato) 
            {
                $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
                $lperfil = call_user_func(array($dbRepositoryPerfil, 'obtenerPerfiles'), $lang, $candidato->getIdcandidato());

                if(is_array($lperfil))
                {
                    foreach ($lperfil as $perfil) 
                    {
                        array_push($data, array($candidato, $perfil));
                    }
                }
                else
                {
                    array_push($data, array($candidato, null));
                }
            }
        }
        
        $this->load->view('CandidatoBuscadorView.php', $data); 
    }
}
    
?>