IESA
Programa de Feedback Gerencial y Liderazgo
 Todo Estructuras de Datos Archivos Funciones Variables
Evaluacion.class.php
Ir a la documentación de este archivo.
00001 <?php
00002 
00003 class Evaluacion{
00004 
00005         protected $eva_id;
00006         protected $eva_nombre;
00007         protected $eva_act_id;
00008         protected $eva_fecha_inicio;
00009         protected $eva_fecha_fin;
00010 
00011         protected $eva_profesor_correo;
00012 
00013         protected $eva_inventarios;
00014 
00015         protected $eva_actividad;
00016 
00017         public function __constructor(  ){
00018                 $this->eva_actividad = new Actividad(  );
00019                 $this->eva_inventarios = array(  );
00020         }
00021 
00027         private function limpiar(  ){
00028                 foreach( get_object_vars($this) as $name => $value )
00029                         switch( $name ){
00030                                 default: $this->{$name} = NULL; break;
00031                         }
00032 
00033                 $this->eva_actividad = new Actividad(  );
00034                 $this->eva_inventarios = array(  );
00035         }
00036 
00049         public function getEvaluacion( $data ){
00050 
00051                 $this->limpiar(  );
00052 
00053                 try{
00054 
00055                         $db = Database::getInstance(  );
00056 
00057                         $query =
00058                                 'SELECT eva_id, eva_nombre, eva_act_id, eva_fecha_inicio, eva_fecha_fin FROM evaluaciones WHERE '
00059                                 .$data['where'] ;
00060 
00061                         $consulta = $db->prepare( $query );
00062                         
00063                         $consulta->execute( $data['data'] );
00064 
00065                         $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00066                         unset( $consulta );
00067 
00068                         if( !$resultado )
00069                                 return false;
00070                         else
00071                                 foreach( $resultado as $name => $value )
00072                                         $this->{$name} = $value;
00073 
00074                         $consulta = $db->prepare( 'SELECT inv_id FROM evaluaciones_inventarios WHERE eva_id = '.$this->getId(  ) );
00075                         $consulta->execute(  );
00076                         
00077                         $this->eva_inventarios = array(  );
00078                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) )
00079                                 array_push( $this->eva_inventarios, $resultado['inv_id'] );
00080 
00081                         unset( $consulta );
00082 
00083                         return true;
00084                 }catch( PDOException $e ){ unset($consulta); throw $e; }
00085         
00086         }
00087 
00100         public function getEvaluacionPorId( $id ){
00101                 return $this->getEvaluacion( array( 
00102                         'where' => 'eva_id = :id',
00103                         'data'=> array(
00104                                 ':id'=>$id
00105                         )
00106                 ));
00107         }
00108 
00109         public function guardar(  ){
00110 
00111                 $db = Database::getInstance(  );
00112 
00113                 $data = array( 
00114                         ':eva_nombre'=>$this->eva_nombre,
00115                         ':eva_act_id'=>$this->eva_act_id,
00116                         ':eva_fecha_inicio'=>$this->eva_fecha_inicio,
00117                         ':eva_fecha_fin'=>$this->eva_fecha_fin
00118                 );
00119 
00120                 if( is_null( $this->eva_id ) ){
00121 
00122                         $query = 'INSERT INTO evaluaciones ( eva_nombre, eva_act_id, eva_fecha_inicio, eva_fecha_fin )VALUES'
00123                                 .'( '
00124                                         ." :eva_nombre, :eva_act_id, "
00125                                         .(
00126                                                 Database::driver(  ) == 'oci'?
00127                                                         "to_date(:eva_fecha_inicio,'YYYY-MM-DD'), to_date(:eva_fecha_fin,'YYYY-MM-DD') "
00128                                                 :
00129                                                         ":eva_fecha_inicio, :eva_fecha_fin"
00130                                          )
00131                                 .' )';
00132 
00133                 }else{
00134 
00135                         $data[':eva_id']=$this->eva_id;
00136 
00137                         $query = 'UPDATE evaluaciones SET '
00138                                 .' eva_nombre = :eva_nombre, eva_act_id = :eva_act_id, '
00139                                 .(
00140                                         Database::driver(  ) == 'oci'?
00141                                                 "eva_fecha_inicio = to_date(:eva_fecha_inicio,'YYYY-MM-DD'), "
00142                                                 ."eva_fecha_fin = to_date(:eva_fecha_fin,'YYYY-MM-DD') "
00143                                         :
00144                                                 "eva_fecha_inicio = :eva_fecha_inicio, eva_fecha_fin = :eva_fecha_fin"
00145                                  )
00146                                 .' WHERE eva_id = :eva_id';
00147                 }
00148 
00149                 $consulta = $db->prepare( $query );
00150                 $consulta->execute( $data );
00151 
00152                 $consulta->closeCursor(  );
00153                 unset( $field, $value, $consulta );
00154 
00155                 unset( $this->eva_actividad );
00156                 $this->eva_actividad = new Actividad(  );
00157 
00158                 $Inventarios = $this->eva_inventarios;
00159 
00160                 if( !$this->getId(  ) ){
00161                         $this->getEvaluacionPorId( Database::lastInsertId( 'evaluaciones_seq' ) );
00162                         $cue_demo_id = Utilitario::getCuestionarioDemografico(  );
00163                         if($cue_demo_id)
00164                                 $db->exec(
00165                                         'INSERT INTO evaluaciones_demograficos ( eva_id, cue_id )VALUES( '.$this->getId(  ).', '.$cue_demo_id.' )'
00166                                 );
00167                 }
00168 
00169                 $db->exec( 'DELETE FROM evaluaciones_inventarios WHERE eva_id = '.$this->getId(  ) );
00170 
00171                 foreach( $Inventarios as $Inventario_id )
00172                         $db->exec( 'INSERT INTO evaluaciones_inventarios ( eva_id, inv_id )VALUES( '.$this->getId(  ).', '.$Inventario_id.' )' );
00173 
00174         }
00175 
00182         public function eliminar(  ){
00183                 if( !$this->getId(  ) )
00184                         return 0;
00185 
00186                 $db = Database::getInstance();
00187 
00188                 $db->exec( 'DELETE FROM evaluaciones_demograficos WHERE eva_id = '.$this->getId(  ) );
00189 
00190                 $rt = $db->exec( 'DELETE FROM evaluaciones WHERE eva_id = '.$this->getId(  ) );
00191 
00192                 $this->limpiar(  );
00193 
00194                 return $rt ? $rt : 0;
00195         }
00196 
00204         public function RegistrarProfesor(  ){
00205 
00206                 if( !$this->getId(  ) ) return false;
00207 
00208                 $Actividad = $this->getActividad(  );
00209 
00210                 $Profesor = new Profesor(  );
00211 
00212                 $success = $Profesor->getProfesorPorCuenta( $Actividad->getProfesor(  )->Cuenta );
00213 
00214                 $db = Database::getInstance(  );
00215 
00216                 if( !$success ){
00217                         $nClave = substr( md5( rand(0,999) ), 10, 8 );
00218                         $db->exec(
00219                                 "INSERT INTO profesores ( pro_cuenta, pro_clave )VALUES( '"
00220                                 .$Actividad->getProfesor(  )->Cuenta."', '".$nClave."' )"
00221                         );
00222                         $Profesor->getProfesorPorId( Database::lastInsertId( 'profesores_seq' ) );
00223                 }
00224 
00225                 $db->exec( 'DELETE FROM evaluaciones_profesores WHERE eva_id = '.$this->getId(  ) );
00226                 $db->exec( 'INSERT INTO evaluaciones_profesores ( eva_id, pro_id )VALUES( '.$this->getId(  ).', '.$Profesor->getId(  ).' )' );
00227 
00228                 return;
00229 
00230         }
00231 
00239         public function RegistrarParticipantes(  ){
00240 
00241                 if( !$this->getId(  ) ) return false;
00242 
00243                 $Actividad = $this->getActividad(  );
00244 
00245                 $Participantes = $Actividad->getParticipantesConCorreo(  );
00246                 
00247                 $db = Database::getInstance(  );
00248                 $consulta = $db->prepare(
00249                         'INSERT INTO participantes ( par_vista_id, par_tipo, par_clave )VALUES( :vista_id, :tipo, :clave )'
00250                 );
00251 
00252                 foreach( $Participantes as $key => $Participante )
00253                         if(!$Participante->Registrado)
00254                                 $consulta->execute(
00255                                         array(
00256                                                 ':vista_id' => $Participante->VistaId,
00257                                                 ':tipo' => $Participante->Tipo,
00258                                                 ':clave' => substr(     md5( rand(0,999) ), 10, 8 )
00259                                         )
00260                                 );
00261 
00262                 $consulta->closeCursor(  ); unset( $consulta );
00263                 $db->exec( 'DELETE FROM evaluaciones_participantes WHERE eva_id = '.$this->getId(  ) );
00264 
00265                 $query ='INSERT INTO evaluaciones_participantes ( eva_id, par_id )VALUES( :eva_id, :par_id )' ;
00266                 $consulta = $db->prepare( $query );
00267 
00268                 $Participantes = $Actividad->getParticipantesConCorreo(  );
00269 
00270                 foreach( $Participantes as $key => $Participante )
00271                         if( $Participante->Registrado )
00272                                 $consulta->execute( array( ':eva_id' => $this->getId(  ), ':par_id' => $Participante->Id ) );
00273 
00274 
00275                 $consulta->closeCursor(  ); unset( $consulta ); unset( $Participantes );
00276 
00277                 return true;
00278 
00279         }
00280 
00295         public function NotificarParticipantes( $correo ){
00296 
00297                 if( !$this->getId(  ) )
00298                         return false;
00299 
00300                 set_time_limit( 0 );
00301 
00302                 $Actividad = $this->getActividad(  );
00303 
00304                 $Participantes = $this->getParticipantes(  );
00305 
00306                 $Inventarios =  $this->GenerarListaInventarios(  );
00307 
00308                 $correo = array(
00309                         'subject'=>'IESA Feedback Gerencial - Nuevo proceso de Evaluación',
00310                         'body'=>( !$Inventarios['Evaluadores'] ) ?
00311                                         file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_participante.html' ) 
00312                                 :
00313                                         file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_participante_360.html' ) 
00314                 );
00315 
00316                 $transport = Swift_SmtpTransport::newInstance( Config::get('swiftmailer/uri'), Config::get('swiftmailer/port') )
00317                         ->setUsername( Config::get('swiftmailer/account/user') )
00318                         ->setPassword( Config::get('swiftmailer/account/password') );
00319 
00320                 $mailer = Swift_Mailer::newInstance($transport);
00321 
00322                 $message = Swift_Message::newInstance( $correo['subject'] )
00323                         ->setFrom( array( Config::get('swiftmailer/from/mail') => Config::get('swiftmailer/from/name') ) );
00324                         
00325                 $iesa_logo = $message->embed( Swift_Image::fromPath( $_SERVER['DOCUMENT_ROOT'].'/public/images/iesa_logo_90x90.jpg' ) );
00326 
00327                 $fallidos = array(  );
00328                 $numSent = 0;
00329 
00330                 $db = Database::getInstance(  );
00331                 $consulta = $db->prepare(
00332                         'UPDATE evaluaciones_participantes SET par_notificado = 1 WHERE par_id = :par_id AND eva_id = :eva_id'
00333                 );
00334 
00335                 foreach ($Participantes as $key => $Participante){
00336 
00337                         $variables = array(
00338                                 '%ACTIVIDAD_NOMBRE%',
00339                                 '%ACTIVIDAD_LOCALIDAD%',
00340                                 '%FECHA_ENVIO%',
00341                                 '%PARTICIPANTE_CORREO%',
00342                                 '%PARTICIPANTE_CLAVE%', 
00343                                 '%PARTICIPANTE_NOMBRE%',
00344                                 '%FECHA_FINALIZACION%',
00345                                 '%LISTA_INVENTARIOS%',
00346                                 '%LISTA_CUESTIONARIOS_EVALUADORES%',
00347                                 '%IESA_LOGO%'
00348                         );
00349                         $valores = array(
00350                                 $Actividad->getNombre(  ),
00351                                 htmlentities( $Actividad->getLocalidad(  )->Nombre ),
00352                                 date('d/m/Y'),
00353                                 $Participante->Correo,
00354                                 $Participante->Clave,
00355                                 htmlentities( $Participante->Nombre ),
00356                                 $this->getFechaFin(  ),
00357                                 $Inventarios['Participantes'],
00358                                 $Inventarios['Evaluadores'],
00359                                 $iesa_logo
00360                         );
00361 
00362                         $message->setTo( array( $Participante->Correo => $Participante->Nombre ) )
00363                                 ->setBody( str_replace( $variables, $valores,  $correo['body']  ), 'text/html' );
00364 
00365                         if( $success = $mailer->send( $message ) ){
00366                                 $numSent++;
00367                                 $consulta->execute( array( ':eva_id'=>$this->getId(  ), ':par_id'=>$Participante->Id ) );
00368                         }else{
00369                                 array_push( $fallidos, 
00370                                         array( 
00371                                                 'correo'=>$Participante->Correo,
00372                                                 'nombre'=> utf8_decode($Participante->Nombre)
00373                                         )
00374                                 );
00375                         }
00376 
00377                 }
00378 
00379                 if( session_id(  ) == '' )session_start(  );
00380 
00381                 $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00382 
00383                 unset( $consulta );
00384                 return sizeof( $fallidos ) > 0 ? $fallidos : $numSent ;
00385 
00386         }
00387 
00402         public function NotificarParticipante( $id ){
00403 
00404                 if( !$this->getId(  ) ) return false;
00405                 
00406                 set_time_limit( 0 );
00407 
00408                 $Actividad = $this->getActividad(  );
00409 
00410                 $Inventarios =  $this->GenerarListaInventarios(  );
00411 
00412                 $correo = array(
00413                         'subject'=>'IESA Feedback Gerencial - Nuevo proceso de Evaluación',
00414                         'body'=>( !$Inventarios['Evaluadores'] ) ?
00415                                         file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_participante.html' ) 
00416                                 :
00417                                         file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_participante_360.html' ) 
00418                 );
00419 
00420                 $transport = Swift_SmtpTransport::newInstance( Config::get('swiftmailer/uri'), Config::get('swiftmailer/port') )
00421                         ->setUsername( Config::get('swiftmailer/account/user') )
00422                         ->setPassword( Config::get('swiftmailer/account/password') );
00423 
00424                 $mailer = Swift_Mailer::newInstance($transport);
00425 
00426                 $message = Swift_Message::newInstance( $correo['subject'] )
00427                         ->setFrom( array( Config::get('swiftmailer/from/mail') => Config::get('swiftmailer/from/name') ) );
00428                         
00429                 $iesa_logo = $message->embed( Swift_Image::fromPath( $_SERVER['DOCUMENT_ROOT'].'/public/images/iesa_logo_90x90.jpg' ) );
00430                 
00431                 $db = Database::getInstance(  );
00432 
00433                 if( $Actividad->getTipo(  )->Id == 8 )
00434                         $query =
00435                                 'SELECT par.par_id as ID,par.par_clave as CLAVE,eva_par.par_notificado as NOTIFICADO,vw_par.NOMBRECOMPLETO as NOMBRE,'
00436                                 .' vw_par.CEDULA as CEDULA, vw_par.CORREO_IESA as CORREO, par.par_clave'
00437                                 .' FROM evaluaciones_participantes eva_par'
00438                                 .' INNER JOIN participantes par ON ( par.par_id = eva_par.par_id ) '
00439                                 ." INNER JOIN VW_PARTICIPANTES_POST vw_par ON ( par.par_vista_id = vw_par.ID_UNICO AND par.par_tipo = 'POSTGRADO' ) "
00440                                 .' WHERE eva_par.eva_id = :eva_id AND vw_par.ID_UNICO = :vista_id GROUP BY eva_par.par_id';
00441                 else
00442                         $query =
00443                                 'SELECT par.par_id as ID, par.par_clave as CLAVE, eva_par.par_notificado as NOTIFICADO, vw_par.NOMBRE as NOMBRE,'
00444                                 .' vw_par.CEDULA as CEDULA, vw_par.CORREO_DESEADO as CORREO, par.par_clave'
00445                                 .' FROM evaluaciones_participantes eva_par'
00446                                 .' INNER JOIN participantes par ON ( par.par_id = eva_par.par_id ) '
00447                                 ." INNER JOIN VW_PARTICIPANTES_DDG vw_par ON ( par.par_vista_id = vw_par.ID_UNICO AND par.par_tipo = 'DDG' ) "
00448                                 .' WHERE eva_par.eva_id = :eva_id AND vw_par.ID_UNICO = :vista_id GROUP BY eva_par.par_id';
00449 
00450                 $consulta = $db->prepare( $query );
00451                 $consulta->execute( array( ':eva_id'=>$this->getId(  ), ':vista_id'=>$id ) );
00452 
00453                 $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00454                 unset( $consulta );
00455 
00456                 if(!$resultado)
00457                         return false;
00458 
00459                 $variables = array(
00460                         '%ACTIVIDAD_NOMBRE%',
00461                         '%ACTIVIDAD_LOCALIDAD%',
00462                         '%FECHA_ENVIO%',
00463                         '%PARTICIPANTE_CORREO%',
00464                         '%PARTICIPANTE_CLAVE%', 
00465                         '%PARTICIPANTE_NOMBRE%',
00466                         '%FECHA_FINALIZACION%',
00467                         '%LISTA_INVENTARIOS%',
00468                         '%LISTA_CUESTIONARIOS_EVALUADORES%',
00469                         '%IESA_LOGO%'
00470                 );
00471                 $valores = array( 
00472                         $Actividad->getNombre(  ),
00473                         htmlentities( $Actividad->getLocalidad(  )->Nombre ),
00474                         date('d/m/Y'),
00475                         $resultado['correo'],
00476                         $resultado['clave'],
00477                         htmlentities( $resultado['nombre'] ),
00478                         $this->getFechaFin(  ),
00479                         $Inventarios['Participantes'],
00480                         $Inventarios['Evaluadores'],
00481                         $iesa_logo
00482                 );
00483 
00484                 $message->setTo( array( $resultado['correo'] => $resultado['nombre'] ) )
00485                         ->setBody( str_replace( $variables, $valores,  $correo['body']  ), 'text/html' );
00486 
00487                 $success= $mailer->send( $message );
00488 
00489                 if( session_id(  ) == '' ) session_start(  );
00490 
00491                 $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00492 
00493                 return $success;
00494 
00495         }
00496 
00497 
00506         private function GenerarListaInventarios(  ){
00507 
00508                 $Inventarios = $this->getInventarios(  );
00509                 $Participantes = '<ul>';
00510                 $Evaluadores = '<ul>';
00511 
00512                 foreach( $Inventarios as $inv_key => $inv ){
00513                         $Participantes .= '<li>'.htmlentities( utf8_decode($inv->Nombre) ).'<ul>';
00514                         if( $inv->Tipo == 1 ){
00515                                 $Evaluadores .= '<li>'.htmlentities( utf8_decode($inv->Nombre) );
00516                                 $Evaluadores .= '<ul>';
00517                                 foreach( $inv->Cuestionarios as $cue_key => $cue ){
00518                                         if( $cue->Tipo == 1 ) $Evaluadores.= '<li>'.htmlentities( utf8_decode($cue->Nombre) .' - Otros' ).'</li>';
00519                                         else $Participantes.= '<li>'.htmlentities( utf8_decode($cue->Nombre) . ' - Auto Evaluación' ).'</li>';
00520                                 }
00521                                 $Evaluadores .= '</ul>';
00522                         }else{
00523                                 foreach( $inv->Cuestionarios as $cue_key => $cue )
00524                                         $Participantes.= '<li>'.htmlentities( utf8_decode($cue->Nombre) ).'</li>';
00525                         }
00526                         $Participantes .= '</ul>';
00527                 }
00528                 $Participantes .= '</ul>';
00529                 $Evaluadores .= '</ul>';
00530                 unset( $Inventarios );
00531 
00532                 return array(
00533                         'Participantes'=>$Participantes,
00534                         'Evaluadores'=>$Evaluadores
00535                 );
00536         }
00537 
00549         public function NotificarProfesor(  ){
00550 
00551                 if( !$this->getId(  ) )
00552                         return false;
00553 
00554                 set_time_limit( 0 );
00555 
00556                 $Profesor = $this->getProfesor(  );
00557 
00558                 $transport = Swift_SmtpTransport::newInstance( Config::get('swiftmailer/uri'), Config::get('swiftmailer/port') )
00559                         ->setUsername( Config::get('swiftmailer/account/user') )
00560                         ->setPassword( Config::get('swiftmailer/account/password') );
00561 
00562                 $mailer = Swift_Mailer::newInstance($transport);
00563 
00564                 $message = Swift_Message::newInstance( 'IESA Feedback Gerencial - Nuevo proceso de evaluación' )
00565                         ->setFrom( array( Config::get('swiftmailer/from/mail') => Config::get('swiftmailer/from/name') ) );
00566 
00567                 $variables = array( 
00568                         '%EVALUACION_NOMBRE%',
00569                         '%PROFESOR_CUENTA%',
00570                         '%PROFESOR_CLAVE%', 
00571                         '%PROFESOR_NOMBRE%' 
00572                 );
00573                 $valores = array( 
00574                         $this->getNombre(  ),
00575                         $Profesor->getCuenta(  ),
00576                         $Profesor->getClave(  ),
00577                         $Profesor->getNombreCompleto(  )
00578                 );
00579 
00580                 $correo = str_replace( 
00581                         $variables,
00582                         $valores, 
00583                         file_get_contents( $_SERVER['DOCUMENT_ROOT'].'/plantillas/notificacion_profesor.html' ) 
00584                 );
00585 
00586                 $message->setTo( array( $Profesor->getCorreoElectronico(  ) => $Profesor->getNombreCompleto(  ) ) )
00587                         ->setBody(      $correo, 'text/html' );
00588 
00589                 $success = $mailer->send( $message );
00590 
00591                 if( session_id(  ) == '' ) session_start(  );
00592 
00593                 $_SESSION['timeout'] = time(  ) + Config::get( 'security/session_timeout' );
00594 
00595                 unset( $consulta );
00596                 return $success;
00597 
00598         }
00599 
00610         public function getProfesor(  ){
00611 
00612                 if( !$this->getId(  ) )
00613                         return false;
00614 
00615                 $db = Database::getInstance(  );
00616 
00617                 $consulta = $db->prepare( 'SELECT pro_id FROM evaluaciones_profesores WHERE eva_id = :eva_id' );
00618                 $consulta->execute( array( ':eva_id'=>$this->getId(  ) ) );
00619 
00620                 $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00621                 unset( $consulta );
00622 
00623                 $Profesor = new Profesor( $resultado['pro_id'] );
00624 
00625                 return $Profesor;
00626         }
00627 
00640         public function getParticipantes( $idLikeIndex=false, $use_entities=true ){
00641 
00642                 if( !$this->getId(  ) )
00643                         return false;
00644 
00645                 $Actividad = $this->getActividad(  );
00646 
00647                 $db = Database::getInstance(  );
00648 
00649                 if( $Actividad->getTipo(  )->Id == 8 )
00650                         $query =
00651                                 'SELECT par.par_id as ID,par.par_clave as CLAVE,eva_par.par_notificado as NOTIFICADO,vw_par.NOMBRECOMPLETO as NOMBRE,'
00652                                 .' vw_par.CEDULA as CEDULA, vw_par.CORREO_IESA as CORREO'
00653                                 .' FROM evaluaciones_participantes eva_par'
00654                                 .' INNER JOIN participantes par ON ( par.par_id = eva_par.par_id ) '
00655                                 ." INNER JOIN VW_PARTICIPANTES_POST vw_par ON ( par.par_vista_id = vw_par.ID_UNICO AND par.par_tipo = 'POSTGRADO' ) "
00656                                 .' WHERE eva_par.eva_id = :eva_id GROUP BY vw_par.CORREO_IESA';
00657                 else
00658                         $query =
00659                                 'SELECT par.par_id as ID, par.par_clave as CLAVE, eva_par.par_notificado as NOTIFICADO, vw_par.NOMBRE as NOMBRE,'
00660                                 .' vw_par.CEDULA as CEDULA, vw_par.CORREO_DESEADO as CORREO'
00661                                 .' FROM evaluaciones_participantes eva_par'
00662                                 .' INNER JOIN participantes par ON ( par.par_id = eva_par.par_id ) '
00663                                 ." INNER JOIN VW_PARTICIPANTES_DDG vw_par ON ( par.par_vista_id = vw_par.ID_UNICO AND par.par_tipo = 'DDG' ) "
00664                                 .' WHERE eva_par.eva_id = :eva_id GROUP BY vw_par.CORREO_DESEADO';
00665 
00666                 $consulta = $db->prepare( $query );
00667                 $consulta->execute( array( ':eva_id'=>$this->getId(  ) ) );
00668 
00669                 $Participantes = array(  );
00670 
00671                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ) {
00672                         $item = new stdClass(  );
00673                         $item->Id = $resultado['id'];
00674                         $item->Notificado = $resultado['notificado'];
00675                         if( $use_entities )
00676                                 $item->Nombre = htmlentities( ucwords( strtolower( trim( $resultado['nombre'] ) ) ) );
00677                         else
00678                                 $item->Nombre = ucwords( strtolower( trim( $resultado['nombre'] ) ) );
00679                         $item->Cedula = $resultado['cedula'];
00680                         $item->Correo = $resultado['correo'];
00681                         $item->Clave = $resultado['clave'];
00682 
00683                         if( $idLikeIndex ) $Participantes[$item->Id]=$item;
00684                         else array_push( $Participantes, $item );
00685                 }
00686                 $consulta->closeCursor(  ); unset( $consulta );
00687 
00688                 return $Participantes;
00689         }
00690 
00703         public function getInventarios( $simple=false ){
00704 
00705                 if( !$this->getId(  ) )
00706                         return false;
00707 
00708                 $db = Database::getInstance(  );
00709 
00710                 $consulta = $db->prepare(
00711                         'SELECT'
00712                     .' inv.inv_id, inv.inv_nombre, inv.inv_tipo,'
00713                         .' cue.cue_id, cue.cue_nombre, cue.cue_tipo, cue.cue_origen_id'
00714                         .( !$simple ? ', inv.inv_descripcion, cue.cue_instrucciones' : '' )
00715                         .' FROM evaluaciones_inventarios eva_inv'
00716                         .' JOIN inventarios inv ON ( eva_inv.inv_id = inv.inv_id ) '
00717                         .' JOIN cuestionarios cue ON ( cue.cue_inv_id = inv.inv_id ) '
00718                         .' WHERE eva_inv.eva_id = :eva_id ORDER BY inv.inv_id'
00719                 );
00720 
00721                 $consulta->execute( array( ':eva_id'=>$this->getId(  ) ) );
00722 
00723                 $Inventarios = array(  );
00724 
00725                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00726 
00727                         if( sizeof($Inventarios) == 0 || $Inventarios[sizeof($Inventarios)-1]->Id != $resultado['inv_id'] ){
00728                                 $item = new stdClass(  );
00729                                 $item->Id = $resultado['inv_id'];
00730                                 $item->Nombre = $resultado['inv_nombre'];
00731                                 if( !$simple  ) $item->Descripcion = $resultado['inv_descripcion'];
00732                                 $item->Cuestionarios = array(  );
00733                                 $item->Tipo = $resultado['inv_tipo'];
00734                                 array_push( $Inventarios, $item );
00735                         }
00736 
00737                         $sub_item = new stdClass(  );
00738                         $sub_item->Id = $resultado['cue_id'];
00739                         $sub_item->Nombre = $resultado['cue_nombre'];
00740                         if( !$simple  ) $sub_item->Instrucciones = $resultado['cue_instrucciones'];
00741                         $sub_item->Origen = $resultado['cue_origen_id'];
00742                         $sub_item->Tipo = $resultado['cue_tipo'];
00743                         array_push( $Inventarios[sizeof($Inventarios)-1]->Cuestionarios, $sub_item );
00744 
00745                 }
00746 
00747                 $consulta->closeCursor(  ) ;unset( $consulta );
00748 
00749                 return $Inventarios;
00750 
00751         }
00752 
00763         public function getCuestionarioDemografico(  ){
00764 
00765                 if( !$this->getId(  ) )
00766                         return false;
00767 
00768                 $db = Database::getInstance(  );
00769 
00770                 $consulta = $db->prepare( 'SELECT cue_id FROM evaluaciones_demograficos WHERE eva_id = :eva_id' );
00771 
00772                 $consulta->execute( array( ':eva_id'=>$this->getId(  ) ) );
00773                 
00774                 $cue = $consulta->fetchall();
00775                 
00776                 $consulta->CloseCursor(  ); unset( $consulta );
00777 
00778                 return $cue ? $cue['inv_id'] : 0;
00779 
00780         }
00781 
00792         public function getId(  ){ return $this->eva_id ? $this->eva_id : NULL; }
00793 
00803         public function getNombre(  ){ return $this->eva_nombre; }
00804 
00814         public function setNombre( $val ){ $this->eva_nombre = $val; }
00815 
00825         public function getActividadId(  ){ return $this->eva_act_id; }
00826 
00836         public function setActividadId( $val ){ $this->eva_act_id = $val; }
00837 
00848         public function getActividad(  ){
00849                 $rt = NULL; 
00850                 if( !$this->eva_actividad->getId(  ) )
00851                         $rt = $this->getId(  ) && $this->eva_actividad->getActividadPorId( $this->eva_act_id ) ? $this->eva_actividad : NULL ;
00852                 else
00853                         $rt = $this->eva_actividad;
00854 
00855                 return $rt;
00856         }
00857 
00867         public function getFechaInicio(  ){ 
00868                 if(!$this->eva_fecha_inicio)
00869                         return '';
00870                 $date = preg_split( '[-]', $this->eva_fecha_inicio ); return $date[2].'/'.$date[1].'/'.$date[0]; 
00871         }
00872 
00882         public function setFechaInicio( $val ){ 
00883                 $date = preg_split( '[/]', $val ); $this->eva_fecha_inicio = $date[2].'-'.$date[1].'-'.$date[0];
00884         }
00885 
00895         public function getFechaFin(  ){ 
00896                 if(!$this->eva_fecha_fin)
00897                         return '';
00898                 $date = preg_split( '[-]', $this->eva_fecha_fin ); return $date[2].'/'.$date[1].'/'.$date[0]; 
00899         }
00900 
00910         public function setFechaFin( $val ){
00911                 $date = preg_split( '[/]', $val ); $this->eva_fecha_fin = $date[2].'-'.$date[1].'-'.$date[0];
00912         }
00913 
00924         public function setInventariosId( $val ){ $this->eva_inventarios = $val; }
00925 
00936         public function getInventariosId(  ){ return $this->eva_inventarios; }
00937 
00938 
00954         public function ExportarDatos( $inv_ids ){
00955 
00956                 if( !$this->getId(  ) ) return;
00957 
00958                 $Participantes = $this->getParticipantes( true, false );
00959                 $Inventarios = array(  );
00960 
00961                 $db = Database::getInstance(  );
00962 
00963                 $consulta = $db->prepare(
00964                         'SELECT'
00965                     .' inv.inv_id, inv.inv_nombre, inv.inv_tipo,'
00966                         .' cue.cue_id, cue.cue_nombre, cue.cue_tipo, cue.cue_origen_id'
00967                         .' FROM evaluaciones_inventarios eva_inv'
00968                         .' JOIN inventarios inv ON ( eva_inv.inv_id = inv.inv_id ) '
00969                         .' JOIN cuestionarios cue ON ( cue.cue_inv_id = inv.inv_id ) '
00970                         .' WHERE eva_inv.eva_id = :eva_id AND inv.inv_id = :inv_id AND cue.cue_origen_id = 0 ORDER BY inv.inv_id '
00971                 );
00972 
00973                 foreach( $inv_ids as $Inv ){
00974                         $consulta->execute( array( ':eva_id'=>$this->getId(  ), ':inv_id'=>$Inv ) );
00975                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00976 
00977                                 if( sizeof($Inventarios) == 0 || $Inventarios[sizeof($Inventarios)-1]->Id != $resultado['inv_id'] )
00978                                         array_push( $Inventarios, ( object ) array(
00979                                                 'Id' => $resultado['inv_id'],
00980                                                 'Nombre' => $resultado['inv_nombre'],
00981                                                 'Tipo' => $resultado['inv_tipo'],
00982                                                 'Cuestionarios' => array(  )
00983                                         ));
00984 
00985                                 array_push( $Inventarios[sizeof($Inventarios)-1]->Cuestionarios, ( object )array(
00986                                         'Id' => $resultado['cue_id'],
00987                                         'Nombre' => $resultado['cue_nombre'],
00988                                         'Origen' => $resultado['cue_origen_id'],
00989                                         'Tipo' => $resultado['cue_tipo']
00990                                 ) );
00991                         }
00992                 }
00993                 $consulta->closeCursor(  ) ;unset( $consulta );
00994 
00995                 $query = 'SELECT pre_orden FROM preguntas WHERE pre_cue_id = :cue_id ORDER BY pre_orden';
00996                 $consulta = $db->prepare( $query );
00997 
00998                 foreach( $Inventarios as $i => &$Inv ){
00999                         foreach( $Inv->Cuestionarios as $j => &$Cue ){
01000                                 $Cue->Preguntas = array(  );
01001                                 $consulta->execute( array( ':cue_id'=>$Cue->Id ) );
01002                                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) )
01003                                         $Cue->Preguntas[ $resultado['pre_orden'] ] = array(  );
01004                         }
01005                 }
01006                 $consulta->closeCursor(  ); unset( $consulta );
01007 
01008                 $query =
01009                         'SELECT '
01010                                 .'res.res_valor, res.res_valor_extendido, res.eval_tipo, pre.pre_orden, '
01011                                 .'cue.cue_id, cue.cue_nombre, cue.cue_origen_id '
01012                         .'FROM respuestas res '
01013                         .'JOIN preguntas pre ON ( pre.pre_id = res.pre_id ) '
01014                         .'JOIN cuestionarios cue ON ( cue.cue_id = res.cue_id ) '
01015                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
01016                         .'WHERE '
01017                                 .'res.par_id = :par_id AND res.eva_id = :eva_id AND inv.inv_id = :inv_id '
01018                                 .'AND cue.cue_id = :cue_id OR cue.cue_origen_id = :cue_id '
01019                         .'ORDER BY cue.cue_id, pre.pre_orden ASC';
01020                 $consulta = $db->prepare( $query );
01021 
01022                 foreach( $Participantes as $j => $Par ){
01023                         foreach( $Inventarios as $j => &$Inv ){
01024                                 foreach( $Inv->Cuestionarios as $k => &$Cue ){
01025                                         $consulta->execute( array(
01026                                                 ':par_id'=>$Par->Id, ':eva_id'=>$this->getId(  ), ':inv_id'=>$Inv->Id, ':cue_id'=>$Cue->Id,
01027                                         ) );
01028                                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01029                                                 $valor = array(  );
01030                                                 if( $resultado['res_valor_extendido'] != '' ){
01031                                                         foreach( json_decode( $resultado['res_valor_extendido'] ) as $x => $v ) array_push( $valor, $v->Valor );
01032                                                 }else{ $valor = $resultado['res_valor']; }
01033                                                 
01034                                                 if( !isset( $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id] ) )
01035                                                         $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id] = ( object ) array(
01036                                                                 'Participante'=>0,
01037                                                                 'Jefes'=> array(  ),
01038                                                                 'Pares'=> array(  ),
01039                                                                 'Colaboradores'=> array(  )
01040                                                         );
01041 
01042                                                 if( $resultado[ 'eval_tipo' ] == 0 )
01043                                                         $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id]->Participante = $valor;
01044                                                 else if( $resultado[ 'eval_tipo' ] == 1 )
01045                                                         array_push( $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id]->Jefes, $valor );
01046                                                 else if( $resultado[ 'eval_tipo' ] == 2 )
01047                                                         array_push( $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id]->Pares, $valor );
01048                                                 else if( $resultado[ 'eval_tipo' ] == 3 )
01049                                                         array_push( $Cue->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id]->Colaboradores, $valor );
01050                                         }
01051                                 }
01052                         }
01053                 }
01054                 $consulta->closeCursor(  ); unset( $consulta );
01055 
01056 
01057                 $rt = array(  );
01058                 foreach( $Inventarios as $i => $I ){
01059                         $Inventario = ( object ) array( 'Nombre'=>$I->Nombre, 'Cuestionarios'=>array(  ) );
01060                         foreach( $I->Cuestionarios as $j=>$C ){
01061                                 $Cuestionario = ( object ) array( 'Nombre'=>$C->Nombre, 'Filas'=>array(  ) );
01062                                 foreach( $Participantes as $k=>$P ){
01063                                         $Fila = array(
01064                                                 'Nombre'=>$P->Nombre, 'Documento de Identidad'=>$P->Cedula, 'Correo Electrónico'=>$P->Correo
01065                                         );
01066                                         foreach( $C->Preguntas as $l=>$Pre ){
01067                                                 $Fila['P'.$l] = (object)array(
01068                                                         'Participante' => 0,
01069                                                         'Jefes' => array(  ),
01070                                                         'Pares' => array(  ),
01071                                                         'Colaboradores' => array(  )
01072                                                 );
01073                                                 if( isset( $Pre[$P->Id] ) ){
01074                                                         $Fila['P'.$l]->Participante = is_array( $Pre[$P->Id]->Participante )
01075                                                                 ? implode(" ; ",$Pre[$P->Id]->Participante ) 
01076                                                                 : $Pre[$P->Id]->Participante;
01077 
01078                                                         foreach( $Pre[$P->Id]->Jefes as $m=>$Jefe ){
01079                                                                 array_push(
01080                                                                         $Fila['P'.$l]->Jefes,
01081                                                                         is_array( $Jefe ) ? implode(" ; ",$Jefe ) : $Jefe
01082                                                                 );
01083                                                         }
01084                                                         foreach( $Pre[$P->Id]->Pares as $m=>$Par ){
01085                                                                 array_push(
01086                                                                         $Fila['P'.$l]->Pares,
01087                                                                         is_array( $Par ) ? implode(" ; ",$Par ) : $Par
01088                                                                 );
01089                                                         }
01090                                                         foreach( $Pre[$P->Id]->Colaboradores as $m=>$Colaborador ){
01091                                                                 array_push(
01092                                                                         $Fila['P'.$l]->Colaboradores,
01093                                                                         is_array( $Colaborador ) ? implode(" ; ",$Colaborador ) : $Colaborador
01094                                                                 );
01095                                                         }
01096 
01097                                                 }else
01098                                                         $Fila['P'.$l]->Participante = NULL;
01099 
01100                                         }
01101                                         array_push( $Cuestionario->Filas, $Fila );
01102                                 }
01103                                 array_push( $Inventario->Cuestionarios, $Cuestionario );
01104                         }
01105                         array_push( $rt, $Inventario );
01106                 }
01107                 unset( $Inventarios, $Participantes );
01108                 
01109                 return $rt;
01110 
01111         }
01112 
01123         public function ExportarDatosDemograficos(  ){
01124 
01125                 if( !$this->getId(  ) ) return;
01126 
01127                 $Participantes = $this->getParticipantes( true, false );
01128 
01129                 $db = Database::getInstance(  );
01130 
01131                 $consulta = $db->prepare(
01132                         'SELECT '
01133                                 .'cue.cue_id, cue.cue_nombre, '
01134                                 .'pre.pre_id, pre.pre_orden, pre.pre_enunciado '
01135                         .'FROM evaluaciones_demograficos eva_dem '
01136                         .'JOIN cuestionarios cue ON ( cue.cue_id = eva_dem.cue_id ) '
01137                         .'JOIN preguntas pre ON ( pre.pre_cue_id = eva_dem.cue_id ) '
01138                         .'WHERE eva_dem.eva_id = :eva_id ORDER BY pre.pre_orden ASC'
01139                 );
01140                 $consulta->execute( array( ':eva_id' => $this->getId(  ) ) );
01141                 $Cuestionario = NULL;
01142                 $Enunciados = array(  );
01143                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01144                         if( $Cuestionario == NULL )
01145                                 $Cuestionario = (object)array( 
01146                                         'Id' => $resultado['cue_id'], 'Nombre' => $resultado['cue_nombre'], 'Preguntas' => array(  ), 'Filas' => array(  )
01147                                 );
01148                         $Cuestionario->Preguntas[$resultado['pre_orden']] = array(  );
01149                         $Enunciados[ $resultado['pre_orden'] ] = $resultado['pre_enunciado'];
01150                 }
01151                 $consulta->closeCursor(  ) ;unset( $consulta );
01152 
01153                 if( $Cuestionario==NULL ) return false;
01154 
01155                 $query =
01156                         'SELECT '
01157                                 .'res.res_valor_extendido, pre.pre_orden '
01158                         .'FROM respuestas res '
01159                         .'JOIN preguntas pre ON ( pre.pre_id = res.pre_id ) '
01160                         .'JOIN cuestionarios cue ON ( cue.cue_id = res.cue_id ) '
01161                         .'WHERE res.par_id = :par_id AND cue.cue_id = :cue_id '
01162                         .'ORDER BY cue.cue_id, pre.pre_orden ASC';
01163                 $consulta = $db->prepare( $query );
01164 
01165                 foreach( $Participantes as $j => $Par ){
01166                         $consulta->execute( array( ':par_id'=>$Par->Id, ':cue_id'=>$Cuestionario->Id ) );
01167                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01168                                 $Cuestionario->Preguntas[ $resultado[ 'pre_orden' ] ][$Par->Id] = 
01169                                         json_decode( $resultado[ 'res_valor_extendido' ] )->Valor;
01170                         }
01171                 }
01172                 $consulta->closeCursor(  ); unset( $consulta );
01173 
01174                 foreach( $Participantes as $k=>$P ){
01175                         $Fila = array( 'Nombre'=>$P->Nombre, 'Documento de Identidad'=>$P->Cedula, 'Correo Electrónico'=>$P->Correo );
01176                         foreach( $Cuestionario->Preguntas as $l=>$Pre ){
01177                                 if( isset( $Pre[$P->Id] ) )
01178                                         $Fila[ $Enunciados[$l] ] = $Pre[$P->Id];
01179                                 else
01180                                         $Fila[ $Enunciados[$l] ] = NULL;
01181                         }
01182                         array_push( $Cuestionario->Filas, $Fila );
01183                 }
01184 
01185                 unset( $Cuestionario->Preguntas );
01186 
01187                 return $Cuestionario;
01188 
01189         }
01190 
01406         public function getResultadosPorParticipante( $par_id = 0, $inv_id = 0 ){
01407 
01408                 if( !$this->getId(  ) )
01409                         throw new Exception('Evaluación especificada no existe.');
01410 
01411                 if( $par_id == 0 ) return $this->getResultadosDummy( $inv_id );
01412 
01413                 $Participante = new Participante(  );
01414                 if( !$Participante->getParticipantePorId( $par_id ) )
01415                         throw new Exception('El participante especificado no existe. Participante ID ( '.$par_id.' )');
01416 
01417                 $Inventario = new Inventario(  );
01418                 if( !$Inventario->getInventarioPorId( $inv_id ) )
01419                         throw new Exception('El inventario especificado no existe. Inventario ID ( '.$inv_id.' )');
01420 
01421                 $Actividad = $this->getActividad(  );
01422 
01423                 $rt = ( object ) array(
01424                         'Participante' => ( object ) array(
01425                                 'Id' => $par_id,
01426                                 'Nombre' => $Participante->getNombreCompleto(  ),
01427                                 'Correo' => $Participante->getCorreoElectronico(  ),
01428                                 'Cedula' => $Participante->getCedula(  ),
01429                                 'Evaluadores' => $Participante->getEvaluadoresAgrupados(  )
01430                         ),
01431                         'Actividad' => ( object ) array(
01432                                 'Id' => $Actividad->getId(  ),
01433                                 'Nombre' => $Actividad->getNombre(  ),
01434                                 'FechaInicio' => $Actividad->getFechaInicio(  ),
01435                                 'FechaFin' => $Actividad->getFechaFin(  ),
01436                                 'Tipo' => $Actividad->getTipo(  )->Nombre,
01437                                 'Profesor' => $Actividad->getProfesor(  )->Nombre,
01438                                 'Localidad' => $Actividad->getLocalidad(  )->Nombre,
01439                                 'Materia' => $Actividad->getMateria(  )->Nombre,
01440                         ),
01441                         'Inventario' => ( object ) array(
01442                                 'Id' => $inv_id,
01443                                 'Nombre' => $Inventario->getNombre(  ),
01444                                 'Descripcion' => $Inventario->getDescripcion(  ),
01445                                 'Tipo' => $Inventario->getTipo(  ),
01446                                 'Introduccion'=>$Inventario->getReporteIntroduccion(  ),
01447                                 'Cuestionarios' => array(  )
01448                         )
01449                 );
01450 
01451                 $db = Database::getInstance(  );
01452 
01453                 $cue_match = array(  );
01454 
01455                 // Lista de cuestionarios
01456                 $query =
01457                         'SELECT '
01458                                 .'cue.cue_id, cue.cue_tipo, cue.cue_nombre, cue.cue_origen_id, cue.cue_gra_rangos, cuesub.cue_id as cue_dep_id, '
01459                                 .'cue.cue_gra_tipo, cue.cue_gra_estadistico, cue.cue_gra_analisis, '
01460                                 .'pre.pre_id, pre.pre_orden, pre.pre_tipo, pre.pre_enunciado, pre.pre_enunciado_b '
01461                         .'FROM cuestionarios cue '
01462                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
01463                         .'JOIN preguntas pre ON ( pre.pre_cue_id = cue.cue_id ) '
01464                         .'LEFT OUTER JOIN cuestionarios cuesub ON ( cuesub.cue_origen_id = cue.cue_id ) '
01465                         .'WHERE inv.inv_id = :inv_id AND cue.cue_tipo = 0 '
01466                         .'ORDER by cue.cue_id, pre.pre_orden';
01467                 $consulta = $db->prepare( $query );
01468                 $consulta->execute( array( ':inv_id'=>$inv_id ) );
01469                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01470                         $cue_count = sizeof( $rt->Inventario->Cuestionarios );
01471                         if( $cue_count == 0 || $rt->Inventario->Cuestionarios[$cue_count - 1]->Id != $resultado['cue_id'] ){
01472                                 $cue_match[ $resultado['cue_id'] ] = (object)array( 'Index'=>$cue_count, 'Dimensiones'=>array(  ) );
01473                                 array_push($rt->Inventario->Cuestionarios, ( object ) array(
01474                                         'Id' => $resultado['cue_id'],
01475                                         'Nombre' => $resultado['cue_nombre'],
01476                                         'Dependiente'=> $resultado['cue_dep_id'],
01477                                         'Grafico' => ( object ) array(
01478                                                 'Tipo' => $resultado['cue_gra_tipo'],
01479                                                 'Estadistico' => $resultado['cue_gra_estadistico'],
01480                                                 'Grupos' => ( object ) array(
01481                                                         'Dimensiones' =>
01482                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_DIMENSIONES ? true: false,
01483                                                         'SubDimensiones' =>
01484                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_SUBDIMENSIONES ? true: false,
01485                                                         'PreguntasDimensiones' => 
01486                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_PREGUNTAS_DIMENSIONES ? true: false,
01487                                                         'PreguntasSubDimensiones' =>
01488                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_PREGUNTAS_SUBDIMENSIONES ? true: false
01489                                                 ),
01490                                                 'Rangos'=> json_decode( $resultado['cue_gra_rangos'] ),
01491                                                 'PromedioGrupal' => ( object ) array(
01492                                                         'Dimensiones' =>
01493                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_DIM_PROMEDIO_GRUPAL ? true : false,
01494                                                         'SubDimensiones' =>
01495                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_SUBDIM_PROMEDIO_GRUPAL ? true: false,
01496                                                 )
01497                                         ),
01498                                         'Dimensiones' => array(  ),
01499                                         'RespondidoPor' => (object)array(
01500                                                 'Jefe' => 0,
01501                                                 'Pares' => 0,
01502                                                 'Colaboradores' => 0,
01503                                                 'Otros' => 0
01504                                         ),
01505                                         'Preguntas' => array(
01506                                                 (object)array(
01507                                                         'Id' => $resultado['pre_id'],
01508                                                         'Tipo' => $resultado['pre_tipo'],
01509                                                         'Enunciado' => $resultado['pre_enunciado'],
01510                                                         'EnunciadoB' => $resultado['pre_enunciado_b'],
01511                                                         'Dimensiones' => array(  )
01512                                                 )
01513                                         )
01514                                 ) );
01515                         }else{
01516                                 array_push($rt->Inventario->Cuestionarios[$cue_count - 1]->Preguntas, ( object ) array(
01517                                         'Tipo'=>$resultado['pre_tipo'],
01518                                         'Enunciado'=>$resultado['pre_enunciado'],
01519                                         'EnunciadoB'=>$resultado['pre_enunciado_b'],
01520                                         'Dimensiones'=>array(  )
01521                                 ) );
01522                         }
01523                 }
01524                 $consulta->closeCursor(  ); unset( $consulta );
01525 
01526                 // Lista de dimensones por cuestionario
01527                 $query =
01528                         'SELECT '
01529                                 .'cue.cue_id, dim.dim_id, dim.dim_connotacion_negativa, dim.dim_nombre, dimp.dim_nombre as dim_nombre_padre, '
01530                                 .'dim.dim_rangos '
01531                         .'FROM dimensiones dim '
01532                         .'LEFT OUTER JOIN dimensiones dimp ON ( dimp.dim_id = dim.dim_padre_id ) '
01533                         .'JOIN cuestionarios cue ON ( cue.cue_id = dim.dim_cue_id ) '
01534                         .'WHERE cue.cue_id = :cue_id '
01535                         .'ORDER by cue.cue_id, dim.dim_id';
01536                 $consulta = $db->prepare( $query );
01537                 foreach( $rt->Inventario->Cuestionarios as $key => &$Cue ){
01538                         $consulta->execute( array( ':cue_id'=>$Cue->Id ) );
01539                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01540                                 $dim_count = sizeof( $Cue->Dimensiones );
01541                                 $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] = $dim_count;
01542                                 array_push( $Cue->Dimensiones, (object)array(
01543                                         'Id' => $resultado['dim_id'],
01544                                         'Nombre' => $resultado['dim_nombre'],
01545                                         'Padre' => $resultado['dim_nombre_padre'],
01546                                         'Rangos' => $resultado[ 'dim_rangos' ] ? json_decode( $resultado[ 'dim_rangos' ] ): array(  ),
01547                                         'ConnotacionNegativa' => $resultado['dim_connotacion_negativa'] == 0 ? false : true,
01548                                         'Ocurrencias' => 0,
01549                                         'Ponderacion' => 0,
01550                                         'ValoresPosibles' => (object)array(
01551                                                 'PorPregunta' => (object)array(
01552                                                         'Minimo'=> NULL,
01553                                                         'Maximo'=> NULL
01554                                                 ),
01555                                                 'Sumatoria' => (object)array(
01556                                                         'Minimo'=> 0,
01557                                                         'Maximo'=> 0
01558                                                 ),
01559                                                 'Promedio' => (object)array(
01560                                                         'Minimo'=> 0,
01561                                                         'Maximo'=> 0
01562                                                 ),
01563                                                 'PromedioPonderado' => (object)array(
01564                                                         'Minimo'=> 0,
01565                                                         'Maximo'=> 0
01566                                                 )
01567                                         ),
01568                                         'Jefe'=>(object)array( 'Individuales'=>array(  ), 'Totales'=>(object)array(
01569                                                 'Sumatoria'=>0, 'Promedio'=>0, 'PromedioPonderado'=>0,
01570                                         ) ),
01571                                         'Pares'=>(object)array( 'Individuales'=>array(  ), 'Totales'=>(object)array(
01572                                                 'Sumatoria'=>0, 'Promedio'=>0, 'PromedioPonderado'=>0,
01573                                         ) ),
01574                                         'Colaboradores'=>(object)array( 'Individuales'=>array(  ), 'Totales'=>(object)array(
01575                                                 'Sumatoria'=>0, 'Promedio'=>0, 'PromedioPonderado'=>0,
01576                                         ) )
01577                                 ) );
01578                         }
01579                 }
01580                 $consulta->closeCursor(  ); unset( $consulta );
01581 
01582                 // Respuestas del participante a las preguntas por cuestionario
01583                 $query =
01584                         'SELECT '
01585                                 .'cue.cue_id, '
01586                                 .'pre.pre_tipo, pre.pre_orden, '
01587                                 .'res.res_valor, res.res_valor_extendido, '
01588                                 .'dim.dim_id '
01589                         .'FROM preguntas pre '
01590                         .'JOIN respuestas res ON ( res.pre_id = pre.pre_id ) '
01591                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
01592                         .'JOIN alternativas alt ON ( alt.alt_id = res.alt_id ) '
01593                         .'LEFT OUTER JOIN dimensiones dim ON ( dim.dim_id = alt.alt_dim_id ) '
01594                         .'WHERE '
01595                                 .'res.eva_id = :eva_id AND '
01596                                 .'res.par_id = :par_id AND '
01597                                 .'res.eval_tipo = :eval_tipo AND '
01598                                 .'cue.cue_inv_id = :inv_id '
01599                         .'ORDER BY cue.cue_id, pre_orden ASC';
01600                 $consulta = $db->prepare( $query );
01601                 $consulta->execute( array( ':eva_id'=>$this->getId(  ) ,':par_id'=>$par_id, ':eval_tipo'=>0, ':inv_id'=>$inv_id ) );
01602                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01603                         $CUE = &$rt->Inventario->Cuestionarios[ $cue_match[ $resultado['cue_id'] ]->Index ];
01604                         $PREGUNTA = &$CUE->Preguntas[ $resultado['pre_orden']-1 ];
01605                         $ParRespuesta = NULL;
01606                         if(
01607                                 $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES 
01608                                 ||$resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL 
01609                         ){
01610                                 foreach( json_decode( $resultado['res_valor_extendido'] ) as $i => $v ){
01611                                         if( !isset( $PREGUNTA->Dimensiones[ $v->Dimension ] ) )
01612                                                 $PREGUNTA->Dimensiones[ $v->Dimension ] = (object)array(
01613                                                         'Nombre'=>
01614                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $v->Dimension ] ]->Nombre,
01615                                                         'Padre'=>
01616                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $v->Dimension ] ]->Padre,
01617                                                         'Participante'=>0,
01618                                                         'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01619                                                         'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01620                                                         'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01621                                                 );
01622 
01623                                         $PREGUNTA->Dimensiones[ $v->Dimension ]->Participante = $v->Valor;
01624                                 }
01625                         }else{
01626                                 if( !isset( $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] ) )
01627                                         $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] = (object)array(
01628                                                 'Nombre'=>
01629                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]->Nombre,
01630                                                 'Padre'=> 
01631                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]->Padre,
01632                                                 'Participante'=>0,
01633                                                 'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01634                                                 'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01635                                                 'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01636                                         );
01637 
01638                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ]->Participante = $resultado['res_valor'];
01639                         }
01640                 }
01641                 $consulta->closeCursor(  ); unset( $consulta );
01642 
01643                 // Resultados del participante por dimensión
01644                 $query =
01645                         'SELECT '
01646                                 .'res.cue_id, res.par_id, dim.dim_id, res.eval_id, res.eval_tipo, '
01647                                 .'res.res_sumatoria, res.res_promedio, res.res_promedio_ponderado, '
01648                                 .'( SELECT sum( sum_res.res_sumatoria ) - res.res_sumatoria FROM resultados sum_res '
01649                                         .'WHERE sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo AND sum_res.dim_id = dim.dim_id ) / '
01650                                 .'( SELECT count( sum_res.res_sumatoria ) FROM resultados sum_res '
01651                                         .'WHERE sum_res.par_id <> :par_id AND sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo '
01652                                         .'AND sum_res.dim_id = dim.dim_id ) '
01653                                 .'as res_otros_sumatoria, '
01654                                 .'( SELECT sum( sum_res.res_promedio ) - res.res_promedio FROM resultados sum_res '
01655                                         .'WHERE sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo AND sum_res.dim_id = dim.dim_id ) / '
01656                                 .'( SELECT count( sum_res.res_promedio ) FROM resultados sum_res '
01657                                         .'WHERE sum_res.par_id <> :par_id AND sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo '
01658                                         .'AND sum_res.dim_id = dim.dim_id ) '
01659                                 .'as res_otros_promedio, '
01660                                 .'( SELECT sum( sum_res.res_promedio_ponderado ) - res.res_promedio_ponderado FROM resultados sum_res '
01661                                         .'WHERE sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo AND sum_res.dim_id = dim.dim_id ) / '
01662                                 .'( SELECT count( sum_res.res_promedio_ponderado ) FROM resultados sum_res '
01663                                         .'WHERE sum_res.par_id <> :par_id AND sum_res.eva_id = :eva_id AND sum_res.eval_tipo = :eval_tipo '
01664                                         .'AND sum_res.dim_id = dim.dim_id ) '
01665                                 .'as res_otros_promedio_ponderado '
01666                         .'FROM resultados res '
01667                         .'JOIN cuestionarios cue ON ( cue.cue_id = res.cue_id ) '
01668                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
01669                         .'JOIN dimensiones dim ON ( dim.dim_id = res.dim_id ) '
01670                         .'LEFT OUTER JOIN dimensiones dimp ON ( dimp.dim_id = dim.dim_padre_id ) '
01671                         .'WHERE res.par_id = :par_id AND inv.inv_id = :inv_id AND res.eva_id = :eva_id AND res.eval_tipo = :eval_tipo '
01672                         .'AND cue.cue_origen_id = :cue_origen_id '
01673                         .'ORDER BY cue.cue_id, dim.dim_id ASC';
01674                 $consulta = $db->prepare( $query );
01675                 $consulta->execute( array(
01676                         ':par_id'=>$par_id, ':inv_id'=>$inv_id, ':eva_id'=>$this->getId(  ) ,':eval_tipo'=>0, ':cue_origen_id' => 0
01677                 ) );
01678                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01679                         $CUE_IDX = $cue_match[ $resultado['cue_id'] ]->Index;
01680                         $DIM_IDX = $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ];
01681                         $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Participante = (object)array(
01682                                 'Sumatoria' => (float)$resultado[ 'res_sumatoria' ],
01683                                 'Promedio' => (float)$resultado[ 'res_promedio' ],
01684                                 'PromedioPonderado' => (float)$resultado[ 'res_promedio_ponderado' ]
01685                         );
01686                         $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Otros = (object)array(
01687                                 'Sumatoria' => (float)$resultado[ 'res_otros_sumatoria' ],
01688                                 'Promedio' => (float)$resultado[ 'res_otros_promedio' ],
01689                                 'PromedioPonderado' => (float)$resultado[ 'res_otros_promedio_ponderado' ]
01690                         );
01691                 }
01692                 $consulta->closeCursor(  ); unset( $consulta );
01693 
01694                 // maximos y minimos por dimensiones
01695                 $query =
01696                         'SELECT '
01697                                 .'cue.cue_id, pre.pre_id, pre.pre_tipo, pre.pre_orden, pre.pre_dimension_a, pre.pre_dimension_b, '
01698                                 .'pre.pre_pp_peso, dim.dim_id, alt.alt_valor '
01699                         .'FROM preguntas pre '
01700                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
01701                         .'JOIN alternativas alt ON ( alt.alt_pre_id = pre.pre_id ) '
01702                         .'LEFT OUTER JOIN dimensiones dim ON ( dim.dim_id = alt.alt_dim_id ) '
01703                         .'WHERE cue.cue_id = :cue_id ORDER BY cue.cue_id, pre_orden ASC';
01704                 $consulta = $db->prepare( $query );
01705                 foreach($rt->Inventario->Cuestionarios as $key => &$Cue ){
01706                         $consulta->execute( array( ':cue_id' => $Cue->Id ) );
01707                         $pre_id_curr = 0;
01708                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01709                                 if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES ){
01710                                         $DimensionA = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]
01711                                                 ->Dimensiones[ $resultado['pre_dimension_a'] ] ];
01712                                         $DimensionB = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]
01713                                                 ->Dimensiones[ $resultado['pre_dimension_b'] ] ];
01714 
01715                                         // Asigna valor Minimo por pregunta
01716                                         if(
01717                                                 $DimensionA->ValoresPosibles->PorPregunta->Minimo == NULL 
01718                                                 || $DimensionA->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
01719                                         )
01720                                                 $DimensionA->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
01721                                         if(
01722                                                 $DimensionB->ValoresPosibles->PorPregunta->Minimo == NULL 
01723                                                 || $DimensionB->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
01724                                         )
01725                                                 $DimensionB->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
01726 
01727                                         // Asigna valor Maximo por pregunta
01728                                         if(
01729                                                 $DimensionA->ValoresPosibles->PorPregunta->Maximo == NULL 
01730                                                 || $DimensionA->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
01731                                         )
01732                                                 $DimensionA->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
01733                                         if(
01734                                                 $DimensionB->ValoresPosibles->PorPregunta->Maximo == NULL 
01735                                                 || $DimensionB->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
01736                                         )
01737                                                 $DimensionB->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
01738 
01739                                         $DimensionA->Ocurrencias++; $DimensionB->Ocurrencias++;
01740 
01741                                         $DimensionA->Ponderacion += (float)$resultado['pre_pp_peso'];
01742                                         $DimensionB->Ponderacion += (float)$resultado['pre_pp_peso'];
01743 
01744                                 }else{
01745                                         $Dimension = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] ];
01746                                         if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL ){
01747                                                 // Asigna valor Minimo por pregunta
01748                                                 if($Dimension->ValoresPosibles->PorPregunta->Minimo == NULL)
01749                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo = 1;
01750                                                 // Asigna valor Maximo por pregunta
01751                                                 if(
01752                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo == NULL 
01753                                                 || $Dimension->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
01754                                         )
01755                                                         $Dimension->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
01756                                                 $Dimension->Ocurrencias++;
01757                                                 $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
01758                                         }else{
01759                                                 // Asigna valor Minimo por pregunta
01760                                                 if(
01761                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo == NULL 
01762                                                 || $Dimension->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
01763                                         )
01764                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
01765                                                 // Asigna valor Maximo por pregunta
01766                                                 if(
01767                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo == NULL 
01768                                                 || $Dimension->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
01769                                         )
01770                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
01771 
01772                                                 if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_BIDIMENSIONAL ){
01773                                                         $Dimension->Ocurrencias++;
01774                                                         $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
01775                                                 }
01776                                         }
01777                                 }
01778                                 if( $pre_id_curr != $resultado['pre_id'] ){
01779                                         $pre_id_curr = $resultado['pre_id'];
01780                                         if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_UNIDIMENSIONAL ){
01781                                                 $Dimension->Ocurrencias++;
01782                                                 $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
01783                                         }
01784                                 }
01785                         }
01786                         foreach($Cue->Dimensiones as $i => &$Dim ){
01787                                 $Valores = &$Dim->ValoresPosibles;
01788 
01789                                 if( $Valores->PorPregunta->Minimo == NULL ) $Valores->PorPregunta->Minimo = 0;
01790                                 if( $Valores->PorPregunta->Maximo == NULL ) $Valores->PorPregunta->Maximo = 0;
01791 
01792                                 $Valores->Sumatoria->Minimo = $Valores->PorPregunta->Minimo * $Dim->Ocurrencias;
01793                                 $Valores->Sumatoria->Maximo = $Valores->PorPregunta->Maximo * $Dim->Ocurrencias;
01794 
01795                                 $Valores->Promedio->Minimo = $Dim->Ocurrencias > 0 ? $Valores->Sumatoria->Minimo / $Dim->Ocurrencias : 0;
01796                                 $Valores->Promedio->Maximo = $Dim->Ocurrencias > 0 ? $Valores->Sumatoria->Maximo / $Dim->Ocurrencias : 0;
01797                                 
01798                                 $Valores->PromedioPonderado->Minimo = $Dim->Ponderacion > 0 ? $Valores->Sumatoria->Minimo / $Dim->Ponderacion : 0;
01799                                 $Valores->PromedioPonderado->Maximo = $Dim->Ponderacion > 0 ? $Valores->Sumatoria->Maximo / $Dim->Ponderacion : 0;
01800 
01801                                 foreach( $Dim->Rangos as $j => $Rango ){
01802 
01803                                         if(
01804                                                 ( $Valores->Sumatoria->Minimo == $Rango->Minimo || $Valores->Sumatoria->Minimo > $Rango->Minimo )
01805                                                 &&
01806                                                 ( $Valores->Sumatoria->Minimo == $Rango->Maximo || $Valores->Sumatoria->Minimo < $Rango->Maximo )
01807                                         )
01808                                                 $Valores->Sumatoria->Minimo = $Rango->Valor;
01809                                         if(
01810                                                 ( $Valores->Sumatoria->Maximo == $Rango->Minimo || $Valores->Sumatoria->Maximo > $Rango->Minimo )
01811                                                 &&
01812                                                 ( $Valores->Sumatoria->Maximo == $Rango->Maximo || $Valores->Sumatoria->Maximo < $Rango->Maximo )
01813                                         )
01814                                                 $Valores->Sumatoria->Maximo = $Rango->Valor;
01815 
01816                                         if(
01817                                                 ( $Valores->Promedio->Minimo == $Rango->Minimo || $Valores->Promedio->Minimo > $Rango->Minimo )
01818                                                 &&
01819                                                 ( $Valores->Promedio->Minimo == $Rango->Maximo || $Valores->Promedio->Minimo < $Rango->Maximo )
01820                                         )
01821                                                 $Valores->Promedio->Minimo = $Rango->Valor;
01822                                         if(
01823                                                 ( $Valores->Promedio->Maximo == $Rango->Minimo || $Valores->Promedio->Maximo > $Rango->Minimo )
01824                                                 &&
01825                                                 ( $Valores->Promedio->Maximo == $Rango->Maximo || $Valores->Promedio->Maximo < $Rango->Maximo )
01826                                         )
01827                                                 $Valores->Promedio->Maximo = $Rango->Valor;
01828 
01829                                         if(
01830                                                 ($Valores->PromedioPonderado->Minimo==$Rango->Minimo || $Valores->PromedioPonderado->Minimo>$Rango->Minimo)
01831                                                 &&
01832                                                 ($Valores->PromedioPonderado->Minimo==$Rango->Maximo || $Valores->PromedioPonderado->Minimo<$Rango->Maximo)
01833                                         )
01834                                                 $Valores->PromedioPonderado->Minimo = $Rango->Valor;
01835                                         if(
01836                                                 ($Valores->PromedioPonderado->Maximo==$Rango->Minimo || $Valores->PromedioPonderado->Maximo>$Rango->Minimo)
01837                                                 &&
01838                                                 ($Valores->PromedioPonderado->Maximo==$Rango->Maximo || $Valores->PromedioPonderado->Maximo<$Rango->Maximo)
01839                                         )
01840                                                 $Valores->PromedioPonderado->Maximo = $Rango->Valor;
01841 
01842                                 }
01843                                 
01844                         }
01845                 }
01846                 $consulta->closeCursor(  ); unset( $consulta );
01847 
01848                 // Resultados de los evaluadores del participante por dimensión
01849                 if( $rt->Inventario->Tipo == Inventario::TIPO_360 ){
01850 
01851                         // Respuestas de los evaluadores a las preguntas por cuestionario
01852                         $query =
01853                                 'SELECT '
01854                                         .'cue.cue_id, cue.cue_origen_id, '
01855                                         .'pre.pre_tipo, pre.pre_orden, '
01856                                         .'res.res_valor, res.res_valor_extendido, '
01857                                         .'dim.dim_id '
01858                                 .'FROM preguntas pre '
01859                                 .'JOIN respuestas res ON ( res.pre_id = pre.pre_id ) '
01860                                 .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
01861                                 .'JOIN alternativas alt ON ( alt.alt_id = res.alt_id ) '
01862                                 .'LEFT OUTER JOIN dimensiones dim ON ( dim.dim_id = alt.alt_dim_id ) '
01863                                 .'WHERE '
01864                                         .'res.eva_id = :eva_id AND '
01865                                         .'res.par_id = :par_id AND '
01866                                         .'res.eval_tipo = :eval_tipo AND '
01867                                         .'cue.cue_inv_id = :inv_id '
01868                                 .'ORDER BY cue.cue_id, pre_orden ASC';
01869                         $consulta = $db->prepare( $query );
01870 
01871                         // Jefe
01872                         $consulta->execute( array( ':eva_id'=>$this->getId(  ) ,':par_id'=>$par_id, ':eval_tipo'=>1, ':inv_id'=>$inv_id ) );
01873                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01874                                 $CUE = &$rt->Inventario->Cuestionarios[ $cue_match[ $resultado['cue_origen_id'] ]->Index ];
01875                                 $PREGUNTA = &$CUE->Preguntas[ $resultado['pre_orden']-1 ];
01876                                 if(
01877                                         $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES 
01878                                         ||$resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL 
01879                                 ){
01880                                         foreach( json_decode( $resultado['res_valor_extendido'] ) as $i => $v ){
01881                                                 if( !isset( $PREGUNTA->Dimensiones[ $v->Dimension ] ) )
01882                                                         $PREGUNTA->Dimensiones[ $v->Dimension ] = (object)array(
01883                                                                 'Nombre'=>
01884                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01885                                                                                 ->Nombre,
01886                                                                 'Padre'=>
01887                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01888                                                                                 ->Padre,
01889                                                                 'Participante'=>0,
01890                                                                 'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01891                                                                 'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01892                                                                 'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01893                                                         );
01894                                                 array_push( $PREGUNTA->Dimensiones[ $v->Dimension ]->Jefe->Individuales, $v->Valor );
01895                                         }
01896                                 }else{
01897                                         if( !isset( $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] ) )
01898                                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] = (object)array(
01899                                                         'Nombre'=>
01900                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01901                                                                         ->Nombre,
01902                                                         'Padre'=> 
01903                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01904                                                                         ->Padre,
01905                                                         'Participante'=>0,
01906                                                         'Jefe'=>array(  ),
01907                                                         'Pares'=>array(  ),
01908                                                         'Colaboradores'=>array(  )
01909                                                 );
01910 
01911                                         array_push(
01912                                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ]->Jefe->Individuales,
01913                                                 $resultado['res_valor']
01914                                         );
01915                                 }
01916                         }
01917 
01918                         // Pares
01919                         $consulta->execute( array( ':eva_id'=>$this->getId(  ) ,':par_id'=>$par_id, ':eval_tipo'=>2, ':inv_id'=>$inv_id ) );
01920                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01921                                 $CUE = &$rt->Inventario->Cuestionarios[ $cue_match[ $resultado['cue_origen_id'] ]->Index ];
01922                                 $PREGUNTA = &$CUE->Preguntas[ $resultado['pre_orden']-1 ];
01923                                 if(
01924                                         $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES 
01925                                         ||$resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL 
01926                                 ){
01927                                         foreach( json_decode( $resultado['res_valor_extendido'] ) as $i => $v ){
01928                                                 if( !isset( $PREGUNTA->Dimensiones[ $v->Dimension ] ) )
01929                                                         $PREGUNTA->Dimensiones[ $v->Dimension ] = (object)array(
01930                                                                 'Nombre'=>
01931                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01932                                                                                 ->Nombre,
01933                                                                 'Padre'=>
01934                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01935                                                                                 ->Padre,
01936                                                                 'Participante'=>0,
01937                                                                 'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01938                                                                 'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01939                                                                 'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01940                                                         );
01941                                                 array_push( $PREGUNTA->Dimensiones[ $v->Dimension ]->Pares->Individuales, $v->Valor );
01942                                         }
01943                                 }else{
01944                                         if( !isset( $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] ) )
01945                                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] = (object)array(
01946                                                         'Nombre'=>
01947                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01948                                                                         ->Nombre,
01949                                                         'Padre'=> 
01950                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01951                                                                         ->Padre,
01952                                                         'Participante'=>0,
01953                                                         'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01954                                                         'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01955                                                         'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01956                                                 );
01957 
01958                                         array_push( $PREGUNTA->Dimensiones[ $resultado['dim_id'] ]->Pares->Individuales, $resultado['res_valor'] );
01959                                 }
01960                         }
01961 
01962                         // Colaboradores
01963                         $consulta->execute( array( ':eva_id'=>$this->getId(  ) ,':par_id'=>$par_id, ':eval_tipo'=>3, ':inv_id'=>$inv_id ) );
01964                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01965                                 $CUE = &$rt->Inventario->Cuestionarios[ $cue_match[ $resultado['cue_origen_id'] ]->Index ];
01966                                 $PREGUNTA = &$CUE->Preguntas[ $resultado['pre_orden']-1 ];
01967                                 if(
01968                                         $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES 
01969                                         ||$resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL 
01970                                 ){
01971                                         foreach( json_decode( $resultado['res_valor_extendido'] ) as $i => $v ){
01972                                                 if( !isset( $PREGUNTA->Dimensiones[ $v->Dimension ] ) )
01973                                                         $PREGUNTA->Dimensiones[ $v->Dimension ] = (object)array(
01974                                                                 'Nombre'=>
01975                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01976                                                                                 ->Nombre,
01977                                                                 'Padre'=>
01978                                                                         $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $v->Dimension ] ]
01979                                                                                 ->Padre,
01980                                                                 'Participante'=>0,
01981                                                                 'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01982                                                                 'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01983                                                                 'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
01984                                                         );
01985 
01986                                                 array_push( $PREGUNTA->Dimensiones[ $v->Dimension ]->Colaboradores->Individuales, $v->Valor );
01987                                         }
01988                                 }else{
01989                                         if( !isset( $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] ) )
01990                                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ] = (object)array(
01991                                                         'Nombre'=>
01992                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01993                                                                         ->Nombre,
01994                                                         'Padre'=> 
01995                                                                 $CUE->Dimensiones[ $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ] ]
01996                                                                         ->Padre,
01997                                                         'Participante'=>0,
01998                                                         'Jefe'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
01999                                                         'Pares'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) ),
02000                                                         'Colaboradores'=>(object)array( 'Promedio'=>0, 'Individuales'=>array(  ) )
02001                                                 );
02002 
02003                                         array_push(
02004                                                 $PREGUNTA->Dimensiones[ $resultado['dim_id'] ]->Colaboradores->Individuales,
02005                                                 $resultado['res_valor']
02006                                         );
02007                                 }
02008                         }
02009 
02010                         $consulta->closeCursor(  ); unset( $consulta );
02011 
02012                         // Resultadoes de las dimensiones por evaluador
02013                         $query = 
02014                                 'SELECT '
02015                                         .'cue.cue_origen_id, res.cue_id, res.par_id, dim.dim_id, res.eval_id, res.eval_tipo, '
02016                                         .'res.res_sumatoria, res.res_promedio, res.res_promedio_ponderado '
02017                                 .'FROM resultados res '
02018                                 .'JOIN cuestionarios cue ON ( cue.cue_id = res.cue_id ) '
02019                                 .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
02020                                 .'JOIN dimensiones dim ON ( dim.dim_id = res.dim_id ) '
02021                                 .'LEFT OUTER JOIN dimensiones dimp ON ( dimp.dim_id = dim.dim_padre_id ) '
02022                                 .'WHERE res.par_id = :par_id AND inv.inv_id = :inv_id AND res.eva_id = :eva_id AND res.eval_tipo = :eval_tipo '
02023                                 .'ORDER BY cue.cue_id, dim.dim_id, res.eval_id ASC';
02024                         $consulta = $db->prepare( $query );
02025 
02026                         // Jefe
02027                         $consulta->execute( array( ':par_id'=>$par_id, ':inv_id'=>$inv_id, ':eva_id'=>$this->getId(  ), ':eval_tipo'=>1 ) );
02028                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02029                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Jefe
02030                                         ->Totales->Sumatoria+= (float)$resultado[ 'res_sumatoria' ];
02031                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Jefe
02032                                         ->Totales->Promedio+= (float)$resultado[ 'res_promedio' ];
02033                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Jefe
02034                                         ->Totales->PromedioPonderado+= (float)$resultado[ 'res_promedio_ponderado' ];
02035 
02036                                 $CUE_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Index;
02037                                 $DIM_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ];
02038 
02039                                 array_push(
02040                                         $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Jefe->Individuales,
02041                                         (object)array(
02042                                                 'Sumatoria' => (float)$resultado[ 'res_sumatoria' ],
02043                                                 'Promedio' => (float)$resultado[ 'res_promedio' ],
02044                                                 'PromedioPonderado' => (float)$resultado[ 'res_promedio_ponderado' ]
02045                                         )
02046                                 );
02047                         }
02048 
02049                         // Pares
02050                         $consulta->execute( array( ':par_id'=>$par_id, ':inv_id'=>$inv_id, ':eva_id'=>$this->getId(  ), ':eval_tipo'=>2 ) );
02051                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02052                                 $CUE_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Index;
02053                                 $DIM_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ];
02054 
02055                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Pares
02056                                         ->Totales->Sumatoria+= (float)$resultado[ 'res_sumatoria' ];
02057                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Pares
02058                                         ->Totales->Promedio+= (float)$resultado[ 'res_promedio' ];
02059                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Pares
02060                                         ->Totales->PromedioPonderado+= (float)$resultado[ 'res_promedio_ponderado' ];
02061 
02062                                 array_push(
02063                                         $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Pares->Individuales,
02064                                         (object)array(
02065                                                 'Sumatoria' => (float)$resultado[ 'res_sumatoria' ],
02066                                                 'Promedio' => (float)$resultado[ 'res_promedio' ],
02067                                                 'PromedioPonderado' => (float)$resultado[ 'res_promedio_ponderado' ]
02068                                         )
02069                                 );
02070                         }
02071 
02072                         // Colaboradores
02073                         $consulta->execute( array( ':par_id'=>$par_id, ':inv_id'=>$inv_id, ':eva_id'=>$this->getId(  ), ':eval_tipo'=>3 ) );
02074                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02075 
02076                                 $CUE_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Index;
02077                                 $DIM_IDX = $cue_match[ $resultado['cue_origen_id'] ]->Dimensiones[ $resultado['dim_id'] ];
02078 
02079                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Colaboradores
02080                                         ->Totales->Sumatoria+= (float)$resultado[ 'res_sumatoria' ];
02081                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Colaboradores
02082                                         ->Totales->Promedio+= (float)$resultado[ 'res_promedio' ];
02083                                 $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Colaboradores
02084                                         ->Totales->PromedioPonderado+= (float)$resultado[ 'res_promedio_ponderado' ];
02085 
02086                                 array_push(
02087                                         $rt->Inventario->Cuestionarios[ $CUE_IDX ]->Dimensiones[ $DIM_IDX ]->Colaboradores->Individuales,
02088                                         (object)array(
02089                                                 'Sumatoria' => (float)$resultado[ 'res_sumatoria' ],
02090                                                 'Promedio' => (float)$resultado[ 'res_promedio' ],
02091                                                 'PromedioPonderado' => (float)$resultado[ 'res_promedio_ponderado' ]
02092                                         )
02093                                 );
02094                         }
02095 
02096                         $consulta->closeCursor(  ); unset( $consulta );
02097 
02098                         // Totalización por dimensiones de los evaluadores
02099                         foreach( $rt->Inventario->Cuestionarios as $i => &$Cue ){
02100                                 foreach( $Cue->Dimensiones as $j => &$Dim ){
02101                                         if( sizeof( $Dim->Jefe->Individuales )!=0 ){
02102                                                 $Dim->Jefe->Totales->Sumatoria =
02103                                                         $Dim->Jefe->Totales->Sumatoria / sizeof( $Dim->Jefe->Individuales );
02104                                                 $Dim->Jefe->Totales->Promedio =
02105                                                         $Dim->Jefe->Totales->Promedio / sizeof( $Dim->Jefe->Individuales );
02106                                                 $Dim->Jefe->Totales->PromedioPonderado =
02107                                                         $Dim->Jefe->Totales->PromedioPonderado / sizeof( $Dim->Jefe->Individuales );
02108                                         }
02109                                         if( sizeof( $Dim->Pares->Individuales )!=0 ){
02110                                                 $Dim->Pares->Totales->Sumatoria =
02111                                                         $Dim->Pares->Totales->Sumatoria / sizeof( $Dim->Pares->Individuales );
02112                                                 $Dim->Pares->Totales->Promedio =
02113                                                         $Dim->Pares->Totales->Promedio / sizeof( $Dim->Pares->Individuales );
02114                                                 $Dim->Pares->Totales->PromedioPonderado =
02115                                                         $Dim->Pares->Totales->PromedioPonderado / sizeof( $Dim->Pares->Individuales );
02116                                         }
02117                                         if( sizeof( $Dim->Colaboradores->Individuales )!=0 ){
02118                                                 $Dim->Colaboradores->Totales->Sumatoria =
02119                                                         $Dim->Colaboradores->Totales->Sumatoria / sizeof( $Dim->Colaboradores->Individuales );
02120                                                 $Dim->Colaboradores->Totales->Promedio =
02121                                                         $Dim->Colaboradores->Totales->Promedio / sizeof( $Dim->Colaboradores->Individuales );
02122                                                 $Dim->Colaboradores->Totales->PromedioPonderado =
02123                                                         $Dim->Colaboradores->Totales->PromedioPonderado / sizeof( $Dim->Colaboradores->Individuales );
02124                                         }
02125                                 }
02126                         }
02127 
02128                         // Asignación de nuevos indices a las dimensiones por pregunta
02129                         foreach( $rt->Inventario->Cuestionarios as $i => &$Cue )
02130                                 foreach( $Cue->Preguntas as $j => &$Pre ){
02131                                         $Pre->Dimensiones = array_values( $Pre->Dimensiones );
02132                                         foreach( $Pre->Dimensiones as $k => &$Dim ){
02133                                                 $Dim->Jefe->Promedio =
02134                                                         ( sizeof( $Dim->Jefe->Individuales) > 0 ) ?
02135                                                                 array_sum( $Dim->Jefe->Individuales ) / sizeof( $Dim->Jefe->Individuales)
02136                                                         :
02137                                                                 0;
02138                                                 $Dim->Pares->Promedio =
02139                                                         ( sizeof( $Dim->Pares->Individuales ) > 0 ) ?
02140                                                                 array_sum( $Dim->Pares->Individuales ) / sizeof( $Dim->Pares->Individuales )
02141                                                         :
02142                                                                 0;
02143                                                 $Dim->Colaboradores->Promedio =
02144                                                         ( sizeof( $Dim->Colaboradores->Individuales) > 0 ) ?
02145                                                                 array_sum( $Dim->Colaboradores->Individuales ) / sizeof( $Dim->Colaboradores->Individuales)
02146                                                         :
02147                                                                 0;
02148                                         }
02149                                 }
02150 
02151                 }
02152 
02153                 // Numero de participantes y evaluadores que respondieron el inventario por cuestionario
02154                 foreach( $rt->Inventario->Cuestionarios as $key => &$Cue ){
02155                         // Participantes
02156                         $consulta = $db->prepare(
02157                                 'SELECT COUNT(*) FROM ( '
02158                                         .'SELECT par_id FROM resultados WHERE cue_id = :cue AND eva_id = :eva AND eval_tipo = 0 GROUP BY par_id '
02159                                 .') tbl'
02160                         );
02161                         $consulta->execute( array( ':cue'=>$Cue->Id, ':eva'=>$this->getId(  ) ) );
02162                         $resultado = $consulta->fetch(  );
02163                         $consulta->closeCursor(  ); unset( $consulta );
02164                         $Cue->RespondidoPor->Otros = $resultado[0] - 1;
02165 
02166                         // Evaluadores
02167                         $consulta = $db->prepare(
02168                                 'SELECT COUNT(*) FROM ( SELECT eval_id FROM resultados WHERE '
02169                                         .' cue_id = :cue AND eva_id = :eva AND par_id = :par AND eval_tipo = :eval_tipo '
02170                                 .'GROUP BY eval_id ) tbl'
02171                         );
02172                         
02173                         if( $Cue->Dependiente ){
02174                                 // Jefe
02175                                 $consulta->execute( array( ':cue'=>$Cue->Dependiente, ':eva'=>$this->getId(  ), ':par'=>$par_id, ':eval_tipo'=>1 ) );
02176                                 $resultado = $consulta->fetch(  );
02177                                 $Cue->RespondidoPor->Jefe = $resultado[0];
02178 
02179                                 // Pares
02180                                 $consulta->execute( array( ':cue'=>$Cue->Dependiente, ':eva'=>$this->getId(  ), ':par'=>$par_id, ':eval_tipo'=>2 ) );
02181                                 $resultado = $consulta->fetch(  );
02182                                 $Cue->RespondidoPor->Pares = $resultado[0];
02183 
02184                                 // Colaboradores
02185                                 $consulta->execute( array( ':cue'=>$Cue->Dependiente, ':eva'=>$this->getId(  ), ':par'=>$par_id, ':eval_tipo'=>3 ) );
02186                                 $resultado = $consulta->fetch(  );
02187                                 $Cue->RespondidoPor->Colaboradores = $resultado[0];
02188 
02189                                 $consulta->closeCursor(  ); unset( $consulta );
02190                         }
02191                 }
02192 
02193                 return $rt;
02194         }
02195 
02196         public function getRespuestasPorParticipante( $par_id = 0, $inv_id = 0 ){
02197 
02198                 if( !$this->getId(  ) ) throw new Exception('Evaluación especificada no existe.');
02199 
02200                 $Inventario = new Inventario(  );
02201                 if( !$Inventario->getInventarioPorId( $inv_id ) )
02202                         throw new Exception('El inventario especificado no existe. Inventario ID ( '.$inv_id.' )');
02203 
02204                 $rt = array(  );
02205 
02206                 $db = Database::getInstance(  );
02207                 $query =
02208                         'SELECT '
02209                                 .'res.par_id, res.pre_id, res.res_valor, res.res_valor_extendido, pre.pre_orden, '
02210                                 .'cue.cue_id, cue.cue_nombre, cue.cue_origen_id '
02211                         .'FROM respuestas res '
02212                         .'JOIN preguntas pre ON ( pre.pre_id = res.pre_id ) '
02213                         .'JOIN cuestionarios cue ON ( cue.cue_id = res.cue_id ) '
02214                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
02215                         .'WHERE '
02216                                 .'res.par_id = :par_id AND res.eva_id = :eva_id AND inv.inv_id = :inv_id AND res.eval_tipo = :eval_tipo '
02217                                 .'AND cue.cue_origen_id = :cue_origen '
02218                         .'ORDER BY cue.cue_id, pre.pre_orden ASC';
02219 
02220                 $consulta = $db->prepare( $query );
02221 
02222                 $consulta->execute( array( 
02223                         ':par_id'=>$par_id, ':eva_id'=>$this->getId(  ), ':inv_id'=>$inv_id, ':eval_tipo'=>0, ':cue_origen'=>0 
02224                 ) );
02225 
02226                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02227                         $cue_count = sizeof( $rt ); $valor = array(  );
02228 
02229                         if( $resultado['res_valor_extendido'] != '' ){
02230                                 foreach( json_decode( $resultado['res_valor_extendido'] ) as $x => $v ) array_push( $valor, $v->Valor );
02231                         }else{ $valor = $resultado['res_valor']; }
02232 
02233                         if( $cue_count == 0 || $rt[$cue_count - 1]->Id != $resultado['cue_id'] ){
02234                                 array_push( $rt, ( object ) array(
02235                                         'Id' => $resultado['cue_id'],
02236                                         'Nombre' => $resultado['cue_nombre'],
02237                                         'Preguntas' => array(
02238                                                 ( object )array(
02239                                                         'Participante' => $valor,
02240                                                         'Coordinadores' => array(  ),
02241                                                         'Pares' => array(  ),
02242                                                         'Colaboradores' => array(  ),
02243                                                 )
02244                                         )
02245                                 ) );
02246                         }else{
02247                                 array_push( $rt[$cue_count-1]->Preguntas, ( object ) array(
02248                                         'Participante' => $valor,
02249                                         'Coordinadores' => array(  ),
02250                                         'Pares' => array(  ),
02251                                         'Colaboradores' => array(  ),                   
02252                                 ) );
02253                         }
02254                 }
02255                 $consulta->closeCursor(  ); unset( $consulta );
02256 
02257                 return $rt;
02258         }
02259 
02260         public function getResultadosDummy( $inv_id ){
02261 
02262                 $Inventario = new Inventario(  );
02263                 if( !$Inventario->getInventarioPorId( $inv_id ) )
02264                         throw new Exception('El inventario especificado no existe. Inventario ID ( '.$inv_id.' )');
02265 
02266                 $Actividad = NULL;
02267                 if( $this->getId(  ) ){
02268                         $Actividad = $this->getActividad(  );
02269                         $Actividad = ( object ) array(
02270                                 'Id' => $Actividad->getId(  ),
02271                                 'Nombre' => $Actividad->getNombre(  ),
02272                                 'FechaInicio' => $Actividad->getFechaInicio(  ),
02273                                 'FechaFin' => $Actividad->getFechaFin(  ),
02274                                 'Tipo' => $Actividad->getTipo(  )->Nombre,
02275                                 'Profesor' => $Actividad->getProfesor(  )->Nombre,
02276                                 'Localidad' => $Actividad->getLocalidad(  )->Nombre,
02277                                 'Materia' => $Actividad->getMateria(  )->Nombre,
02278                         );
02279                 }else
02280                         $Actividad = ( object ) array(
02281                                 'Id' => 0,
02282                                 'Nombre' => 'Desconocida',
02283                                 'FechaInicio' => '01/01/1999',
02284                                 'FechaFin' => '01/01/1999',
02285                                 'Tipo' => 'Desconocido',
02286                                 'Profesor' => 'Desconocido',
02287                                 'Localidad' => 'Desconocida',
02288                                 'Materia' => 'Desconocida',
02289                         );
02290 
02291                 $rt = ( object ) array(
02292                         'Participante' => ( object ) array(
02293                                 'Id' => 0,
02294                                 'Nombre' => 'Participante, Prueba',
02295                                 'Correo' => 'participante.prueba@dominio.com',
02296                                 'Cedula' => 'X-00000000',
02297                                 'Evaluadores' => (object)array(
02298                                         'Jefe' => array(
02299                                                 (object)array(
02300                                                         'Id' => 0,
02301                                                         'Nombre' => 'Jefe, Prueba',
02302                                                         'Correo' => 'jefe.prueba@dominio.com'
02303                                                 )
02304                                         ),
02305                                         'Pares' => array(
02306                                                 (object)array(
02307                                                         'Id' => 0,
02308                                                         'Nombre' => 'Par1, Prueba',
02309                                                         'Correo' => 'par1.prueba@dominio.com'
02310                                                 ),
02311                                                 (object)array(
02312                                                         'Id' => 0,
02313                                                         'Nombre' => 'Par2, Prueba',
02314                                                         'Correo' => 'par2.prueba@dominio.com'
02315                                                 ),
02316                                                 (object)array(
02317                                                         'Id' => 0,
02318                                                         'Nombre' => 'Par3, Prueba',
02319                                                         'Correo' => 'par3.prueba@dominio.com'
02320                                                 )
02321                                         ),
02322                                         'Colaboradores' => array(
02323                                                 (object)array(
02324                                                         'Id' => 0,
02325                                                         'Nombre' => 'Colaborador1, Prueba',
02326                                                         'Correo' => 'colaborador1.prueba@dominio.com'
02327                                                 ),
02328                                                 (object)array(
02329                                                         'Id' => 0,
02330                                                         'Nombre' => 'Colaborador2, Prueba',
02331                                                         'Correo' => 'colaborador2.prueba@dominio.com'
02332                                                 ),
02333                                                 (object)array(
02334                                                         'Id' => 0,
02335                                                         'Nombre' => 'Colaborador3, Prueba',
02336                                                         'Correo' => 'colaborador3.prueba@dominio.com'
02337                                                 )
02338                                         )
02339                                 )
02340                         ),
02341                         'Actividad' => $Actividad,
02342                         'Inventario' => ( object ) array(
02343                                 'Id' => $inv_id,
02344                                 'Nombre' => $Inventario->getNombre(  ),
02345                                 'Descripcion' => $Inventario->getDescripcion(  ),
02346                                 'Tipo' => $Inventario->getTipo(  ),
02347                                 'Introduccion'=>$Inventario->getReporteIntroduccion(  ),
02348                                 'Cuestionarios' => array(  )
02349                         )
02350                 );
02351 
02352                 $db = Database::getInstance(  );
02353 
02354                 $cue_match = array(  );
02355 
02356                 // Lista de cuestionarios
02357                 $query =
02358                         'SELECT '
02359                                 .'cue.cue_id, cue.cue_tipo, cue.cue_nombre, cue.cue_origen_id, cue.cue_gra_rangos, '
02360                                 .'cue.cue_gra_tipo, cue_gra_estadistico, cue.cue_gra_analisis, '
02361                                 .'pre.pre_id, pre.pre_orden, pre.pre_tipo, pre.pre_enunciado, pre.pre_enunciado_b '
02362                         .'FROM cuestionarios cue '
02363                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
02364                         .'JOIN preguntas pre ON ( pre.pre_cue_id = cue.cue_id ) '
02365                         .'WHERE inv.inv_id = :inv_id AND cue.cue_tipo = 0 '
02366                         .'ORDER by cue.cue_id, pre.pre_orden';
02367                 $consulta = $db->prepare( $query );
02368                 $consulta->execute( array( ':inv_id'=>$inv_id ) );
02369                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02370                         $cue_count = sizeof( $rt->Inventario->Cuestionarios );
02371                         if( $cue_count == 0 || $rt->Inventario->Cuestionarios[$cue_count - 1]->Id != $resultado['cue_id'] ){
02372                                 $cue_match[ $resultado['cue_id'] ] = (object)array( 'Index'=>$cue_count, 'Dimensiones'=>array(  ) );
02373                                 array_push($rt->Inventario->Cuestionarios, ( object ) array(
02374                                         'Id' => $resultado['cue_id'],
02375                                         'Nombre' => $resultado['cue_nombre'],
02376                                         'Grafico' => ( object ) array(
02377                                                 'Tipo' => $resultado['cue_gra_tipo'],
02378                                                 'Estadistico' => $resultado['cue_gra_estadistico'],
02379                                                 'Grupos' => ( object ) array(
02380                                                         'Dimensiones' =>
02381                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_DIMENSIONES ? true: false,
02382                                                         'SubDimensiones' =>
02383                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_SUBDIMENSIONES ? true: false,
02384                                                         'PreguntasDimensiones' => 
02385                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_PREGUNTAS_DIMENSIONES ? true: false,
02386                                                         'PreguntasSubDimensiones' =>
02387                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_PREGUNTAS_SUBDIMENSIONES ? true: false
02388                                                 ),
02389                                                 'Rangos'=> json_decode( $resultado['cue_gra_rangos'] ),
02390                                                 'PromedioGrupal' => ( object ) array(
02391                                                         'Dimensiones' =>
02392                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_DIM_PROMEDIO_GRUPAL ? true : false,
02393                                                         'SubDimensiones' =>
02394                                                                 $resultado['cue_gra_analisis'] & Cuestionario::GRAFICO_ANALISIS_SUBDIM_PROMEDIO_GRUPAL ? true: false,
02395                                                 )
02396                                         ),
02397                                         'Dimensiones' => array(  ),
02398                                         'RespondidoPor' => (object)array(
02399                                                 'Jefe' => 1,
02400                                                 'Pares' => 3,
02401                                                 'Colaboradores' => 3,
02402                                                 'Otros' => 100
02403                                         ),
02404                                         'Preguntas' => array(
02405                                                 (object)array(
02406                                                         'Tipo'=>$resultado['pre_tipo'],
02407                                                         'Enunciado'=>$resultado['pre_enunciado'],
02408                                                         'EnunciadoB'=>$resultado['pre_enunciado_b'],
02409                                                         'Dimensiones'=>array(  )
02410                                                 )
02411                                         )
02412                                 ) );
02413                         }else{
02414                                 array_push($rt->Inventario->Cuestionarios[$cue_count - 1]->Preguntas, ( object ) array(
02415                                         'Tipo'=>$resultado['pre_tipo'],
02416                                         'Enunciado'=>$resultado['pre_enunciado'],
02417                                         'EnunciadoB'=>$resultado['pre_enunciado_b'],
02418                                         'Dimensiones'=>array(  )
02419                                 ) );
02420                         }
02421                 }
02422                 $consulta->closeCursor(  ); unset( $consulta );
02423 
02424                 // Lista de dimensones por cuestionario
02425                 $query =
02426                         'SELECT '
02427                                 .'cue.cue_id, dim.dim_id, dim.dim_connotacion_negativa, dim.dim_nombre, dimp.dim_nombre as dim_nombre_padre, '
02428                                 .'dim.dim_rangos '
02429                         .'FROM dimensiones dim '
02430                         .'LEFT OUTER JOIN dimensiones dimp ON ( dimp.dim_id = dim.dim_padre_id ) '
02431                         .'JOIN cuestionarios cue ON ( cue.cue_id = dim.dim_cue_id ) '
02432                         .'WHERE cue.cue_id = :cue_id '
02433                         .'ORDER by cue.cue_id, dim.dim_id';
02434                 $consulta = $db->prepare( $query );
02435                 foreach( $rt->Inventario->Cuestionarios as $key => &$Cue ){
02436                         $consulta->execute( array( ':cue_id'=>$Cue->Id ) );
02437                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02438                                 $dim_count = sizeof( $Cue->Dimensiones );
02439                                 $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] = $dim_count;
02440                                 array_push( $Cue->Dimensiones, (object)array(
02441                                         'Id' => $resultado['dim_id'],
02442                                         'Nombre' => $resultado['dim_nombre'],
02443                                         'Padre' => $resultado['dim_nombre_padre'],
02444                                         'Rangos' => $resultado[ 'dim_rangos' ] ? json_decode( $resultado[ 'dim_rangos' ] ): array(  ),
02445                                         'ConnotacionNegativa' => $resultado['dim_connotacion_negativa'] == 0 ? false : true,
02446                                         'Ocurrencias' => 0,
02447                                         'Ponderacion' => 0,
02448                                         'ValoresPosibles' => (object)array(
02449                                                 'PorPregunta' => (object)array(
02450                                                         'Minimo'=> NULL,
02451                                                         'Maximo'=> NULL
02452                                                 ),
02453                                                 'Sumatoria' => (object)array(
02454                                                         'Minimo'=> 0,
02455                                                         'Maximo'=> 0
02456                                                 ),
02457                                                 'Promedio' => (object)array(
02458                                                         'Minimo'=> 0,
02459                                                         'Maximo'=> 0
02460                                                 ),
02461                                                 'PromedioPonderado' => (object)array(
02462                                                         'Minimo'=> 0,
02463                                                         'Maximo'=> 0
02464                                                 )
02465                                         ),
02466                                         'Participante' => (object)array(
02467                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02468                                         ),
02469                                         'Jefe'=>(object)array(
02470                                                 'Individuales'=>array(
02471                                                         (object)array(
02472                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02473                                                         )
02474                                                 ), 
02475                                                 'Totales'=>(object)array(
02476                                                         'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02477                                                 ) 
02478                                         ),
02479                                         'Pares'=>(object)array( 
02480                                                 'Individuales'=>array(
02481                                                         (object)array(
02482                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02483                                                         ),
02484                                                         (object)array(
02485                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02486                                                         ),
02487                                                         (object)array(
02488                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02489                                                         )
02490                                                 ), 
02491                                                 'Totales'=>(object)array(
02492                                                         'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02493                                                 ) 
02494                                         ),
02495                                         'Colaboradores'=>(object)array(
02496                                                 'Individuales'=>array(
02497                                                         (object)array(
02498                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02499                                                         ),
02500                                                         (object)array(
02501                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02502                                                         ),
02503                                                         (object)array(
02504                                                                 'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02505                                                         )
02506                                                 ), 
02507                                                 'Totales'=>(object)array(
02508                                                         'Sumatoria' => rand( 0,100 ), 'Promedio'=>rand( 0,50 ), 'PromedioPonderado'=>rand( 0,50 )
02509                                                 ) 
02510                                         )
02511                                 ) );
02512                         }
02513                 }
02514                 $consulta->closeCursor(  ); unset( $consulta );
02515 
02516                 // Respuestas a las preguntas por Cuestionario
02517                 $query = 
02518                         'SELECT '
02519                         .'cue.cue_id, pre.pre_tipo, pre.pre_orden, '
02520                                 .'dim.dim_id, dim.dim_nombre, pdim.dim_nombre as dim_nombre_padre, '
02521                                 .'( SELECT COUNT(*) FROM alternativas alt_c WHERE alt_c.alt_pre_id = pre.pre_id ) as num_alt '
02522                         .'FROM preguntas pre '
02523                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
02524                         .'JOIN alternativas alt ON ( alt.alt_pre_id = pre.pre_id ) '
02525                         .'LEFT OUTER JOIN dimensiones dim ON ( dim.dim_id = alt.alt_dim_id ) '
02526                         .'LEFT OUTER JOIN dimensiones pdim ON ( pdim.dim_id = dim.dim_padre_id ) '
02527                         .'WHERE cue.cue_id = :cue_id '
02528                         .'ORDER BY cue.cue_id, pre_orden ASC';
02529                 $consulta = $db->prepare( $query );
02530                 foreach( $rt->Inventario->Cuestionarios as $i => &$Cue ){
02531                         $consulta->execute( array( ':cue_id'=>$Cue->Id ) );
02532                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02533                                 $Jefe = rand( 1, $resultado['num_alt'] );
02534                                 array_push(
02535                                         $Cue->Preguntas[ $resultado['pre_orden'] -1 ]->Dimensiones,
02536                                         (object)array(
02537                                                 'Nombre' => $resultado['dim_nombre'],
02538                                                 'Padre' => $resultado['dim_nombre_padre'],
02539                                                 'Participante' => rand( 1, $resultado['num_alt'] ),
02540                                                 'Jefe' => (object)array(
02541                                                         'Promedio' => $Jefe,
02542                                                         'Individuales' => array( $Jefe )
02543                                                 ),
02544                                                 'Pares' => (object)array(
02545                                                         'Promedio' => rand( 1, $resultado['num_alt'] ),
02546                                                         'Individuales' => array(
02547                                                                 rand( 1, $resultado['num_alt'] ), rand( 1, $resultado['num_alt'] ), rand( 1, $resultado['num_alt'] )
02548                                                         )
02549                                                 ),
02550                                                 'Colaboradores' => (object)array(
02551                                                         'Promedio' => rand( 1, $resultado['num_alt'] ),
02552                                                         'Individuales' => array(
02553                                                                 rand( 1, $resultado['num_alt'] ), rand( 1, $resultado['num_alt'] ), rand( 1, $resultado['num_alt'] )
02554                                                         )
02555                                                 )
02556                                         )
02557                                 );
02558                         }
02559                 }
02560 
02561                 // maximos y minimos por dimensiones
02562                 $query =
02563                         'SELECT '
02564                                 .'cue.cue_id, pre.pre_id, pre.pre_tipo, pre.pre_orden, pre.pre_dimension_a, pre.pre_dimension_b, '
02565                                 .'pre.pre_pp_peso, dim.dim_id, alt.alt_valor '
02566                         .'FROM preguntas pre '
02567                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
02568                         .'JOIN alternativas alt ON ( alt.alt_pre_id = pre.pre_id ) '
02569                         .'LEFT OUTER JOIN dimensiones dim ON ( dim.dim_id = alt.alt_dim_id ) '
02570                         .'WHERE cue.cue_id = :cue_id ORDER BY cue.cue_id, pre_orden ASC';
02571                 $consulta = $db->prepare( $query );
02572                 foreach($rt->Inventario->Cuestionarios as $key => &$Cue ){
02573                         $consulta->execute( array( ':cue_id' => $Cue->Id ) );
02574                         $pre_id_curr = 0;
02575                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
02576                                 if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_PARES ){
02577                                         $DimensionA = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]
02578                                                 ->Dimensiones[ $resultado['pre_dimension_a'] ] ];
02579                                         $DimensionB = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]
02580                                                 ->Dimensiones[ $resultado['pre_dimension_b'] ] ];
02581 
02582                                         // Asigna valor Minimo por pregunta
02583                                         if(
02584                                                 $DimensionA->ValoresPosibles->PorPregunta->Minimo == NULL 
02585                                                 || $DimensionA->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
02586                                         )
02587                                                 $DimensionA->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
02588                                         if(
02589                                                 $DimensionB->ValoresPosibles->PorPregunta->Minimo == NULL 
02590                                                 || $DimensionB->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
02591                                         )
02592                                                 $DimensionB->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
02593 
02594                                         // Asigna valor Maximo por pregunta
02595                                         if(
02596                                                 $DimensionA->ValoresPosibles->PorPregunta->Maximo == NULL 
02597                                                 || $DimensionA->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
02598                                         )
02599                                                 $DimensionA->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
02600                                         if(
02601                                                 $DimensionB->ValoresPosibles->PorPregunta->Maximo == NULL 
02602                                                 || $DimensionB->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
02603                                         )
02604                                                 $DimensionB->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
02605 
02606                                         $DimensionA->Ocurrencias++; $DimensionB->Ocurrencias++;
02607 
02608                                         $DimensionA->Ponderacion += (float)$resultado['pre_pp_peso'];
02609                                         $DimensionB->Ponderacion += (float)$resultado['pre_pp_peso'];
02610 
02611                                 }else{
02612                                         $Dimension = &$Cue->Dimensiones[ $cue_match[ $resultado['cue_id'] ]->Dimensiones[ $resultado['dim_id'] ] ];
02613                                         if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_MULTIDIMENSIONAL ){
02614                                                 // Asigna valor Minimo por pregunta
02615                                                 if($Dimension->ValoresPosibles->PorPregunta->Minimo == NULL)
02616                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo = 1;
02617                                                 // Asigna valor Maximo por pregunta
02618                                                 if(
02619                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo == NULL 
02620                                                 || $Dimension->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
02621                                         )
02622                                                         $Dimension->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
02623                                                 $Dimension->Ocurrencias++;
02624                                                 $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
02625                                         }else{
02626                                                 // Asigna valor Minimo por pregunta
02627                                                 if(
02628                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo == NULL 
02629                                                 || $Dimension->ValoresPosibles->PorPregunta->Minimo > $resultado['alt_valor']
02630                                         )
02631                                                 $Dimension->ValoresPosibles->PorPregunta->Minimo = $resultado['alt_valor'];
02632                                                 // Asigna valor Maximo por pregunta
02633                                                 if(
02634                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo == NULL 
02635                                                 || $Dimension->ValoresPosibles->PorPregunta->Maximo < $resultado['alt_valor']
02636                                         )
02637                                                 $Dimension->ValoresPosibles->PorPregunta->Maximo = $resultado['alt_valor'];
02638 
02639                                                 if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_BIDIMENSIONAL ){
02640                                                         $Dimension->Ocurrencias++;
02641                                                         $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
02642                                                 }
02643                                         }
02644                                 }
02645                                 if( $pre_id_curr != $resultado['pre_id'] ){
02646                                         $pre_id_curr = $resultado['pre_id'];
02647                                         if( $resultado['pre_tipo'] == Cuestionario::PREGUNTA_TIPO_UNIDIMENSIONAL ){
02648                                                 $Dimension->Ocurrencias++;
02649                                                 $Dimension->Ponderacion+= $resultado['pre_pp_peso'];
02650                                         }
02651                                 }
02652                         }
02653                         foreach($Cue->Dimensiones as $i => &$Dim ){
02654                                 $Valores = &$Dim->ValoresPosibles;
02655 
02656                                 if( $Valores->PorPregunta->Minimo == NULL ) $Valores->PorPregunta->Minimo = 0;
02657                                 if( $Valores->PorPregunta->Maximo == NULL ) $Valores->PorPregunta->Maximo = 0;
02658 
02659                                 $Valores->Sumatoria->Minimo = $Valores->PorPregunta->Minimo * $Dim->Ocurrencias;
02660                                 $Valores->Sumatoria->Maximo = $Valores->PorPregunta->Maximo * $Dim->Ocurrencias;
02661 
02662                                 $Valores->Promedio->Minimo = $Dim->Ocurrencias > 0 ? $Valores->Sumatoria->Minimo / $Dim->Ocurrencias : 0;
02663                                 $Valores->Promedio->Maximo = $Dim->Ocurrencias > 0 ? $Valores->Sumatoria->Maximo / $Dim->Ocurrencias : 0;
02664                                 
02665                                 $Valores->PromedioPonderado->Minimo = $Dim->Ponderacion > 0 ? $Valores->Sumatoria->Minimo / $Dim->Ponderacion : 0;
02666                                 $Valores->PromedioPonderado->Maximo = $Dim->Ponderacion > 0 ? $Valores->Sumatoria->Maximo / $Dim->Ponderacion : 0;
02667 
02668                                 foreach( $Dim->Rangos as $j => $Rango ){
02669 
02670                                         if(
02671                                                 ( $Valores->Sumatoria->Minimo == $Rango->Minimo || $Valores->Sumatoria->Minimo > $Rango->Minimo )
02672                                                 &&
02673                                                 ( $Valores->Sumatoria->Minimo == $Rango->Maximo || $Valores->Sumatoria->Minimo < $Rango->Maximo )
02674                                         )
02675                                                 $Valores->Sumatoria->Minimo = $Rango->Valor;
02676                                         if(
02677                                                 ( $Valores->Sumatoria->Maximo == $Rango->Minimo || $Valores->Sumatoria->Maximo > $Rango->Minimo )
02678                                                 &&
02679                                                 ( $Valores->Sumatoria->Maximo == $Rango->Maximo || $Valores->Sumatoria->Maximo < $Rango->Maximo )
02680                                         )
02681                                                 $Valores->Sumatoria->Maximo = $Rango->Valor;
02682 
02683                                         if(
02684                                                 ( $Valores->Promedio->Minimo == $Rango->Minimo || $Valores->Promedio->Minimo > $Rango->Minimo )
02685                                                 &&
02686                                                 ( $Valores->Promedio->Minimo == $Rango->Maximo || $Valores->Promedio->Minimo < $Rango->Maximo )
02687                                         )
02688                                                 $Valores->Promedio->Minimo = $Rango->Valor;
02689                                         if(
02690                                                 ( $Valores->Promedio->Maximo == $Rango->Minimo || $Valores->Promedio->Maximo > $Rango->Minimo )
02691                                                 &&
02692                                                 ( $Valores->Promedio->Maximo == $Rango->Maximo || $Valores->Promedio->Maximo < $Rango->Maximo )
02693                                         )
02694                                                 $Valores->Promedio->Maximo = $Rango->Valor;
02695 
02696                                         if(
02697                                                 ($Valores->PromedioPonderado->Minimo==$Rango->Minimo || $Valores->PromedioPonderado->Minimo>$Rango->Minimo)
02698                                                 &&
02699                                                 ($Valores->PromedioPonderado->Minimo==$Rango->Maximo || $Valores->PromedioPonderado->Minimo<$Rango->Maximo)
02700                                         )
02701                                                 $Valores->PromedioPonderado->Minimo = $Rango->Valor;
02702                                         if(
02703                                                 ($Valores->PromedioPonderado->Maximo==$Rango->Minimo || $Valores->PromedioPonderado->Maximo>$Rango->Minimo)
02704                                                 &&
02705                                                 ($Valores->PromedioPonderado->Maximo==$Rango->Maximo || $Valores->PromedioPonderado->Maximo<$Rango->Maximo)
02706                                         )
02707                                                 $Valores->PromedioPonderado->Maximo = $Rango->Valor;
02708 
02709                                 }
02710                                 
02711                         }
02712                 }
02713                 $consulta->closeCursor(  ); unset( $consulta );
02714 
02715                 return $rt;
02716 
02717         }
02718 
02719 }