File: /home/undanet/www//PortalEmpleo/src/Repository/DBCandidatoConvocatoriaRepository.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\DboCandidatoconvocatoria;
use PortalEmpleo\Entity\DboConvocatoria;
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 DBCandidatoConvocatoriaRepository extends AbstractController
{
private $dotenv;
private $entityManager;
private const MAX_PERFILES = 5;
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 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 nuevoCandidatoConvocatoria($cndcvt)
{
try
{
$entityManager = $this->loadEnv();
//Buscamos que no esté inscrito ya
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.puestotrabajo = :pt')
->andwhere('c.baja = false')
->setParameter('cdt', ($cndcvt->getCodigocandidato())->getIdcandidato())
->setParameter('cvt', ($cndcvt->getCodigoconvocatoria())->getIdconvocatoria())
->setParameter('pt', $cndcvt->getPuestotrabajo())
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
return false;
}
$candconvo = new DboCandidatoconvocatoria();
$candconvo = $candconvo->setFechainscripcion($cndcvt->getFechainscripcion());
$candconvo = $candconvo->setPuestotrabajo($cndcvt->getPuestotrabajo());
$candconvo = $candconvo->setRutacv($cndcvt->getRutacv());
$candconvo = $candconvo->setRutacp($cndcvt->getRutacp());
$candconvo = $candconvo->setRequisitosSuperados(true);
$candconvo = $candconvo->setImpugnacionRequisitos(false);
$candconvo = $candconvo->setImpungnacionMeritos(false);
$candconvo = $candconvo->setBaja(false);
$entityManager->persist($candconvo);
$entityManager->flush();
$entityManager2 = $this->loadEnv();
$cnd = $entityManager2->getRepository(DboCandidato::class)->find(($cndcvt->getCodigocandidato())->getIdcandidato());
$entityManager2->clear();
if (!$cnd) {
throw $this->createNotFoundException(
'No se encuentra el candidato con el id '.($cndcvt->getCodigocandidato())->getIdcandidato()
);
}
$candconvo = $candconvo->setCodigocandidato2($cnd);
$entityManager2 = $this->loadEnv();
$cvt = $entityManager2->getRepository(DboConvocatoria::class)->find(($cndcvt->getCodigoconvocatoria())->getIdconvocatoria());
$entityManager2->clear();
if (!$cvt) {
throw $this->createNotFoundException(
'No se encuentra la convocatoria con el id '.($cndcvt->getCodigoconvocatoria())->getIdconvocatoria()
);
}
$candconvo = $candconvo->setCodigoconvocatoria2($cvt);
$entityManager->merge($candconvo);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function insertarEntrevista( $idCandidato, $idConvocatoria, $entrevista )
{
try
{
$entityManager = $this->loadEnv();
//Buscamos que no esté inscrito ya
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->setParameter('cvt', $idConvocatoria)
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
$cdtcvt->setEntrevista($entrevista);
$entityManager->flush();
}
}
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function actualizarRequisitosSuperados( $idCandidato, $idConvocatoria, $reqaprobados )
{
try
{
$entityManager = $this->loadEnv();
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->setParameter('cvt', $idConvocatoria)
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
$cdtcvt->setRequisitosSuperados($reqaprobados);
$entityManager->flush();
}
}
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function actualizarExamensuperado( $idCandidato, $idConvocatoria, $examenAprobado )
{
try
{
$entityManager = $this->loadEnv();
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->setParameter('cvt', $idConvocatoria)
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
$cdtcvt->setExamenSuperado($examenAprobado);
$entityManager->flush();
}
}
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function ImpugnarRequisitos( $idCandidato, $idConvocatoria )
{
try
{
$entityManager = $this->loadEnv();
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->setParameter('cvt', $idConvocatoria)
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
$cdtcvt->setImpugnacionRequisitos(true);
$entityManager->flush();
}
}
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function ImpugnarMeritos( $idCandidato, $idConvocatoria )
{
try
{
$entityManager = $this->loadEnv();
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->setParameter('cvt', $idConvocatoria)
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
$cdtcvt->setImpungnacionMeritos(true);
$entityManager->flush();
}
}
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function obtenerMisCandidaturas($lang, $codigocandidato)
{
try
{
$entityManager = $this->loadEnv();
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.baja = false')
->setParameter('cdt', $codigocandidato)
->addOrderBy('c.fechainscripcion', 'DESC')
->getQuery()
->execute();
if (!$lcdtcvt) {
return ;
}
if($lang)
{
$ltraduccionesestadoconvocatoria = $this->obtenerListaTraducciones($entityManager, "traduccion_estadoconvocatoria", "CodigoEstadoConvocatoria", "Estado", "Descripcion", $lang, null);
if($ltraduccionesestadoconvocatoria)
{
foreach ($lcdtcvt as $cdtcvt) {
if($cdtcvt->getCodigoconvocatoria()) //Si no es nula, es decir, no es una candidatura espontanea
{
foreach ($ltraduccionesestadoconvocatoria as $traduccionestado) {
if((($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->getIdestadoconvocatoria() == $traduccionestado["CodigoEstadoConvocatoria"])
{
(($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->setEstado($traduccionestado["Estado"]);
(($cdtcvt->getCodigoconvocatoria())->getCodigoestadoconvocatoria())->setDescripcion($traduccionestado["Descripcion"]);
}
}
}
}
}
}
$entityManager->getConnection()->close();
return $lcdtcvt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function nuevaCandidaturaEspontanea($cndcvt)
{
try
{
$entityManager = $this->loadEnv();
//Buscamos que no esté inscrito ya
$lcdtcvt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.codigoconvocatoria is NULL')
//->andwhere('c.puestotrabajo = :pt')
->andwhere('c.baja = false')
->setParameter('cdt', ($cndcvt->getCodigocandidato())->getIdcandidato())
//->setParameter('cvt', null)
//->setParameter('pt', $cndcvt->getPuestotrabajo())
->getQuery()
->execute();
if ($lcdtcvt && count($lcdtcvt)>=1) {
return false;
}
$candconvo = new DboCandidatoconvocatoria();
$candconvo = $candconvo->setFechainscripcion($cndcvt->getFechainscripcion());
$candconvo = $candconvo->setPuestotrabajo($cndcvt->getPuestotrabajo());
$candconvo = $candconvo->setRutacv($cndcvt->getRutacv());
$candconvo = $candconvo->setRutacp($cndcvt->getRutacp());
$candconvo = $candconvo->setBaja(false);
$entityManager->persist($candconvo);
$entityManager->flush();
$entityManager2 = $this->loadEnv();
$cnd = $entityManager2->getRepository(DboCandidato::class)->find(($cndcvt->getCodigocandidato())->getIdcandidato());
$entityManager2->clear();
if (!$cnd) {
throw $this->createNotFoundException(
'No se encuentra el candidato con el id '.($cndcvt->getCodigocandidato())->getIdcandidato()
);
}
$candconvo = $candconvo->setCodigocandidato2($cnd);
/*$entityManager2 = $this->loadEnv();
$cvt = $entityManager2->getRepository(DboConvocatoria::class)->find(($cndcvt->getCodigoconvocatoria())->getIdconvocatoria());
$entityManager2->clear();
if (!$cvt) {
throw $this->createNotFoundException(
'No se encuentra la convocatoria con el id '.($cndcvt->getCodigoconvocatoria())->getIdconvocatoria()
);
}
$candconvo = $candconvo->setCodigoconvocatoria2($cvt);*/
$entityManager->merge($candconvo);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return null;
}
}
public function obtenerCandidatosPorConvocatoriaMer($lang, $idConvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->andwhere('c.requisitossuperados = true')
->andwhere('c.examensuperado = true')
->setParameter('cvt', $idConvocatoria)
->addOrderBy('c.codigocandidato', 'DESC')
->getQuery()
->execute();
if (!$lcdt) {
return ;
}
$entityManager->getConnection()->close();
return $lcdt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerCandidatosPorConvocatoriaExam($lang, $idConvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->andwhere('c.requisitossuperados = true')
->setParameter('cvt', $idConvocatoria)
->addOrderBy('c.codigocandidato', 'DESC')
->getQuery()
->execute();
if (!$lcdt) {
$entityManager->getConnection()->close();
return ;
}
$entityManager->getConnection()->close();
return $lcdt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerCandidatosPorConvocatoria($lang, $idConvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cvt', $idConvocatoria)
->addOrderBy('c.codigocandidato', 'DESC')
->getQuery()
->execute();
if (!$lcdt) {
$entityManager->getConnection()->close();
return ;
}
$entityManager->getConnection()->close();
return $lcdt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerConvocatoriasPorCandidatos($lang, $idCandidato)
{
try
{
$entityManager = $this->loadEnv();
$lcdt = $entityManager->getRepository(DboCandidatoconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigocandidato = :cdt')
->andwhere('c.baja = false')
->setParameter('cdt', $idCandidato)
->addOrderBy('c.codigoconvocatoria', 'DESC')
->getQuery()
->execute();
if (!$lcdt) {
$entityManager->getConnection()->close();
return ;
}
$entityManager->getConnection()->close();
return $lcdt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
}
?>