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/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\Repository\DBImpugnacionRepository;
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([$dbRepository, 'obtenerCandidato'], $lang, $idWp);

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

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

            $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
            $lperfil = call_user_func([
                $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([
                    $dbRepository, 'actualizarCandidatoPerfil',
                ], $candidato);
            } else {
                $lConvocatorias = call_user_func([
                    $dbRepository, 'nuevoCandidatoPerfil',
                ], $candidato);
            }
        }
    }

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

        if ($idCandIdioma) {
            call_user_func([
                $dbRepositoryIdioma, 'eliminarCandidatoIdioma',
            ], $idCandIdioma);
        }

        $this->detalleCandidato($idWp, $lang);
    }

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

        if ($candIdioma) {
            $existe = call_user_func([
                $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([
                        $dbRepositoryIdioma, 'comprobarOtrosIdiomas',
                    ], $candIdioma);

                    if ($result === true) {
                        //se añade nuevo "otro" idioma
                        call_user_func([
                            $dbRepositoryIdioma, 'nuevoCandidatoIdioma',
                        ], $candIdioma);
                    } else {
                        if ($result != null
                            && $result->getIdcandidatoidioma() > 0) {
                            //Se modifica el "otro" idioma que existe
                            call_user_func([
                                $dbRepositoryIdioma, 'actualizarCandidatoIdioma',
                            ], $candIdioma);
                        } else {
                            //no se hace nada porque ya ha añadido el maximo o ha dado error
                            echo '<script>alert("No puedes meter más idiomas");</script>';
                        }
                    }
                } else {
                    //se modifica el que existe y no es "otro" idioma
                    call_user_func([
                        $dbRepositoryIdioma, 'actualizarCandidatoIdioma',
                    ], $candIdioma);
                }
            } else {
                //no existe, insert nuevo
                call_user_func([
                    $dbRepositoryIdioma, 'nuevoCandidatoIdioma',
                ], $candIdioma);
            }
        }

        $this->detalleCandidato($idWp, $lang);
    }

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

        if ($idCandPerfil) {
            call_user_func([
                $dbRepositoryPerfil, 'eliminarCandidatoPerfil',
            ], $idCandPerfil);
        }

        $this->detalleCandidato($idWp, $lang);
    }

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

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

            if (isset($existe) && $existe != false) {
                //se modifica el que existe
                call_user_func([
                    $dbRepositoryPerfil, 'actualizarCandidatoPerfil',
                ], $candPerfil);
            } else {
                //no existe, insert nuevo
                call_user_func([
                    $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([
                $dbRepository, 'obtenerCandidatoById',
            ], $lang, $idCandidato);

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

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

                $dbRepositoryPerfil = new DBCandidatoPerfilRepository();
                $lperfil = call_user_func([
                    $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([$dbRepository, 'obtenerCandidato'], $lang, null);
        $data = [];

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

                if (is_array($lperfil)) {
                    foreach ($lperfil as $perfil) {
                        array_push($data, [$candidato, $perfil]);
                    }
                } else {
                    array_push($data, [$candidato, null]);
                }
            }
        }

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

    public function callReport($lang)
    {
        $dbRepository = new DBConvocatoriaRepository();
        $lConvocatorias = call_user_func([
            $dbRepository, 'obtenerConvocatorias',
        ], $lang, null, false);
        $conv = [];

        if (is_array($lConvocatorias)) {
            foreach ($lConvocatorias as $convocatoria) {
                $idConvocatoria = $convocatoria->getIdconvocatoria();

                $actas['requisitos'] =
                    $this->obtenerRequisitosConvocatoria($lang, $idConvocatoria);
                $actas['meritos'] =
                    $this->obtenerMeritosConvocatoria($lang, $idConvocatoria);
                $actas['lcandidato'] =
                    $this->obtenerCandidatosConvocatoria($lang, $idConvocatoria);

                $dbRepository1 = new DBTribunalConvocatoriaRepository();
                $actas['ltribunal'] = call_user_func([
                    $dbRepository1, 'obtenerTribunal',
                ], $lang, $idConvocatoria);

                $dbRepository2 = new DBTribunalAprobacionRequisitosRepository();
                $actas['aprobacionr'] = call_user_func([
                    $dbRepository2, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository3 = new DBTribunalAprobacionMeritosRepository();
                $actas['aprobacionm'] = call_user_func([
                    $dbRepository3, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);

                $dbRepository4 = new DBTribunalAprobacionExamenRepository();
                $actas['aprobacione'] = call_user_func([
                    $dbRepository4, 'obtenerAprobacionesPorConvocatoria',
                ], $lang, $idConvocatoria);


                $convocatoriaFormateada = [
                    'id' => $idConvocatoria,
                    'referencia' => $convocatoria->getReferencia(),
                    'descripcion' => $convocatoria->getDescripcion(),
                    'trabajo' => $convocatoria->getPuestotrabajo(),
                    'finicio' => $convocatoria->getFechainicio(),
                    'ffin' => $convocatoria->getFechafin(),
                    'basesgenerales' => $convocatoria->getRutaarchivoconvocatoria(),
                    'basesespecificas' => $convocatoria->getRutaarchivoespecifico(),
                    'actas' => $actas,
                    'resolucionrequisitos' => $convocatoria->getRutaarchivorequisitos(),
                    'resolucionexamen' => $convocatoria->getRutaarchivoexamen(),
                    'resolucionmeritos' => $convocatoria->getRutaarchivoresolucionfinal(),
                ];

                array_push($conv, $convocatoriaFormateada);
            }
        }
        //dump($conv);

        $this->load->view('reports/call.php', $conv);
    }

}

?>