File: /home/undanet/www/PortalEmpleo/src/Repository/DBTribunalConvocatoriaRepository.php
<?php
namespace PortalEmpleo\Repository;
require __DIR__ . '/../../vendor/autoload.php';
require_once __DIR__ . '/../../bootstrap.php';
use Dotenv\Dotenv;
use PortalEmpleo\Entity\DboConvocatoria;
use PortalEmpleo\Entity\DboRol;
use PortalEmpleo\Entity\DboTribunalconvocatoria;
use PortalEmpleo\Entity\WpUsers;
use PortalEmpleo\Entity\WpUsermeta;
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 DBTribunalConvocatoriaRepository extends AbstractController
{
private $dotenv;
private $entityManager;
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;
}
}
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 obtenerTribunal($lang, $codigoconvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$ltrbcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cvt', $codigoconvocatoria)
->addOrderBy('c.codigorol', 'ASC')
->addOrderBy('c.idtribunalconvocatoria', 'ASC')
->getQuery()
->execute();
if (!$ltrbcvt) {
return ;
}
if($lang)
{
$ltraduccionesrol = $this->obtenerListaTraducciones($entityManager, "traduccion_rol", "CodigoRol", "Rol", "Descripcion", $lang, null);
if($ltraduccionesrol)
{
foreach ($ltrbcvt as $trbcvt) {
if($trbcvt->getCodigorol()) //Si no es nula, es decir, no es una candidatura espontanea
{
foreach ($ltraduccionesrol as $rol) {
if($trbcvt->getCodigorol()->getIdrol() == $rol["CodigoRol"])
{
$trbcvt->getCodigorol()->setRol($rol["Rol"]);
$trbcvt->getCodigorol()->setDescripcion($rol["Descripcion"]);
}
}
}
}
}
}
$entityManager->getConnection()->close();
return $ltrbcvt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerTribunalPorConvocatoriayUsuario($lang, $codigoconvocatoria, $codigoUsuarioWP)
{
try
{
if((isset($codigoconvocatoria) && $codigoconvocatoria != null) && (isset($codigoUsuarioWP) && $codigoUsuarioWP != null))
{
$entityManager = $this->loadEnv();
$trbcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.codigousuariowp = :uwp')
->andwhere('c.baja = false')
->setParameter('cvt', $codigoconvocatoria)
->setParameter('uwp', $codigoUsuarioWP)
->addOrderBy('c.idtribunalconvocatoria', 'DESC')
->getQuery()
->execute();
}
if (!$trbcvt) {
$entityManager->getConnection()->close();
return ;
}
else
{
if(is_array($trbcvt))
{
$trbcvt = reset($trbcvt);
}
}
$entityManager->getConnection()->close();
return $trbcvt;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerUsuariosWP()
{
try
{
$entityManagerWP = $this->loadEnvWP();
$lusuariosWP = $entityManagerWP->getRepository(WpUsers::class)
->createQueryBuilder('u')
->where('u.userStatus = 0')
->addOrderBy('u.displayName', 'ASC')
->getQuery()
->execute();
if (!$lusuariosWP) {
return ;
}
$entityManagerWP->getConnection()->close();
return $lusuariosWP;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerRoles($lang)
{
try
{
$entityManager = $this->loadEnv();
$lroles = $entityManager->getRepository(DboRol::class)
->createQueryBuilder('r')
->where('r.baja = false')
->getQuery()
->execute();
if (!$lroles) {
return ;
}
if($lang)
{
$ltraduccionesrol = $this->obtenerListaTraducciones($entityManager, "traduccion_rol", "CodigoRol", "Rol", "Descripcion", $lang, null);
if($ltraduccionesrol)
{
foreach ($lroles as $roles) {
foreach ($ltraduccionesrol as $rol) {
if($roles->getIdrol() == $rol["CodigoRol"])
{
$roles->setRol($rol["Rol"]);
$roles->setDescripcion($rol["Descripcion"]);
}
}
}
}
}
$entityManager->getConnection()->close();
return $lroles;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function quitarPerfilesEvaluadoresTribunalConvocatoria($codigoconvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$entityManagerWP = $this->loadEnvWP();
$ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cvt', $codigoconvocatoria)
->getQuery()
->execute();
if(is_array($ltrbnlcvt))
{
foreach ($ltrbnlcvt as $trbnlcvt) {
$usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
->createQueryBuilder('c')
->where('c.userId = :uid')
->andwhere('c.metaKey = :key')
->setParameter('uid',($trbnlcvt->getCodigousuariowp())->getId())
->setParameter('key','wp_capabilities')
->getQuery()
->execute();
if (!$usuarioWP) {
throw $this->createNotFoundException(
'No se encuentran metadatos para el usuarioWP con el id '. ($trbnlcvt->getCodigousuariowp())->getId()
);
}
if(is_array($usuarioWP))
{
foreach ($usuarioWP as $uWP) {
if(strpos($uWP->getMetaValue(), 'um_evaluador') !== false){
$uWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');
$entityManagerWP->merge($uWP);
$entityManagerWP->flush();
}
}
$entityManagerWP->clear();
}
else
{
if(strpos($usuarioWP->getMetaValue(), 'um_evaluador') !== false){
$usuarioWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');
$entityManagerWP->merge($usuarioWP);
$entityManagerWP->flush();
$entityManagerWP->clear();
}
}
}
}
else
{
$usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
->createQueryBuilder('c')
->where('c.userId = :uid')
->andwhere('c.metaKey = :key')
->setParameter('uid',($ltrbnlcvt->getCodigousuariowp())->getId())
->setParameter('key','wp_capabilities')
->getQuery()
->execute();
if (!$usuarioWP) {
throw $this->createNotFoundException(
'No se encuentran metadatos para el usuarioWP con el id '. ($ltrbnlcvt->getCodigousuariowp())->getId()
);
}
if(is_array($usuarioWP))
{
foreach ($usuarioWP as $uWP) {
if(strpos($uWP->getMetaValue(), 'um_evaluador') !== false){
$uWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');
$entityManagerWP->merge($uWP);
$entityManagerWP->flush();
}
}
$entityManagerWP->clear();
}
else
{
if(strpos($usuarioWP->getMetaValue(), 'um_evaluador') !== false){
$usuarioWP->setMetaValue('a:1:{s:12:"um_candidato";b:1;}');
$entityManagerWP->merge($usuarioWP);
$entityManagerWP->flush();
$entityManagerWP->clear();
}
}
}
$entityManager->getConnection()->close();
$entityManagerWP->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return false;
}
}
public function asignarPerfilEvaluadorTribunalConvocatoria($codigoconvocatoria, $convocatoriaTribunal)
{
try
{
$entityManager = $this->loadEnv();
$entityManagerWP = $this->loadEnvWP();
$ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.codigousuariowp = :uwp')
->andwhere('c.baja = false')
->andWhere("c.essuplente = false OR (c.essuplente = true AND c.asumerolprincipal = true)")
->setParameter('cvt', $codigoconvocatoria)
->setParameter('uwp', ($convocatoriaTribunal->getCodigousuariowp())->getId())
->getQuery()
->execute();
if($ltrbnlcvt)
{
$usuarioWP = $entityManagerWP->getRepository(WpUsermeta::class)
->createQueryBuilder('c')
->where('c.userId = :uid')
->andwhere('c.metaKey = :key')
->setParameter('uid',($convocatoriaTribunal->getCodigousuariowp())->getId())
->setParameter('key','wp_capabilities')
->getQuery()
->execute();
if (!$usuarioWP) {
throw $this->createNotFoundException(
'No se encuentran metadatos para el usuarioWP con el id '. ($convocatoriaTribunal->getCodigousuariowp())->getId()
);
}
if(is_array($usuarioWP))
{
foreach ($usuarioWP as $uWP) {
if(strpos($uWP->getMetaValue(), 'um_candidato') !== false){
$uWP->setMetaValue('a:1:{s:12:"um_evaluador";b:1;}');
$entityManagerWP->merge($uWP);
$entityManagerWP->flush();
}
}
$entityManagerWP->clear();
}
else
{
if(strpos($usuarioWP->getMetaValue(), 'um_candidato') !== false){
$usuarioWP->setMetaValue('a:1:{s:12:"um_evaluador";b:1;}');
$entityManagerWP->merge($usuarioWP);
$entityManagerWP->flush();
$entityManagerWP->clear();
}
}
}
$entityManager->getConnection()->close();
$entityManagerWP->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return false;
}
}
public function borrarTribunalConvocatoria($codigoconvocatoria)
{
try
{
$entityManager = $this->loadEnv();
$ltrbnlcvt = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.codigoconvocatoria = :cvt')
->andwhere('c.baja = false')
->setParameter('cvt', $codigoconvocatoria)
->getQuery()
->execute();
if(is_array($ltrbnlcvt))
{
foreach ($ltrbnlcvt as $trbnlcvt) {
$trbnlcvt->setBaja(true);
$entityManager->merge($trbnlcvt);
$entityManager->flush();
$entityManager->clear();
}
}
else
{
$ltrbnlcvt->setBaja(true);
$entityManager->merge($ltrbnlcvt);
$entityManager->flush();
$entityManager->clear();
}
$entityManager->getConnection()->close();
return true;
}
catch (Exception $ex)
{
echo $exception->getMessage();
return false;
}
}
public function insertarTribunalConvocatoria($codigoconvocatoria, $convocatoriaTribunal)
{
try
{
$entityManager = $this->loadEnv();
$cvtTrb = new DboTribunalconvocatoria();
$cvtTrb = $cvtTrb->setEssuplente($convocatoriaTribunal->getEssuplente());
$cvtTrb = $cvtTrb->setAsumerolprincipal($convocatoriaTribunal->getAsumerolprincipal());
$cvtTrb = $cvtTrb->setBaja($convocatoriaTribunal->getBaja());
$entityManager->persist($cvtTrb);
$entityManager->flush();
$cvt = $entityManager->getRepository(DboConvocatoria::class)->find($codigoconvocatoria);
$entityManager->clear();
if (!$cvt) {
throw $this->createNotFoundException(
'No se encuentra la convocatoria con el id '. $codigoconvocatoria
);
}
$cvtTrb = $cvtTrb->setCodigoconvocatoria2($cvt);
$rol = $entityManager->getRepository(DboRol::class)->find(($convocatoriaTribunal->getCodigorol())->getIdrol());
$entityManager->clear();
if (!$rol) {
throw $this->createNotFoundException(
'No se encuentra el rol con el id '. ($convocatoriaTribunal->getCodigorol())->getIdrol()
);
}
$cvtTrb = $cvtTrb->setCodigorol2($rol);
$entityManagerWP = $this->loadEnvWP();
$usuarioWP = $entityManagerWP->getRepository(WpUsers::class)->find(($convocatoriaTribunal->getCodigousuariowp())->getId());
$entityManagerWP->clear();
if (!$usuarioWP) {
throw $this->createNotFoundException(
'No se encuentra el usuarioWP con el id '. ($convocatoriaTribunal->getCodigousuariowp())->getId()
);
}
$cvtTrb = $cvtTrb->setCodigousuariowp2($usuarioWP);
$entityManager->merge($cvtTrb);
$entityManager->flush();
$entityManager->clear();
$entityManager->getConnection()->close();
return $cvtTrb;
}
catch (Exception $ex)
{
echo $exception->getMessage();
}
}
public function obtenerTribunalConvocatoriasPorUsuarioWP($lang, $codigoUsuarioWP)
{
try
{
if($codigoUsuarioWP != null && is_numeric($codigoUsuarioWP))
{
$entityManager = $this->loadEnv();
$lconvocatorias = $entityManager->getRepository(DboTribunalconvocatoria::class)
->createQueryBuilder('c')
->where('c.baja = false')
->andWhere('c.codigousuariowp = :uwp')
->setParameter('uwp', $codigoUsuarioWP)
->addOrderBy('c.codigoconvocatoria', 'DESC')
->groupBy('c.codigoconvocatoria')
->getQuery()
->execute();
if (!$lconvocatorias) {
$entityManager->getConnection()->close();
return ;
}
$entityManager->getConnection()->close();
return $lconvocatorias; //$result;
}
}
catch (Exception $ex){
echo $exception->getMessage();
return null;
}
}
}
?>