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
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
00241
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