EstudianteDocumentoRepository.php 8.2 KB
<?php

namespace UBV\SurUbvBundle\Entity;

use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr\Join;
use Doctrine\ORM\Query;
/**
 * EstudianteDocumentoRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class EstudianteDocumentoRepository extends EntityRepository
{
  
  public function findDocumentosByPersona($personaId) {
    
    //die("estoy en la funcion");
    $em = $this->getEntityManager();

    $result = $em->createQueryBuilder();
    
    $dql = $result->select('documentos')
            ->from('UBVSurUbvBundle:EstudianteDocumento', 'documentos')
            ->Join('documentos.persona', 'persona', 'persona.id = documentos.persona_id')
            //->Join('documentos.tipoPrograma', 'tipoPrograma', 'tipoPrograma.id = documentos.tipoPrograma_id')
            ->where('persona.id = :personaId')
            //->Andwhere('tipoPrograma.id = :tipoPrograma')
            //->setParameter('tipoPrograma', $programaTipo)
            ->setParameter('personaId', $personaId)
            ->getQuery()->getResult(Query::HYDRATE_ARRAY);
  
    //die(var_dump($dql));
    return $dql;
  }
  
  public function findDocumentosByAspiranteId($aspiranteId) {
    
    //die("estoy en la funcion");
    $em = $this->getEntityManager();

    $result = $em->createQueryBuilder();
    
    $dql = $result->select('persona as Persona',
                    'nacionalidad as Nacionalaidad ',
                    'nacionalidadPersona as NacionalaidadPersona',
                    'documentoIdentidad as Documentoidentidad',
                    'genero as Genero',
                    'estadoCivil as estadoCivilPersona',
                    'telefonos as PersonaTelefonos','telefonoCodigoArea','telefonoTipo',
                    'correos','correoTipo',
                    'aspirantes', 'aspiranteEstatus','aspiranteTipo',
                    'programa','programaTipo','programaNivel','aldea','aldeaTipo','programaRequisito','documentos','requisitos',
                    'groups')
            ->from('UBVSurUbvBundle:Persona', 'persona')
            ->Join('persona.personaNacionalidads', 'nacionalidad', 'persona.id = nacionalidad.persona_id')
            ->Join('persona.genero', 'genero', 'persona.id = genero.persona_id')
            ->Join('persona.estadoCivil', 'estadoCivil', 'persona.id = estadoCivil.persona_id')
            ->Join('persona.groups', 'groups', 'persona.id = groups.persona_id')
            ->LeftJoin('persona.personaCorreos', 'correos', 'persona.id = correos.persona_id')
            ->LeftJoin('persona.estudianteDocumentos', 'documentos', 'persona.id = documentos.persona_id')
            ->LeftJoin('documentos.requisitoInscripcion', 'requisitos', 'documentos.requisito_inscripcion_id = requisitos.id')
            ->LeftJoin('persona.aspirantes', 'aspirantes', 'persona.id = aspirantes.persona_id')
            ->LeftJoin('aspirantes.programa', 'programa', 'aspirantes.id = programa.aspirante_id')
            ->LeftJoin('programa.requisitoInscripcions', 'programaRequisito', 'programa.id = programaRequisito.programa_id')
            ->LeftJoin('aspirantes.aspiranteEstatus', 'aspiranteEstatus', 'aspirantes.id = aspiranteEstatus.aspirante_id')
            ->LeftJoin('aspirantes.aspiranteTipo', 'aspiranteTipo', 'aspirantes.id = aspiranteTipo.aspirante_id')
            ->LeftJoin('aspirantes.aldea', 'aldea', 'aspirantes.id = aldea.aspirante_id')
            ->LeftJoin('aldea.aldeaTipo', 'aldeaTipo', 'aldea.id = aldeaTipo.aldea_id')
            ->LeftJoin('programa.programaTipo', 'programaTipo', 'programa.id = programaTipo.programa_id')
            ->LeftJoin('programaTipo.programaNivel', 'programaNivel', 'programaTipo.id = programanivel.programa_id')
            ->leftJoin('persona.personaTelefonos', 'telefonos', 'persona.id = telefonos.persona_id')
            ->LeftJoin('correos.correoTipo', 'correoTipo', 'correoTipo.id = correo.correo_tipo_id')
            ->LeftJoin('telefonos.telefonoCodigoArea', 'telefonoCodigoArea', 'telefonoCodigoArea.id = telefono.telefono_codigo_area_id')
            ->LeftJoin('telefonoCodigoArea.telefonoTipo', 'telefonoTipo', 'telefonoCodigoArea.id = telefonoTipo.telefono_codigo_area_id')
            ->Join('nacionalidad.documentoIdentidadTipo', 'documentoIdentidad', 'nacionalidad.documento_identidad_tipo_id = documentoIdentidad.id')
            ->Join('nacionalidad.nacionalidad', 'nacionalidadPersona', 'nacionalidad.nacionalidad_id = nacionalidadPersona.id')
            ->where('aspirantes.id = :aspiranteId')
            ->Andwhere('nacionalidad.estatus = :estatusNacionalidad')
            ->setParameter('aspiranteId', $aspiranteId)
            ->setParameter('estatusNacionalidad', true)
            
            ->getQuery()
            ->getSingleResult(Query::HYDRATE_ARRAY);
    
//    $dql = $result->select('documentos','persona','aspirante')
//            ->from('UBVSurUbvBundle:EstudianteDocumento', 'documentos')
//            ->Join('documentos.persona', 'persona', 'persona.id = documentos.persona_id')
//            ->Join('persona.aspirantes', 'aspirante', 'persona.id = aspirante.persona_id')
//            ->Join('documentos.requisitoInscripcion', 'requisito', 'documentos.requisito_inscripcion_id = requisito.id')
//            ->Join('requisito.programas', 'requisitoPrograma', 'requisito.id = requisitoPrograma.requisito_inscripcion_id')
//            //->Join('requisito.programas', 'requisitoPrograma', 'requisito.id = requisitoPrograma.requisito_inscripcion_id')
//            //->Join('documentos.tipoPrograma', 'tipoPrograma', 'tipoPrograma.id = documentos.tipoPrograma_id')
//            ->where('aspirante.id = :aspiranteId')
//            ->Andwhere('requisitoPrograma.id = aspirante.programa')
//            //->setParameter('tipoPrograma', $programaTipo)
//            ->setParameter('aspiranteId', $aspiranteId)
//            ->orderBy('documentos.id','ASC')
//            ->getQuery()->getResult(Query::HYDRATE_ARRAY);
  
    //die(dump($dql));
    return $dql;
    
//    $dql = $result->select('documentos.id as id, documentos.ruta_documento as ruta_documento, documentos.estatus as estatus',
//                           'persona.primer_nombre as primer_nombre, persona.segundo_nombre as segundo_nombre, persona.primer_apellido as primer_apellido, persona.segundo_apellido as segundo_apellido')
//            ->from('UBVSurUbvBundle:EstudianteDocumento', 'documentos')
//            ->Join('documentos.persona', 'persona', 'persona.id = documentos.persona_id')
//            ->Join('persona.aspirantes', 'aspirante', 'persona.id = aspirante.persona_id')
//            //->Join('documentos.tipoPrograma', 'tipoPrograma', 'tipoPrograma.id = documentos.tipoPrograma_id')
//            ->where('aspirante.id = :aspiranteId')
//            //->Andwhere('tipoPrograma.id = :tipoPrograma')
//            //->setParameter('tipoPrograma', $programaTipo)
//            ->setParameter('aspiranteId', $aspiranteId)
//            ->orderBy('documentos.id','ASC')
//            ->getQuery()->getResult(Query::HYDRATE_ARRAY);
////  
////    //die(dump($dql));
//    return $dql;
  }
  
  public function findDocumentosAndAspiranteIdById($documentoId) {
    
    //die("estoy en la funcion");
    $em = $this->getEntityManager();

    $result = $em->createQueryBuilder();
    
    $dql = $result->select('documentos as ObjetoDocumento',
                           'persona.primer_nombre as primer_nombre, persona.segundo_nombre as segundo_nombre, persona.primer_apellido as primer_apellido, persona.segundo_apellido as segundo_apellido',
                            'aspirante.id as AspiranteId')
            ->from('UBVSurUbvBundle:EstudianteDocumento', 'documentos')
            ->Join('documentos.persona', 'persona', 'persona.id = documentos.persona_id')
            ->Join('persona.aspirantes', 'aspirante', 'persona.id = aspirante.persona_id')
            //->Join('documentos.tipoPrograma', 'tipoPrograma', 'tipoPrograma.id = documentos.tipoPrograma_id')
            ->where('documentos.id = :documentoId')
            //->Andwhere('tipoPrograma.id = :tipoPrograma')
            //->setParameter('tipoPrograma', $programaTipo)
            ->setParameter('documentoId', $documentoId)
            ->orderBy('documentos.id','ASC')
            ->getQuery()->getResult();
  
    //die(dump($dql));
    return $dql;
  }
}