IESA
Programa de Feedback Gerencial y Liderazgo
 Todo Estructuras de Datos Archivos Funciones Variables
Participante.class.php
Ir a la documentación de este archivo.
00001 <?php
00002 
00003 class Participante{
00004 
00005         protected $par_id;
00006         protected $par_vista_id;
00007         protected $par_clave;
00008         protected $par_tipo;
00009         protected $par_evaluaciones;
00010 
00011         protected $par_correo_electronico;
00012         protected $par_nombre;
00013         protected $par_cedula;
00014 
00015         protected $rol_obj;
00016         
00017         protected $evaluadores;
00018 
00019         public function __construct( $id=NULL ){
00020 
00021                 if( $id != NULL )
00022                         $this->getParticipantePorId( $id );
00023                 else{
00024                         $this->rol_obj = new stdClass( );
00025                         $this->rol_obj->nombre = 'Participante';
00026                         $this->rol_obj->descripcion = '';
00027                         $this->rol_obj->permisos = 0;
00028                         $this->rol_obj->status = 0;
00029                         $this->evaluadores = array(  );
00030                 }
00031         }
00032 
00038         private function limpiar(  ){
00039 
00040                 foreach( get_object_vars($this) as $name => $value )
00041                         switch( $name ){
00042                                 default: $this->{$name} = NULL; break;
00043                         }
00044 
00045                 $this->rol_obj = new stdClass( );
00046                 $this->rol_obj->nombre = 'Participante';
00047                 $this->rol_obj->descripcion = '';
00048                 $this->rol_obj->permisos = 0;
00049                 $this->rol_obj->status = 0;
00050                 
00051                 $this->evaluadores = array(  );
00052 
00053         }
00054 
00067         public function getParticipantePorId( $id ){
00068 
00069                 $this->limpiar(  );
00070 
00071                 try{
00072 
00073                         $db = Database::getInstance(  );
00074 
00075                         $query = 'SELECT par.par_id, par.par_vista_id, par.par_clave, par.par_tipo,'
00076                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.NOMBRE ELSE post.NOMBRECOMPLETO END as NOMBRE,"
00077                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CEDULA ELSE post.CEDULA END as CEDULA,"
00078                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CORREO_DESEADO ELSE post.CORREO_IESA END as CORREO"
00079                         .' FROM participantes par '
00080                                 .' INNER JOIN VW_PARTICIPANTES_DDG ddg ON ddg.ID_UNICO = par.par_vista_id'
00081                                 .' INNER JOIN VW_PARTICIPANTES_POST post ON post.ID_UNICO = par.par_vista_id'
00082                         .' WHERE par.par_id = '.$id
00083                         //.' GROUP BY par.par_vista_id'
00084                         ;
00085 
00086                         $consulta = $db->prepare( $query );
00087 
00088                         $consulta->execute( array(  ) );
00089 
00090                         $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00091                         unset( $consulta );
00092 
00093                         if( !$resultado )
00094                                 return false;
00095                         else{
00096                                 $this->par_id = $resultado['par_id'];
00097                                 $this->par_vista_id = $resultado['par_vista_id'];
00098                                 $this->par_clave = $resultado['par_clave'];
00099                                 $this->par_tipo = $resultado['par_tipo'];
00100                                 $this->par_correo_electronico = $resultado['correo'];
00101                                 $this->par_nombre = $resultado['nombre'];
00102                                 $this->par_cedula = $resultado['cedula'];
00103                         }
00104                         return true;
00105                 }catch( Exception $e ){ throw $e; }
00106         }
00107 
00120         public function getParticipantePorCorreoElectronico( $correo ){
00121 
00122                 $this->limpiar(  );
00123 
00124                 try{
00125 
00126                         $db = Database::getInstance(  );
00127 
00128                         $query = 'SELECT par.par_id, par.par_vista_id, par.par_clave, par.par_tipo,'
00129                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.NOMBRE ELSE post.NOMBRECOMPLETO END as NOMBRE,"
00130                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CEDULA ELSE post.CEDULA END as CEDULA,"
00131                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CORREO_DESEADO ELSE post.CORREO_IESA END as CORREO"
00132                         .' FROM participantes par '
00133                                 .' INNER JOIN VW_PARTICIPANTES_DDG ddg ON ddg.ID_UNICO = par.par_vista_id'
00134                                 .' INNER JOIN VW_PARTICIPANTES_POST post ON post.ID_UNICO = par.par_vista_id'
00135                         .' WHERE ddg.CORREO_DESEADO = :correo OR post.CORREO_IESA = :correo'
00136                         .' GROUP BY par.par_vista_id';
00137 
00138                         $consulta = $db->prepare( $query );
00139 
00140                         $consulta->execute( array( ':correo' => $correo ) );
00141 
00142                         $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00143                         unset( $consulta );
00144 
00145                         if( !$resultado )
00146                                 return false;
00147                         else{
00148                                 $this->par_id = $resultado['par_id'];
00149                                 $this->par_vista_id = $resultado['par_vista_id'];
00150                                 $this->par_clave = $resultado['par_clave'];
00151                                 $this->par_tipo = $resultado['par_tipo'];
00152                                 $this->par_correo_electronico = $resultado['correo'];
00153                                 $this->par_nombre = $resultado['nombre'];
00154                                 $this->par_cedula = $resultado['cedula'];
00155                         }
00156                         return true;
00157                 }catch( Exception $e ){ throw $e; }
00158         }
00159 
00175         public function getParticipantePorCredenciales( $correo, $clave ){
00176 
00177                 $this->limpiar(  );
00178 
00179                 try{
00180 
00181                         $db = Database::getInstance(  );
00182 
00183                         $query = 'SELECT par.par_id, par.par_vista_id, par.par_clave, par.par_tipo,'
00184                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.NOMBRE ELSE post.NOMBRECOMPLETO END as NOMBRE,"
00185                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CEDULA ELSE post.CEDULA END as CEDULA,"
00186                                 ." CASE WHEN par.par_tipo = 'DDG' THEN ddg.CORREO_DESEADO ELSE post.CORREO_IESA END as CORREO"
00187                         .' FROM participantes par '
00188                                 .' INNER JOIN VW_PARTICIPANTES_DDG ddg ON ddg.ID_UNICO = par.par_vista_id'
00189                                 .' INNER JOIN VW_PARTICIPANTES_POST post ON post.ID_UNICO = par.par_vista_id'
00190                         .' WHERE par.par_clave = :clave AND ( ddg.CORREO_DESEADO = :correo OR post.CORREO_IESA = :correo ) '
00191                         .( Database::driver(  ) == 'oci' ? ' AND rownum = 1' : ' LIMIT 1' );
00192 
00193                         $consulta = $db->prepare( $query );
00194 
00195                         $consulta->execute( array( ':clave' => $clave, ':correo' => $correo ) );
00196 
00197                         $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00198                         unset( $consulta );
00199 
00200                         if( !$resultado )
00201                                 return false;
00202                         else{
00203                                 $this->par_id = $resultado['par_id'];
00204                                 $this->par_vista_id = $resultado['par_vista_id'];
00205                                 $this->par_clave = $resultado['par_clave'];
00206                                 $this->par_tipo = $resultado['par_tipo'];
00207                                 $this->par_correo_electronico = $resultado['correo'];
00208                                 $this->par_nombre = $resultado['nombre'];
00209                                 $this->par_cedula = $resultado['cedula'];
00210                         }
00211                         return true;
00212                 }catch( Exception $e ){ throw $e; }
00213         }
00214 
00226         public function getEvaluaciones( $solo_pendientes=false ){
00227 
00228                 if( !$this->getId(  ) ) return NULL;
00229 
00230                 if( $this->par_evaluaciones != NULL ) return $this->par_evaluaciones;
00231 
00232                 $db = Database::getInstance(  );
00233                 $consulta = $db->prepare(
00234                         'SELECT '
00235                         .' b.eva_id, b.eva_nombre, b.eva_act_id'
00236                         .(
00237                                 Database::driver(  ) == 'oci' ?
00238                                         " to_char( b.prg_fec_ini, 'YYYY-MM-DD' ) as prg_fec_ini, to_char( b.prg_fec_fin, 'YYYY-MM-DD' ) as prg_fec_fin,"
00239                                 :
00240 //                                      " EXTRACT( year FROM a.prg_fec_ini )||'/'||EXTRACT( month FROM a.prg_fec_ini )||'/'||EXTRACT( day FROM a.prg_fec_ini ),"
00241 //                                      ." EXTRACT( year FROM a.prg_fec_fin )||'/'||EXTRACT( month FROM a.prg_fec_fin )||'/'||EXTRACT( day FROM a.prg_fec_fin ),"
00242                                         'b.prg_fec_fin, b.prg_fec_ini,'
00243                         )
00244                         .' FROM evaluaciones_participantes a'
00245                         .' JOIN evaluaciones b ON a.eva_id = b.eva_id WHERE a.par_id = :par_id'
00246                 );
00247                 $consulta->execute( array( 'par_id' => $this->getId(  ) ) );
00248 
00249                 $Evaluaciones = array(  );
00250 
00251                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC ) ){
00252 
00253                         $item = new stdClass(  );
00254 
00255                         $item->Id = $resultado['eva_id'];
00256                         $item->Nombre = $resultado['eva_nombre'];
00257 
00258                         $f = preg_split( '[-]', $resultado['eva_fecha_inicio'] );
00259                         $item->FechaInicio = $f[2].'/'.$f[1].'/'.$f[0];
00260 
00261                         $f = preg_split( '[-]', $resultado['eva_fecha_fin'] );
00262                         $item->FechaFin = $f[2].'/'.$f[1].'/'.$f[0];
00263 
00264                         $item->ActividadId = $resultado['eva_act_id'];
00265                         
00266                         array_push( $Evaluaciones, $item );
00267                 }
00268 
00269                 unset( $consulta );
00270 
00271                 return $Evaluaciones;
00272         }
00273 
00287         public function getCuestionariosLista( $pg=1, $limit=20 ){
00288 
00289                 if( !$this->getId(  ) ) return NULL;
00290 
00291                 $db = Database::getInstance(  );
00292 
00293                 $consulta = NULL;
00294                 $pager = new stdClass(  );
00295                 $rt = new stdClass(  );
00296 
00297                 $consulta = $db->prepare(
00298                         'SELECT count(*) as rowCount FROM evaluaciones eva '
00299                         .'JOIN evaluaciones_participantes eva_par ON ( eva_par.eva_id = eva.eva_id ) '
00300                         .'JOIN evaluaciones_inventarios eva_inv ON ( eva_inv.eva_id = eva.eva_id ) '
00301                         .'JOIN inventarios inv ON ( inv.inv_id = eva_inv.inv_id ) '
00302                         .'JOIN cuestionarios cue ON ( cue.cue_inv_id = inv.inv_id ) '
00303                         .'WHERE cue.cue_tipo = 0 AND eva_par.par_id = :par_id AND ('
00304                                 .'SELECT count(*) as rowCount FROM  preguntas a '
00305                                 .'JOIN cuestionarios b ON ( b.cue_id = a.pre_cue_id ) '
00306                                 .'JOIN inventarios c ON ( c.inv_id = b.cue_inv_id ) '
00307                                 .'JOIN evaluaciones_inventarios d ON ( d.inv_id = c.inv_id ) '
00308                                 .'WHERE d.eva_id = eva_inv.eva_id AND b.cue_id = cue.cue_id AND NOT EXISTS ( '
00309                                         .'SELECT * FROM respuestas res WHERE a.pre_id = res.pre_id AND res.eva_id = d.eva_id '
00310                                         .'AND res.par_id=:par_id AND res.eval_id=0'
00311                                 .')'
00312                         .')>0'
00313                 );
00314 
00315                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00316                 $resultado = $consulta->fetch(PDO::FETCH_ASSOC); unset($consulta);
00317 
00318                 if( !$resultado || $resultado['rowcount'] == 0){
00319                         $rt->PageCount=1;
00320                         $rt->Pagina = 1;
00321                         $rt->Cuestionarios = array(  );
00322                         return $rt;
00323                 }
00324                 $rt->RowCount = $resultado['rowcount'];
00325 
00326                 $pager->pageCount = ceil( $resultado['rowcount'] / $limit );
00327                 $pager->offset = $limit * ( ( $pg > $pager->pageCount ? $pager->pageCount : $pg ) -1 );
00328 
00329                 $query = Database::Limit(
00330                         'SELECT '
00331                                 .'cue.cue_id, cue.cue_nombre, '
00332                                 .'eva.eva_id, eva.eva_nombre, eva.eva_fecha_inicio, eva.eva_fecha_fin, '
00333                             .'inv.inv_nombre, inv.inv_id, '
00334                             .'eva_par.par_id '
00335                         .'FROM evaluaciones eva '
00336                         .'JOIN evaluaciones_participantes eva_par ON ( eva_par.eva_id = eva.eva_id ) '
00337                         .'JOIN evaluaciones_inventarios eva_inv ON ( eva_inv.eva_id = eva.eva_id ) '
00338                         .'JOIN inventarios inv ON ( inv.inv_id = eva_inv.inv_id ) '
00339                         .'JOIN cuestionarios cue ON ( cue.cue_inv_id = inv.inv_id ) '
00340                         .'WHERE cue.cue_tipo = 0 AND eva_par.par_id = :par_id AND ('
00341                                 .'SELECT count(*) as rowCount FROM  preguntas a '
00342                                 .'JOIN cuestionarios b ON ( b.cue_id = a.pre_cue_id ) '
00343                                 .'JOIN inventarios c ON ( c.inv_id = b.cue_inv_id ) '
00344                                 .'JOIN evaluaciones_inventarios d ON ( d.inv_id = c.inv_id ) '
00345                                 .'WHERE d.eva_id = eva_inv.eva_id AND b.cue_id = cue.cue_id AND NOT EXISTS ( '
00346                                         .'SELECT * FROM respuestas res WHERE a.pre_id = res.pre_id AND res.eva_id = d.eva_id '
00347                                         .'AND res.par_id=:par_id AND res.eval_id=0'
00348                                 .')'
00349                         .')>0'
00350                 , $limit, $pager->offset );
00351 
00352                 $consulta = $db->prepare( $query );
00353                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00354 
00355                 $Cuestionarios = array(  );
00356 
00357                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC ) ){
00358                         $inv = new stdClass(  );
00359                         $inv->Id = $resultado['inv_id'];
00360                         $inv->Nombre = Utilitario::convertir_especiales_html( utf8_decode($resultado['inv_nombre']) );
00361 
00362                         $eva = new stdClass(  );
00363                         $eva->Id = $resultado['eva_id'];
00364                         $eva->Nombre = Utilitario::convertir_especiales_html( utf8_decode($resultado['eva_nombre']) );
00365                         $eva->FechaInicio = $resultado['eva_fecha_inicio'];
00366                         $eva->FechaFin = $resultado['eva_fecha_fin'];
00367 
00368                         $item = new stdClass(  );
00369                         $item->Id = $resultado['cue_id'];
00370                         $item->Nombre = Utilitario::convertir_especiales_html( utf8_decode( $resultado['cue_nombre'] ) );
00371                         $item->Participante = $this->getId(  );
00372                         $item->Evaluador = 0;
00373                         $item->EvaluadorTipo = 0;
00374                         $item->Inventario = $inv;
00375                         $item->Evaluacion = $eva;
00376                         array_push( $Cuestionarios, $item );
00377                 }
00378                 $consulta->closeCursor(  ); unset( $consulta );
00379 
00380                 $rt->PageCount = $pager->pageCount;
00381                 $rt->Pagina = $pg > $rt->PageCount ? $rt->PageCount : $pg ;
00382                 $rt->Cuestionarios = $Cuestionarios;
00383 
00384                 return $rt;
00385         }
00386 
00395         public function getCuestionariosDemografico(  ){
00396                 $db = Database::getInstance(  );
00397 
00398                 $consulta = $db->prepare(
00399                         'SELECT  eva.eva_id, eva.eva_nombre, eva.eva_fecha_inicio, eva.eva_fecha_fin, cue.cue_id '
00400                         .'FROM evaluaciones eva '
00401                         .'JOIN evaluaciones_participantes eva_par ON( eva_par.eva_id = eva.eva_id ) '
00402                         .'JOIN evaluaciones_demograficos eva_dem ON ( eva_dem.eva_id = eva.eva_id ) '
00403                         .'JOIN cuestionarios cue ON ( cue.cue_id = eva_dem.cue_id ) '
00404                         .'WHERE '
00405                                 .'eva_par.par_id = :par_id '
00406                                 .'AND ( SELECT count( pre_id ) FROM preguntas WHERE pre_cue_id = eva_dem.cue_id ) - '
00407                                 .'( SELECT count( par_id ) FROM respuestas WHERE par_id = :par_id AND cue_id = eva_dem.cue_id ) > 0 '
00408                 );
00409 
00410                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00411 
00412                 $Cuestionarios = array(  );
00413 
00414                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC ) ){
00415                         array_push( $Cuestionarios, (object)array(
00416                                 'Id' => $resultado['cue_id'],
00417                                 'Nombre' => Utilitario::convertir_especiales_html( 'Cuestionario Demográfico ('.$resultado['cue_id'].')' ),
00418                                 'Tipo' => 2,
00419                                 'Participante' => $this->getId(  ),
00420                                 'Evaluador' => 0,
00421                                 'EvaluadorTipo' => 0,
00422                                 'Inventario' => (object)array(
00423                                         'Id' => 0,
00424                                         'Nombre' => Utilitario::convertir_especiales_html( 'Demográfico' )
00425                                 ),
00426                                 'Evaluacion' => (object)array(
00427                                         'Id' => $resultado['eva_id'],
00428                                         'Nombre' => Utilitario::convertir_especiales_html( $resultado['eva_nombre'] ),
00429                                         'FechaInicio' => $resultado['eva_fecha_inicio'],
00430                                         'FechaFin' => $resultado['eva_fecha_fin']
00431                                 )
00432                         ) );
00433                 }
00434                 $consulta->closeCursor(  ); unset( $consulta );
00435         
00436                 return $Cuestionarios;
00437                 
00438         }
00439 
00448         public function requiereRed360(  ){
00449 
00450                 if( !$this->getId(  ) ) return NULL;
00451 
00452                 $db = Database::getInstance(  );
00453                 $consulta = $db->prepare(
00454                         'SELECT count(*) as rowCount FROM inventarios inv'
00455                         .' JOIN evaluaciones_inventarios eva_inv ON eva_inv.inv_id = inv.inv_id'
00456                         .' JOIN evaluaciones_participantes eva_par ON eva_par.eva_id = eva_inv.eva_id'
00457                         .' WHERE eva_par.par_id = :par_id AND inv.inv_tipo = 1'
00458                 );
00459                 $consulta->execute( array( 'par_id' => $this->getId(  ) ) );
00460 
00461                 if( $resultado = $consulta->fetch( PDO::FETCH_ASSOC ) > 0 ) $rt = true ;
00462                 else $rt = false;
00463 
00464                 unset( $consulta );
00465 
00466                 return $rt;
00467         }
00468 
00476         public function getEvaluadores(  ){
00477                 
00478                 if( !$this->getId(  ) ) return NULL;
00479 
00480                 $db = Database::getInstance(  );
00481                 
00482                 $Evaluadores = array(  );
00483 
00484                 $query = 
00485                         'SELECT'
00486                                 .' eva.eva_id, eva.eva_nombres, eva.eva_apellidos, eva.eva_correo_electronico, eva.eva_clave,'
00487                                 .' par_eva.eva_tipo'
00488                         .' FROM evaluadores eva'
00489                         .' JOIN participantes_evaluadores par_eva ON par_eva.eva_id = eva.eva_id'
00490                         .' WHERE par_eva.par_id = :par_id ORDER BY par_eva.eva_tipo, par_eva.eva_id';
00491 
00492                 $consulta = $db->prepare( $query );
00493                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00494 
00495                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00496                         $evaluador = new stdClass(  );
00497                         $evaluador->Id = $resultado['eva_id'];
00498                         $evaluador->Nombres = $resultado['eva_nombres'];
00499                         $evaluador->Apellidos = $resultado['eva_apellidos'];
00500                         $evaluador->Correo = $resultado['eva_correo_electronico'];
00501                         $evaluador->Clave = $resultado['eva_clave'];
00502                         $evaluador->Tipo = $resultado['eva_tipo'];
00503                         array_push( $Evaluadores, $evaluador );
00504                 }
00505                 unset($consulta);
00506 
00507                 return $Evaluadores;
00508 
00509         }
00510 
00519         public function getEvaluadoresAgrupados(  ){
00520                 
00521                 if( !$this->getId(  ) ) return NULL;
00522 
00523                 $db = Database::getInstance(  );
00524                 
00525                 $query = 
00526                         'SELECT'
00527                                 .' eva.eva_id, eva.eva_nombres, eva.eva_apellidos, eva.eva_correo_electronico, eva.eva_clave,'
00528                                 .' par_eva.eva_tipo'
00529                         .' FROM evaluadores eva'
00530                         .' JOIN participantes_evaluadores par_eva ON par_eva.eva_id = eva.eva_id'
00531                         .' WHERE par_eva.par_id = :par_id ORDER BY par_eva.eva_tipo, par_eva.eva_id';
00532 
00533                 $consulta = $db->prepare( $query );
00534                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00535                 
00536                 $rt = (object)array( 'Jefe' => array(  ), 'Pares' => array(  ), 'Colaboradores' => array(  ) );
00537 
00538                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00539                         if( $resultado['eva_tipo'] == 1 )
00540                                 array_push( $rt->Jefe, (object)array(
00541                                         'Id' => $resultado['eva_id'],
00542                                         'Nombre' => htmlentities( ucwords( strtolower( 
00543                                                 $resultado['eva_nombres'] . ( $resultado['eva_apellidos'] != '' ? ', '.$resultado['eva_apellidos'] : ''  )
00544                                         ) ) ),
00545                                         'Correo' => $resultado['eva_correo_electronico']
00546                                 ));
00547                         else if( $resultado['eva_tipo'] == 2 )
00548                                 array_push( $rt->Pares, (object)array(
00549                                         'Id' => $resultado['eva_id'],
00550                                         'Nombre' => htmlentities( ucwords( strtolower( 
00551                                                 $resultado['eva_nombres'] . ( $resultado['eva_apellidos'] != '' ? ', '.$resultado['eva_apellidos'] : ''  )
00552                                         ) ) ),
00553                                         'Correo' => $resultado['eva_correo_electronico']
00554                                 ));
00555                         else if( $resultado['eva_tipo'] == 3 )
00556                                 array_push( $rt->Colaboradores, (object)array(
00557                                         'Id' => $resultado['eva_id'],
00558                                         'Nombre' => htmlentities( ucwords( strtolower( 
00559                                                 $resultado['eva_nombres'] . ( $resultado['eva_apellidos'] != '' ? ', '.$resultado['eva_apellidos'] : ''  )
00560                                         ) ) ),
00561                                         'Correo' => $resultado['eva_correo_electronico']
00562                                 ));
00563                 }
00564                 unset($consulta);
00565 
00566                 return $rt;
00567 
00568         }
00569 
00570 
00578         public function getEvaluadoresSimple(  ){
00579                 
00580                 if( !$this->getId(  ) ) return NULL;
00581 
00582                 $db = Database::getInstance(  );
00583                 
00584                 $Evaluadores = array(  );
00585 
00586                 $query = 
00587                         'SELECT'
00588                                 .' eva.eva_id, eva.eva_nombres, eva.eva_apellidos, eva.eva_correo_electronico, eva.eva_clave,'
00589                                 .' par_eva.eva_tipo'
00590                         .' FROM evaluadores eva'
00591                         .' JOIN participantes_evaluadores par_eva ON par_eva.eva_id = eva.eva_id'
00592                         .' WHERE par_eva.par_id = :par_id ORDER BY par_eva.eva_tipo, par_eva.eva_id';
00593 
00594                 $consulta = $db->prepare( $query );
00595                 $consulta->execute( array( ':par_id' => $this->getId(  ) ) );
00596 
00597                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00598                         $evaluador = new stdClass(  );
00599                         $evaluador->Id = $resultado['eva_id'];
00600                         $evaluador->Nombre = htmlentities( ucwords( strtolower( 
00601                                 $resultado['eva_nombres'] . ( $resultado['eva_apellidos'] != '' ? ', '.$resultado['eva_apellidos'] : ''  )
00602                         ) ) );
00603                         $evaluador->Correo = $resultado['eva_correo_electronico'];
00604                         $evaluador->Tipo = $resultado['eva_tipo'];
00605                         array_push( $Evaluadores, $evaluador );
00606                 }
00607                 unset($consulta);
00608 
00609                 return $Evaluadores;
00610 
00611         }
00612 
00613 
00623         public function NotificarEvaluadores( $subject, $body ){
00624 
00625                 if( !$this->getId(  ) ) return false;
00626 
00627                 set_time_limit( 0 );
00628 
00629                 $Evaluadores = $this->getEvaluadores(  );
00630 
00631                 $transport = Swift_SmtpTransport::newInstance( Config::get('swiftmailer/uri'), Config::get('swiftmailer/port') )
00632                         ->setUsername( Config::get('swiftmailer/account/user') )
00633                         ->setPassword( Config::get('swiftmailer/account/password') );
00634 
00635                 $mailer = Swift_Mailer::newInstance($transport);
00636 
00637                 $message = Swift_Message::newInstance( $subject )
00638                         ->setFrom( array( $this->getCorreoElectronico(  ) => $this->getNombreCompleto(  ) ) );
00639 
00640                 $iesa_logo = $message->embed( Swift_Image::fromPath( $_SERVER['DOCUMENT_ROOT'].'/public/images/iesa_logo_90x90.jpg' ) );
00641                 
00642                 $Plantilla = file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_evaluadores.html' );
00643 
00644                 foreach ($Evaluadores as $key => $Evaluador){
00645                         $fullName = ucwords( strtolower(
00646                                 $Evaluador->Nombres.($Evaluador->Apellidos ? ', '.$Evaluador->Apellidos : '')
00647                         ));
00648 
00649                         $variables = array( '%PARTICIPANTE_NOTA%', '%EVALUADOR_CORREO%', '%EVALUADOR_CLAVE%', '%IESA_LOGO%' );
00650                         $valores = array( $body, $Evaluador->Correo, $Evaluador->Clave, $iesa_logo );
00651 
00652                         $message->setTo( array( $Evaluador->Correo => $fullName ) )
00653                                 ->setBody( str_replace( $variables, $valores,  $Plantilla ), 'text/html' );
00654 
00655                         $mailer->send( $message );
00656                 }
00657 
00658                 if( session_id(  ) == '' ) session_start(  );
00659 
00660                 $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00661 
00662                 unset( $consulta );
00663 
00664         }
00665 
00666 
00682         public function setEvaluadores( $lista ){
00683                 if( !$this->getId(  ) ) return false;
00684 
00685                 $db = Database::getInstance(  );
00686                 
00687                 $db->exec( 'DELETE FROM participantes_evaluadores WHERE par_id = '.$this->getId(  ) );
00688 
00689                 $query = 'INSERT INTO participantes_evaluadores ( par_id, eva_id, eva_tipo )VALUES( :par_id, :eva_id, :eva_tipo )';
00690 
00691                 $consulta = $db->prepare( $query );
00692 
00693                 foreach( $lista as $idx => $evaluador ){
00694                         $consulta->execute( array( 
00695                                 ':par_id'=>$this->getId(  ),
00696                                 ':eva_id'=>$evaluador->Id,
00697                                 ':eva_tipo'=>$evaluador->Tipo
00698                         ));
00699                 }
00700                 unset($consulta);
00701         }
00702 
00710         public function getId(  ){ return $this->par_id ? $this->par_id : NULL; }
00711 
00719         public function getNombres(  ){ $Nombre = trim( preg_split( '[,]', $this->par_nombre ) ); return $Nombre[0]; }
00720 
00728         public function getApellidos(  ){ 
00729                 $Nombre = trim( preg_split( '[,]', $this->par_nombre ) ); return sizeof( $Nombre > 1 ) ? $Nombre[1] : ''; 
00730         }
00731 
00739         public function getCorreoElectronico(  ){ return $this->par_correo_electronico; }
00740 
00748         public function getCedula(  ){ return $this->par_cedula; }
00749         
00759         public function getNombreCompleto(  ){ return ucwords( strtolower( $this->par_nombre ) ); }
00760 
00771         public function getRol(  ){ return $this->rol_obj; }
00772 
00773 
00782         public function cambiarClave( $val ){
00783 
00784                 if( !$this->getId(  ) )
00785                         return false;
00786 
00787                 $db = Database::getInstance(  );
00788 
00789                 $consulta = $db->prepare( 'UPDATE participantes SET par_clave = :clave WHERE par_id = :id'  );
00790 
00791                 $consulta->execute( array( ':id'=>$this->getId(  ), ':clave'=>$val ) );
00792 
00793                 if( $consulta->rowCount(  ) == 0 ){
00794                         unset($consulta);
00795                         return false;
00796                 }else
00797                         unset($consulta);
00798                         return true;
00799 
00800         }
00801 
00810         public function permite(  ){ return false; }
00811 
00819         public function getTipoDeCuenta(  ){ return 'P'; }
00820 
00821         public function getStatus(  ){ return 1; }
00822 
00823 }
00824