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();
}
}
}
?>