CandidatoRepository.php 10.9 KB
<?php

namespace UBV\SurUbvBundle\Entity;

use Doctrine\ORM\EntityRepository;

use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\Query;

/**
 * CandidatoRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class CandidatoRepository extends EntityRepository
{
  public function findDatosParaCandidatos($candidato)
  {
    $datosBusqueda = $this->asignarValoresDeBusqueda($candidato);
    $arregloCandidato = $this->findDatosCandidatos($datosBusqueda,$candidato);
    //die(dump($arregloCandidato));
    return $arregloCandidato;
  }
  
  private function findDatosCandidatos($datosBusqueda,$candidato){
    $em = $this->getEntityManager();
    
    $programaAsignadoConsulta = $em->createQueryBuilder()->select('programa','programaTipo','aldea','aldeaPrograma','ambiente','parroquia','municipio','estado')
                   ->from('UBVSurUbvBundle:AldeaPrograma', 'aldeaPrograma')
                   ->LeftJoin('aldeaPrograma.aldea', 'aldea', 'aldeaPrograma.aldea_id = aldea.id')
                   ->LeftJoin('aldeaPrograma.programa', 'programa', 'aldeaPrograma.programa_id = programa.id')
                   ->LeftJoin('programa.programaTipo', 'programaTipo', 'programaTipo.programa_id = programa.id')
                   ->LeftJoin('aldea.ambiente', 'ambiente', 'aldea.ambiente_id = ambiente.id')
                   ->LeftJoin('ambiente.parroquia', 'parroquia', 'ambiente.parroquia_id = parroquia.id')
                   ->LeftJoin('parroquia.municipio', 'municipio', 'parroquia.municipio_id = municipio.id')
                   ->LeftJoin('municipio.estado', 'estado', 'municipio.estado_id = estado.id')
                   ->where('aldeaPrograma.codigo_opsu= :codigoOpsuPrograma')
                   ->setParameter('codigoOpsuPrograma', '123')
                   ->getQuery()
                   ->getOneOrNullResult();
    
    $etniaConsulta = $em->createQueryBuilder()->select('etnia')
                            ->from('UBVSurUbvBundle:Etnia', 'etnia')
                            ->where('etnia.descripcion= :etnia')
                            ->setParameter('etnia', $datosBusqueda["etnia"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $discapacidadConsulta = $em->createQueryBuilder()->select('discapacidad')
                            ->from('UBVSurUbvBundle:Discapacidad', 'discapacidad')
                            ->where('discapacidad.descripcion= :discapacidad')
                            ->setParameter('discapacidad', $datosBusqueda["discapacidad"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $periodoConsulta = $em->createQueryBuilder()->select('periodo')
                            ->from('UBVSurUbvBundle:PeriodoAcademico', 'periodo')
                            ->where('periodo.descripcion= :periodo')
                            ->setParameter('periodo', $datosBusqueda["periodo"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $estadoCivilConsulta = $em->createQueryBuilder()->select('estadoCivil')
                            ->from('UBVSurUbvBundle:EstadoCivil', 'estadoCivil')
                            ->where('estadoCivil.codigo= :estadoCivil')
                            ->setParameter('estadoCivil', $datosBusqueda["estadoCivil"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $generoConsulta = $em->createQueryBuilder()->select('genero')
                            ->from('UBVSurUbvBundle:Genero', 'genero')
                            ->where('genero.codigo= :genero')
                            ->setParameter('genero', $datosBusqueda["genero"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $documentoIdentidadTipoConsulta = $em->createQueryBuilder()->select('documentoIdentidadTipo')
                            ->from('UBVSurUbvBundle:DocumentoIdentidadTipo', 'documentoIdentidadTipo')
                            ->where('documentoIdentidadTipo.codigo= :documentoIdentidadTipo')
                            ->setParameter('documentoIdentidadTipo', $datosBusqueda["documentoIdentidadTipo"])
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $telefonoCodigoAreaConsulta = $em->createQueryBuilder()->select('telefonoCodigoArea')
                            ->from('UBVSurUbvBundle:TelefonoCodigoArea', 'telefonoCodigoArea')
                            ->where('telefonoCodigoArea.descripcion LIKE :telefonoCodigoArea')
                            ->setParameter('telefonoCodigoArea', '%'.$datosBusqueda["codigoArea"].'%')
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $correoTipoConsulta = $em->createQueryBuilder()->select('correoTipo')
                            ->from('UBVSurUbvBundle:CorreoTipo', 'correoTipo')
                            ->where('correoTipo.descripcion LIKE :correoTipo')
                            ->setParameter('correoTipo', '%Personal%')
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $aspiranteEstatusConsulta = $em->createQueryBuilder()->select('aspiranteEstatus')
                            ->from('UBVSurUbvBundle:AspiranteEstatus', 'aspiranteEstatus')
                            ->where('aspiranteEstatus.descripcion LIKE :aspiranteEstatus')
                            ->setParameter('aspiranteEstatus', 'No Inscrito')
                            ->getQuery()
                            ->getOneOrNullResult();
    
    $arregloCosultas = array("AldeaPrograma"=>$programaAsignadoConsulta,"Etnia"=>$etniaConsulta,"Discapacidad"=>$discapacidadConsulta,
                             "PeriodoAcademico"=>$periodoConsulta,"EstadoCivil"=>$estadoCivilConsulta,"Genero"=>$generoConsulta,
                             "DocumentoIdentidadTipo"=>$documentoIdentidadTipoConsulta,"TelefonoCodigoArea"=>$telefonoCodigoAreaConsulta,
                             "CorreoTipo"=>$correoTipoConsulta,"AspiranteEstatus"=>$aspiranteEstatusConsulta,
                       );
    //die(dump($arregloCosultas));
    $arregloCandidato = $this->ordenarArregloCandidato($arregloCosultas, $candidato);
    return $arregloCandidato;
  }
  
  public function findCandidatoByIdenProg($candidato){
    $em = $this->getEntityManager();
    //die(dump($candidato["programaAsig"]->getProgramaTipo()->getId()));
    $existeCandidato = $em->createQueryBuilder()->select('candidato','programa')
                            ->from('UBVSurUbvBundle:Candidato', 'candidato')
                            ->LeftJoin('candidato.programa', 'programa', 'candidato.programa_id = programa.id')
                            ->LeftJoin('programa.programaTipo', 'programaTipo', 'programa.programa_tipo_id = programaTipo.id')
                            ->where('candidato.identificacion= :identificacion')
                            ->Andwhere('programaTipo.id= :programaTipoId')
                            ->setParameter('identificacion', $candidato["identificacion"])
                            ->setParameter('programaTipoId', $candidato["programaAsig"]->getProgramaTipo()->getId())
                            ->getQuery()
                            ->getOneOrNullResult();
    //die(dump($existeCandidato));
    if (is_null($existeCandidato)){
      return false;
    }else{
      return true;
    }
    
  }
  
  
  private function asignarValoresDeBusqueda($candidato){
    foreach($candidato as $clave => $valor){
      if($clave == "codPrograma"){
        $codigoOpsuPrograma = $valor;
      }
      elseif($clave == "nacionalidad"){
        $documentoIdentidadTipo = $valor;
      }
      elseif($clave == "genero"){
        $genero = $valor;
      }
      elseif($clave == "estadoCivil"){
        $estadoCivil = $valor;
      }
      elseif($clave == "telefono"){
        $codigoArea = substr($valor, 0,3);
        $telefono = substr($valor,3);
      }
      elseif($clave == "discapacidad"){
        $discapacidad = $valor;
      }
      elseif($clave == "trabaja"){
        if($valor === 'S'){
          $trabaja=true;
        }else{
          $trabaja=false;
        }
      }
      elseif($clave == "etnia"){
        $etnia = $valor;
      }
      elseif($clave == "periodoAsig"){
        $periodoAsignado = explode('-', $valor);
        $periodo = $periodoAsignado[1].'-'.$periodoAsignado[0];
      }   
        
    }
    
    return array("codPrograma"=>$codigoOpsuPrograma,"documentoIdentidadTipo"=>$documentoIdentidadTipo,"genero"=>$genero,
                 "estadoCivil"=>$estadoCivil,"codigoArea"=>$codigoArea,"telefono"=>$telefono,
                 "discapacidad"=>$discapacidad,"etnia"=>$etnia,"periodo"=>$periodo,"trabaja"=>$trabaja); 
  }
  
  private function ordenarArregloCandidato($arregloConsultas,$candidato){
    //die(dump((array("arregloConsultas"=>$arregloConsultas,"candidato"=>$candidato))));
    if(count($arregloConsultas) !== 0){
      foreach($candidato as $clave => $valor){
        if($clave == "nacionalidad"){
          $arrayTemp[$clave] = $arregloConsultas["DocumentoIdentidadTipo"];
        }
        elseif($clave == "genero"){
          $arrayTemp[$clave] = $arregloConsultas["Genero"];
        }
        elseif($clave == "estadoCivil"){
          $arrayTemp[$clave] = $arregloConsultas["EstadoCivil"];
        }
        elseif($clave == "telefono"){
          $telefono = substr($valor,3);
          $arrayTemp[$clave] = $telefono;
        }
        elseif($clave == "discapacidad"){
          $arrayTemp[$clave] = $arregloConsultas["Discapacidad"];
        }
        elseif($clave == "etnia"){
          $arrayTemp[$clave] = $arregloConsultas["Etnia"];
        }
        elseif($clave == "aldeaAsig"){
          $arrayTemp[$clave] = $arregloConsultas["AldeaPrograma"]->getAldea();
        }
        elseif($clave == "periodoAsig"){
          $arrayTemp[$clave] = $arregloConsultas["PeriodoAcademico"];
        }
        elseif($clave == "programaAsig"){
          $arrayTemp[$clave] = $arregloConsultas["AldeaPrograma"]->getPrograma();
        } 
        elseif($clave == "codPrograma"){
          $arrayTemp[$clave] = $arregloConsultas["AldeaPrograma"]->getCodigoOpsu();
        }
        elseif($clave == "estadoRes"){
          $arrayTemp[$clave] = $arregloConsultas["AldeaPrograma"]->getAldea()->getAmbiente()->getParroquia()->getMunicipio()->getEstado();
        }
        elseif($clave == "trabaja"){
          if($valor === 'S'){
            $arrayTemp[$clave]=true;
          }else{
            $arrayTemp[$clave]=false;
          }
        }else{
          $arrayTemp[$clave] = $valor;
        }
      }
      $arrayTemp["correoTipo"]= $arregloConsultas["CorreoTipo"];
      $arrayTemp["telefonoCodigoArea"]= $arregloConsultas["TelefonoCodigoArea"];
      $arrayTemp["aspiranteEstatus"]= $arregloConsultas["AspiranteEstatus"];
      //die(dump(array("objetos"=>$arregloConsultas,"candidato"=>$arrayTemp)));
      return $arrayTemp;
    }else{
      return;
    }
    
    
  }
  
}