IESA
Programa de Feedback Gerencial y Liderazgo
 Todo Estructuras de Datos Archivos Funciones Variables
Cuestionario.class.php
Ir a la documentación de este archivo.
00001 <?php
00002 
00003 class Cuestionario{
00004 
00005         protected $cue_id;
00006         protected $cue_nombre;
00007         protected $cue_inv_id;
00008         protected $cue_tipo;
00009         protected $cue_instrucciones;
00010 
00011         protected $cue_origen_id = 0;
00012 
00013         protected $cue_gra_tipo;
00014         protected $cue_gra_estadistico;
00015         protected $cue_gra_analisis;
00016         
00017         protected $cue_gra_rangos;
00018 
00019         private $cue_dimensiones;
00020         private $cue_preguntas;
00021 
00022         const TIPO_AUTO_EVALUACION = 0;
00023         const TIPO_OTROS_EVALUACION = 1;
00024         const TIPO_DEMOGRAFICO = 2;
00025 
00026         const PREGUNTA_TIPO_UNIDIMENSIONAL = 0;
00027         const PREGUNTA_TIPO_BIDIMENSIONAL = 1;
00028         const PREGUNTA_TIPO_MULTIDIMENSIONAL = 2;
00029         const PREGUNTA_TIPO_PARES = 3;
00030 
00031         const PREGUNTA_DEMOGRAFICO_TIPO_CARACTER = 0;
00032         const PREGUNTA_DEMOGRAFICO_TIPO_NUMERICO = 1;
00033         const PREGUNTA_DEMOGRAFICO_TIPO_FECHA = 2;
00034         const PREGUNTA_DEMOGRAFICO_TIPO_SELECCION_SIMPLE = 3;
00035         const PREGUNTA_DEMOGRAFICO_TIPO_SELECCION_MULTIPLE = 4;
00036         const PREGUNTA_DEMOGRAFICO_TIPO_LISTA_DESPLEGABLE = 5;
00037 
00038         const GRAFICO_ESTADISTICO_SUMATORIA = 0;
00039         const GRAFICO_ESTADISTICO_PROMEDIO = 1;
00040         const GRAFICO_ESTADISTICO_PROMEDIO_PONDERADO = 2;
00041 
00042         const GRAFICO_ANALISIS_DIMENSIONES = 1;
00043         const GRAFICO_ANALISIS_SUBDIMENSIONES = 2;
00044         const GRAFICO_ANALISIS_PREGUNTAS_DIMENSIONES = 4;
00045         const GRAFICO_ANALISIS_PREGUNTAS_SUBDIMENSIONES = 8;
00046         const GRAFICO_ANALISIS_DIM_PROMEDIO_GRUPAL = 16;
00047         const GRAFICO_ANALISIS_SUBDIM_PROMEDIO_GRUPAL = 32;
00048 
00049         public function __construct(  ){  }
00050 
00056         private function limpiar(  ){
00057                 foreach( get_object_vars($this) as $name => $value )
00058                         switch( $name ){
00059                                 case 'cue_origen_id': $this->{$name} = 0; break;
00060                                 default: $this->{$name} = NULL; break;
00061                         }
00062         }
00063 
00075         public function getCuestionario( $data ){
00076 
00077                 $this->limpiar(  );
00078 
00079                 $db = Database::getInstance(  );
00080 
00081                 $query = 
00082                         'SELECT '
00083                         .'cue_id, cue_nombre, cue_inv_id, cue_tipo, cue_instrucciones, cue_origen_id, cue_gra_rangos, '
00084                         .'cue_gra_tipo, cue_gra_estadistico, cue_gra_analisis '
00085                         .'FROM cuestionarios WHERE '.$data['where'];
00086 
00087                 $consulta = $db->prepare( $query );
00088                 $consulta->execute( $data['data'] );
00089 
00090                 $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
00091                 unset( $consulta );
00092 
00093                 if( !$resultado ) return false;
00094 
00095                 foreach( $resultado as $name => $value ) $this->{$name} = $value;
00096 
00097                 return true;
00098         }
00099 
00112         public function getCuestionarioPorId( $id ){
00113 
00114                 return $this->getCuestionario( array(
00115                         'where'=>'cue_id = :id',
00116                         'data'=>array( ':id' => $id )
00117                 ));
00118 
00119         }
00120 
00135         public function eliminar(  ){
00136 
00137                 if( !$this->getId(  ) ) return 0;
00138 
00139                 $db = Database::getInstance();
00140                 $db->exec( 'DELETE FROM preguntas WHERE pre_cue_id = '.$this->getId(  ) );
00141                 $rt = $db->exec( 'DELETE FROM cuestionarios WHERE cue_id = '.$this->getId(  ).' OR cue_origen_id = '.$this->getId(  ) );
00142 
00143                 $this->limpiar(  );
00144                 return $rt ? $rt : 0;
00145         }
00146 
00156         public function guardar(  ){
00157                 $data = array(
00158                         ':cue_nombre'=>$this->cue_nombre,
00159                         ':cue_inv_id'=>$this->cue_inv_id,
00160                         ':cue_tipo'=>$this->cue_tipo,
00161                         ':cue_instrucciones'=>$this->cue_instrucciones,
00162                         ':cue_origen_id'=>$this->cue_origen_id,
00163                         ':cue_gra_tipo'=>$this->cue_gra_tipo,
00164                         ':cue_gra_estadistico'=>$this->cue_gra_estadistico,
00165                         ':cue_gra_analisis'=>$this->cue_gra_analisis,
00166                         ':cue_gra_rangos'=> $this->cue_gra_rangos
00167                 );
00168 
00169                 if( !$this->getId(  ) )
00170                         $query = 
00171                                 'INSERT INTO cuestionarios ( '
00172                                         .'cue_nombre, cue_inv_id, cue_tipo, cue_instrucciones, cue_origen_id, cue_gra_rangos, '
00173                                         .'cue_gra_tipo, cue_gra_estadistico, cue_gra_analisis '
00174                                 .')VALUES( '
00175                                         .':cue_nombre, :cue_inv_id, :cue_tipo, :cue_instrucciones, :cue_origen_id, :cue_gra_rangos,'
00176                                         .':cue_gra_tipo, :cue_gra_estadistico, :cue_gra_analisis'
00177                                 .')';
00178                 else{
00179                         $data[':cue_id']=$this->cue_id;
00180                         $query = 
00181                                 'UPDATE cuestionarios SET '
00182                                         .'cue_nombre=:cue_nombre, cue_inv_id=:cue_inv_id, cue_tipo=:cue_tipo, cue_instrucciones=:cue_instrucciones, '
00183                                         .'cue_origen_id=:cue_origen_id, cue_gra_rangos=:cue_gra_rangos, '
00184                                         .'cue_gra_tipo=:cue_gra_tipo, cue_gra_estadistico=:cue_gra_estadistico, cue_gra_analisis=:cue_gra_analisis '
00185                                 .'WHERE cue_id = :cue_id';
00186                 }
00187 
00188                 $db = Database::getInstance(  );
00189                 $consulta = $db->prepare( $query );
00190                 $consulta->execute( $data );
00191                 $consulta->closeCursor(  ); unset( $consulta );
00192 
00193                 if( !$this->getId(  ) ){
00194                         $preg = $this->cue_preguntas;
00195                         $dim = $this->cue_dimensiones;
00196 
00197                         $this->getCuestionarioPorId( Database::lastInsertId( 'cuestionarios_seq' ) );
00198 
00199                         $this->guardarDimensiones( $dim );
00200                         $this->guardarPreguntas( $preg );
00201                 }
00202 
00203         }
00204 
00218         private function guardarDimensiones( $val ){
00219 
00220                 if( $this->getCuestionarioOrigen(  ) != 0 ) return ;
00221 
00222                 if( !is_array( $val ) || sizeof( $val ) == 0 )
00223                         return ;
00224 
00225                 $db = Database::getInstance(  );
00226 
00227                 $query = 
00228                         'INSERT INTO dimensiones ( dim_padre_id, dim_cue_id, dim_nombre, dim_rangos, dim_connotacion_negativa )'
00229                         .'values( :dim_padre_id, :dim_cue_id, :dim_nombre, :dim_rangos, :dim_connotacion_negativa )';
00230                         
00231                 $consulta = $db->prepare( $query );
00232                 foreach( $val as $key => $dim ){
00233                         if( !is_object( $dim ) ) $dim = (object)$dim;
00234 
00235                         $consulta->execute( array(
00236                                 ':dim_padre_id' => 0,
00237                                 ':dim_cue_id'=> $this->getId(  ),
00238                                 ':dim_nombre'=> $dim->Nombre,
00239                                 ':dim_connotacion_negativa'=> $dim->ConnotacionNegativa,
00240                                 ':dim_rangos'=> isset( $dim->Rangos ) && is_array( $dim->Rangos ) ? json_encode( $dim->Rangos ) : ''
00241                         ) );
00242                         $padre_id = Database::lastInsertId( 'dimensiones_seq' );
00243                         $childs = array(  );
00244                         
00245                         if( isset( $dim->Dimensiones ) )
00246                                 $childs = $dim->Dimensiones;
00247 
00248                         if( is_array( $childs ) )
00249                                 foreach( $childs as $key => $subdim ){
00250                                         if( !is_object( $subdim ) ) $subdim = (object)$subdim;
00251                                         $consulta->execute( array(
00252                                                 ':dim_padre_id' => $padre_id,
00253                                                 ':dim_cue_id'=> $this->getId(  ),
00254                                                 ':dim_nombre'=> $subdim->Nombre,
00255                                                 ':dim_connotacion_negativa'=> $subdim->ConnotacionNegativa,
00256                                                 ':dim_rangos'=> is_array( $subdim->Rangos ) ? json_encode( $subdim->Rangos ) : ''
00257                                         ) );
00258                                 }
00259 
00260                 }
00261                 $consulta->closeCursor(  ); unset( $consulta );
00262 
00263         }
00264 
00265         public function editDimensiones( $val ){
00266 
00267                 if( !$this->getId(  ) || !is_array( $val ) ) return ;
00268 
00269                 $db = Database::getInstance(  );
00270 
00271                 $consulta = $db->prepare(
00272                         'UPDATE dimensiones SET '
00273                                 .'dim_nombre = :dim_nombre, dim_connotacion_negativa = :dim_connotacion, dim_rangos = :dim_rangos '
00274                         .'WHERE dim_id=:dim_id'
00275                 );
00276                 foreach( $val as $key => $dim ){
00277                         if( !is_object( $dim ) )$dim = ( object ) $dim;
00278                         $consulta->execute( array(
00279                                 ':dim_id'=> $dim->Id,
00280                                 ':dim_nombre'=> $dim->Nombre,
00281                                 ':dim_connotacion'=> $dim->ConnotacionNegativa,
00282                                 ':dim_rangos' => is_array( $dim->Rangos ) ? json_encode( $dim->Rangos ) : ''
00283                         ) );
00284                 }
00285                 $consulta->closeCursor(  ); unset( $consulta );
00286 
00287         }
00288 
00305         private function guardarPreguntas( $val ){
00306 
00307                 if( !is_array( $val ) || sizeof( $val ) == 0 )
00308                         return ;
00309 
00310                 $db = Database::getInstance(  );
00311 
00312                 $consulta = $db->prepare('SELECT * FROM dimensiones WHERE dim_cue_id = :cue_id ORDER BY dim_id ASC ');
00313                 $consulta->execute( array( 
00314                         ':cue_id' => ( $this->getCuestionarioOrigen(  ) == 0 ? $this->getId(  ) : $this->getCuestionarioOrigen(  ) )
00315                 ) );
00316 
00317                 $dimensiones = $consulta->fetchAll(  );
00318                 $consulta->closeCursor(  );
00319                 unset( $consulta );
00320 
00321                 $alternativas = array(  );
00322 
00323                 if( Database::driver(  ) == 'oci' )
00324                         $query = 
00325                                 'INSERT INTO preguntas ( '
00326                                         .'pre_enunciado, pre_enunciado_b, pre_cue_id, pre_orden, pre_tipo, '
00327                                         .'pre_dimension_a, pre_dimension_b, '
00328                                         .'pre_pp_peso'
00329                                 .')values( '
00330                                         .':pre_enunciado, :pre_enunciado_b, :pre_cue_id, :pre_orden, :pre_tipo, '
00331                                         .':pre_dimension_a, :pre_dimension_b, '
00332                                         ."to_number(:pre_pp_peso, '999999.999999') "
00333                                 .')';
00334                 else
00335                         $query = 
00336                                 'INSERT INTO preguntas ( '
00337                                         .'pre_enunciado, pre_enunciado_b, pre_cue_id, pre_orden, pre_tipo, '
00338                                         .'pre_dimension_a, pre_dimension_b, '
00339                                         .'pre_pp_peso'
00340                                 .')values( '
00341                                         .':pre_enunciado, :pre_enunciado_b, :pre_cue_id, :pre_orden, :pre_tipo, '
00342                                         .':pre_dimension_a, :pre_dimension_b, '
00343                                         .':pre_pp_peso '
00344                                 .')';
00345 
00346                 $consulta = $db->prepare( $query );
00347 
00348                 foreach( $val as $key => $pre ){
00349                         if( is_array( $pre ) ) $pre = ( object ) $pre;
00350 
00351                         if( $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ){
00352                                 $nReg = array(
00353                                         ':pre_enunciado' => $pre->Enunciado,
00354                                         ':pre_enunciado_b' => '',
00355                                         ':pre_cue_id'=> $this->getId(  ),
00356                                         ':pre_orden'=> trim( $pre->Orden ),
00357                                         ':pre_tipo'=> trim( $pre->Tipo ),
00358                                         ':pre_pp_peso'=> '1.0',
00359                                         ':pre_dimension_a' => 0,
00360                                         ':pre_dimension_b' => 0
00361                                 );
00362                         }else{
00363                                 $nReg = array(
00364                                         ':pre_enunciado' => $pre->Enunciado,
00365                                         ':pre_enunciado_b' => $pre->EnunciadoB,
00366                                         ':pre_cue_id'=> $this->getId(  ),
00367                                         ':pre_orden'=> trim( $pre->Orden ),
00368                                         ':pre_tipo'=> trim( $pre->Tipo ),
00369                                         ':pre_pp_peso'=> trim( isset( $pre->PromedioPonderadoPeso ) ? $pre->PromedioPonderadoPeso : '1.0' ),
00370                                         ':pre_dimension_a' => ( $pre->Tipo != 3 || is_null( $dimensiones[ $pre->DimensionA ][ 'dim_id' ] ) ) ? 
00371                                                         0 
00372                                                 : 
00373                                                         $dimensiones[ $pre->DimensionA ][ 'dim_id' ],
00374                                         ':pre_dimension_b' => ( $pre->Tipo != 3 || is_null( $dimensiones[ $pre->DimensionB ] ) ) ? 
00375                                                         0 
00376                                                 : 
00377                                                         $dimensiones[ $pre->DimensionB ][ 'dim_id' ]
00378                                 );
00379                         }
00380 
00381                         $consulta->execute( $nReg );
00382                         $pre_id = Database::lastInsertId( 'preguntas_seq' );
00383                         @$childs = $pre->Alternativas;
00384 
00385                         if( is_array( $childs ) )
00386                                 foreach( $childs as $key => $alt ){
00387                                         if( is_array( $alt ) ) $alt = ( object ) $alt;
00388                                         if( $pre->Tipo == Cuestionario::PREGUNTA_TIPO_PARES || $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO )
00389                                                 $alt->Dimension = -1;
00390                                         $alt->Pregunta = $pre_id;
00391                                         array_push($alternativas, $alt);
00392                                 }
00393                 }
00394                 $consulta->closeCursor(  ); unset( $consulta );
00395 
00396                 $query = 
00397                         'INSERT INTO alternativas ( alt_pre_id, alt_dim_id, alt_valor, alt_valor_texto, alt_texto, alt_orden )'
00398                         .'values( :alt_pre_id, :alt_dim_id, :alt_valor, :alt_valor_texto, :alt_texto, :alt_orden )';
00399 
00400                 $consulta = $db->prepare( $query );
00401                 foreach( $alternativas as $key => $alt ){
00402                         $nReg = array(
00403                                 ':alt_pre_id'=> $alt->Pregunta,
00404                                 ':alt_dim_id'=> $alt->Dimension < 0 ? 0 : $dimensiones[ $alt->Dimension ][ 'dim_id' ],
00405                                 ':alt_valor'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? 0 : (float)( $alt->Valor ),
00406                                 ':alt_valor_texto'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? $alt->Valor : '',
00407                                 ':alt_texto'=> $alt->Texto,
00408                                 ':alt_orden'=> $alt->Orden
00409                         );
00410 
00411                         $consulta->execute( $nReg );
00412                 }
00413                 $consulta->closeCursor(  ); unset( $consulta );
00414 
00415         }
00416 
00417         public function addPreguntas( $val ){
00418 
00419                 if( !$this->getId(  ) || !is_array( $val ) || $this->Respondido(  ) ) return ;
00420 
00421                 if( sizeof( $val ) == 0 )return;
00422 
00423                 $db = Database::getInstance(  );
00424                 $alternativas = array(  );
00425 
00426                 if( Database::driver(  ) == 'oci' )
00427                         $query = 
00428                                 'INSERT INTO preguntas ( '
00429                                         .'pre_enunciado, pre_enunciado_b, pre_cue_id, pre_orden, pre_tipo, '
00430                                         .'pre_dimension_a, pre_dimension_b, '
00431                                         .'pre_pp_peso'
00432                                 .')values( '
00433                                         .':pre_enunciado, :pre_enunciado_b, :pre_cue_id, :pre_orden, :pre_tipo, '
00434                                         .':pre_dimension_a, :pre_dimension_b, '
00435                                         ."to_number(:pre_pp_peso, '999999.999999') "
00436                                 .')';
00437                 else
00438                         $query = 
00439                                 'INSERT INTO preguntas ( '
00440                                         .'pre_enunciado, pre_enunciado_b, pre_cue_id, pre_orden, pre_tipo, '
00441                                         .'pre_dimension_a, pre_dimension_b, '
00442                                         .'pre_pp_peso'
00443                                 .')values( '
00444                                         .':pre_enunciado, :pre_enunciado_b, :pre_cue_id, :pre_orden, :pre_tipo, '
00445                                         .':pre_dimension_a, :pre_dimension_b, '
00446                                         .':pre_pp_peso '
00447                                 .')';
00448 
00449                 $consulta = $db->prepare( $query );
00450 
00451                 foreach( $val as $key => $pre ){
00452                         if( !is_object( $pre ) )$pre = (object)$pre;
00453 
00454                         if( $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ){
00455                                 $consulta->execute( array(
00456                                         ':pre_cue_id'=> $this->getId(  ),
00457                                         ':pre_tipo'=> trim( $pre->Tipo ),
00458                                         ':pre_orden'=> trim( $pre->Orden ),
00459                                         ':pre_pp_peso'=> '1.0',
00460                                         ':pre_dimension_a' => 0,
00461                                         ':pre_dimension_b' => 0,
00462                                         ':pre_enunciado' => $pre->Enunciado,
00463                                         ':pre_enunciado_b' => '',
00464                                 ));
00465                         }else{
00466                                 $consulta->execute( array(
00467                                         ':pre_cue_id'=> $this->getId(  ),
00468                                         ':pre_tipo'=> $pre->Tipo,
00469                                         ':pre_orden'=> $pre->Orden,
00470                                         ':pre_pp_peso'=> $pre->PromedioPonderadoPeso,
00471                                         ':pre_dimension_a' => $pre->DimensionA,
00472                                         ':pre_dimension_b' => $pre->DimensionB,
00473                                         ':pre_enunciado' => $pre->Enunciado,
00474                                         ':pre_enunciado_b' => $pre->EnunciadoB
00475                                 ) );
00476                         }
00477 
00478                         $pre_id = Database::lastInsertId( 'preguntas_seq' );
00479                         
00480                         if( is_array( $pre->Alternativas ) )
00481                                 foreach( $pre->Alternativas as $key => $alt ){
00482                                         if( is_array( $alt ) ) $alt = ( object ) $alt;
00483                                         if( $pre->Tipo == Cuestionario::PREGUNTA_TIPO_PARES || $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO )
00484                                                 $alt->Dimension = -1;
00485                                         $alt->Pregunta = $pre_id;
00486                                         array_push($alternativas, $alt);
00487                                 }
00488                 }
00489                 $consulta->closeCursor(  ); unset( $consulta );
00490 
00491                 $query = 
00492                         'INSERT INTO alternativas ( alt_pre_id, alt_dim_id, alt_valor, alt_valor_texto, alt_texto, alt_orden )'
00493                         .'VALUES( :alt_pre_id, :alt_dim_id, :alt_valor, :alt_valor_texto, :alt_texto, :alt_orden )';
00494 
00495                 $consulta = $db->prepare( $query );
00496                 foreach( $alternativas as $key => $alt ){
00497                         if( !is_object( $alt ) )$alt = (object)$alt;
00498                         $consulta->execute( array(
00499                                 ':alt_pre_id'=> $alt->Pregunta,
00500                                 ':alt_dim_id'=> $alt->Dimension < 0 ? 0 : $alt->Dimension,
00501                                 ':alt_valor'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? 0 : (float)( $alt->Valor ),
00502                                 ':alt_valor_texto'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? $alt->Valor : '',
00503                                 ':alt_texto'=> $alt->Texto,
00504                                 ':alt_orden'=> $alt->Orden
00505                         ) );
00506                 }
00507                 $consulta->closeCursor(  ); unset( $consulta );
00508         }
00509 
00510         public function editPreguntas( $val ){
00511 
00512                 if( !$this->getId(  ) || !is_array( $val ) ) return ;
00513                 if( sizeof( $val ) == 0 )return;
00514 
00515                 $db = Database::getInstance(  );
00516 
00517                 $alternativas = array(  );
00518 
00519                 if( !$this->Respondido(  ) ){
00520 
00521                         if( Database::driver(  ) == 'oci' )
00522                                 $query =
00523                                         'UPDATE preguntas SET '
00524                                                 .'pre_enunciado = :pre_enunciado, pre_enunciado_b = :pre_enunciado_b, '
00525                                                 .'pre_orden = :pre_orden, pre_tipo = :pre_tipo, '
00526                                                 .'pre_dimension_a = :pre_dimension_a, pre_dimension_b = :pre_dimension_b, '
00527                                                 ."pre_pp_peso = to_number(:pre_pp_peso, '999999.999999') "
00528                                         .'WHERE pre_id=:pre_id ';
00529                         else
00530                                 $query =
00531                                         'UPDATE preguntas SET '
00532                                                 .'pre_enunciado = :pre_enunciado, pre_enunciado_b = :pre_enunciado_b, '
00533                                                 .'pre_orden = :pre_orden, pre_tipo = :pre_tipo, '
00534                                                 .'pre_dimension_a = :pre_dimension_a, pre_dimension_b = :pre_dimension_b, '
00535                                                 ."pre_pp_peso = :pre_pp_peso "
00536                                         .'WHERE pre_id=:pre_id ';
00537 
00538                         $consulta = $db->prepare( $query );
00539                         foreach( $val as $key => $pre ){
00540                                 if( !is_object( $pre ) )$pre = ( object ) $pre;
00541                                 
00542                                 if( $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ){
00543                                         $consulta->execute( array(
00544                                                 ':pre_id'=> $pre->Id,
00545                                                 ':pre_enunciado' => $pre->Enunciado,
00546                                                 ':pre_enunciado_b' => '',
00547                                                 ':pre_tipo'=> trim( $pre->Tipo ),
00548                                                 ':pre_pp_peso'=> '1.0',
00549                                                 ':pre_dimension_a' => 0,
00550                                                 ':pre_dimension_b' => 0,
00551                                                 ':pre_orden'=> trim( $pre->Orden )
00552                                         ));
00553                                 }else{
00554                                         $consulta->execute( array(
00555                                                 ':pre_id'=> $pre->Id,
00556                                                 ':pre_enunciado' => $pre->Enunciado,
00557                                                 ':pre_enunciado_b' => $pre->EnunciadoB,
00558                                                 ':pre_tipo'=>trim($pre->Tipo),
00559                                                 ':pre_pp_peso'=> isset( $pre->PromedioPonderadoPeso ) ? $pre->PromedioPonderadoPeso : '1.0',
00560                                                 ':pre_dimension_a'=> isset( $pre->DimensionA ) ? $pre->DimensionA : 0,
00561                                                 ':pre_dimension_b'=> isset( $pre->DimensionB ) ? $pre->DimensionB : 0,
00562                                                 ':pre_orden'=> trim($pre->Orden)
00563                                         ) );
00564                                 }
00565 
00566                                 if( is_array( $pre->Alternativas ) )
00567                                         foreach( $pre->Alternativas as $key => $alt ){
00568                                                 if( is_array( $alt ) ) $alt = ( object ) $alt;
00569                                                 if( $pre->Tipo == Cuestionario::PREGUNTA_TIPO_PARES || $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO )
00570                                                         $alt->Dimension = -1;
00571                                                 $alt->Pregunta = $pre->Id;
00572                                                 array_push($alternativas, $alt);
00573                                         }
00574 
00575                         }
00576                         $consulta->closeCursor(  ); unset( $consulta );
00577 
00578                         $consulta = $db->prepare( 'DELETE FROM alternativas WHERE alt_pre_id=:pre_id' );
00579                         foreach( $val as $key => $pre ){
00580                                 if( !is_object( $pre ) )$pre = ( object ) $pre;
00581                                 $consulta->execute( array( ':pre_id'=> $pre->Id ) );
00582                         }
00583                         $consulta->closeCursor(  ); unset( $consulta );
00584 
00585                         $consulta = $db->prepare(
00586                                 'INSERT INTO alternativas ( alt_pre_id, alt_dim_id, alt_valor, alt_valor_texto, alt_texto, alt_orden )'
00587                                 .'VALUES( :alt_pre_id, :alt_dim_id, :alt_valor, :alt_valor_texto, :alt_texto, :alt_orden )'                     
00588                         );
00589                         foreach( $alternativas as $key => $alt ){
00590                                 if( !is_object( $alt ) )$alt = (object)$alt;
00591                                 $consulta->execute( array(
00592                                         ':alt_pre_id'=> $alt->Pregunta,
00593                                         ':alt_dim_id'=> $alt->Dimension < 0 ? 0 : $alt->Dimension,
00594                                         ':alt_valor'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? 0 : (float)( $alt->Valor ),
00595                                         ':alt_valor_texto'=> $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? $alt->Valor : '',
00596                                         ':alt_texto'=> $alt->Texto,
00597                                         ':alt_orden'=> $alt->Orden
00598                                 ) );
00599                         }
00600                         $consulta->closeCursor(  ); unset( $consulta );
00601                 }else{
00602                         $consulta = $db->prepare(
00603                                 'UPDATE preguntas SET pre_enunciado=:pre_enunciado, pre_enunciado_b=:pre_enunciado_b WHERE pre_id=:pre_id'
00604                         );
00605                         foreach( $val as $key => $pre ){
00606                                 if( !is_object( $pre ) )$pre = ( object ) $pre;
00607 
00608                                 $consulta->execute( array(
00609                                         ':pre_id'=> $pre->Id,
00610                                         ':pre_enunciado' => $pre->Enunciado,
00611                                         ':pre_enunciado_b' => $pre->EnunciadoB
00612                                 ) );
00613 
00614                                 if( is_array( $pre->Alternativas ) )
00615                                         foreach( $pre->Alternativas as $key => $alt )
00616                                                 array_push( $alternativas, $alt );
00617                         }
00618                         $consulta->closeCursor(  ); unset( $consulta );
00619 
00620                         $consulta = $db->prepare( 'UPDATE alternativas SET alt_texto = :alt_texto WHERE alt_id = :alt_id' );
00621 
00622                         foreach( $alternativas as $key => $alt ){
00623                                 if( is_array( $alt )  )$alt = ( object ) $alt;
00624                                 $consulta->execute( array(
00625                                         ':alt_id'=> $alt->Id,
00626                                         ':alt_texto'=> $alt->Texto
00627                                 ));
00628                         }
00629                         $consulta->closeCursor(  ); unset( $consulta );
00630                 }
00631 
00632         }
00633 
00634         public function delPreguntas( $val ){
00635 
00636                 if( !$this->getId(  ) || !is_array( $val ) || $this->Respondido(  ) ) return ;
00637                 if( sizeof( $val ) == 0 )return;
00638 
00639                 $db = Database::getInstance(  );
00640 
00641                 $consulta = $db->prepare( 'DELETE FROM preguntas WHERE pre_id=:pre_id' );
00642                 foreach( $val as $key => $pre )
00643                         $consulta->execute( array( ':pre_id'=> $pre ) );
00644 
00645                 $consulta->closeCursor(  ); unset( $consulta );
00646         }
00647 
00655         public function getId(  ){ return $this->cue_id ? $this->cue_id : NULL; }
00656 
00664         public function getNombre(  ){ return $this->cue_nombre; }
00665 
00671         public function setNombre( $val ){ $this->cue_nombre = $val; }
00672 
00680         public function getTipo(  ){ return $this->cue_tipo; }
00681 
00690         public function setTipo( $val ){ $this->cue_tipo = $val; }
00691 
00700         public function getInventarioId(  ){ return $this->cue_inv_id; }
00701 
00710         public function setInventarioId( $val ){ $this->cue_inv_id = $val; }
00711 
00720         public function getInstrucciones(  ){ return $this->cue_instrucciones; }
00721 
00730         public function setInstrucciones( $val ){ $this->cue_instrucciones = $val; }
00731 
00732 
00741         public function setTipoDeGrafico( $val ){ $this->cue_gra_tipo = $val; }
00742 
00751         public function getTipoDeGrafico(  ){ return $this->cue_gra_tipo; }
00752 
00761         public function setTipoDeEstadistica( $val ){ $this->cue_gra_estadistico = $val; }
00762 
00771         public function getTipoDeEstadistica(  ){ return $this->cue_gra_estadistico; }
00772 
00781         public function setAnalisis( $val ){ $this->cue_gra_analisis = $val; }
00782 
00791         public function getAnalisis(  ){ return $this->cue_gra_analisis; }
00792 
00802         public function setCuestionarioOrigen( $val ){ $this->cue_origen_id = $val; }
00803 
00813         public function getCuestionarioOrigen(  ){ return $this->cue_origen_id; }
00814 
00823         public function getCuestionarioDependiente(  ){
00824                 if( !$this->getId(  ) ) return 0;
00825                 $db = Database::getInstance(  );
00826                 $consulta = $db->prepare( 'SELECT cue_id FROM cuestionarios WHERE cue_origen_id = :cue_id' );
00827                 $consulta->execute( array( ':cue_id' => $this->getId(  ) ) );
00828                 $rt = $consulta->fetch(  );
00829                 $consulta->CloseCursor(  ); unset( $consulta );
00830                 return $rt[0];
00831         }
00832 
00846         public function getDimensiones(  ){
00847 
00848                 if( $this->cue_dimensiones ) return $this->cue_dimensiones;
00849 
00850                 $cue_dim = array(  );
00851 
00852                 $db = Database::getInstance(  );
00853 
00854                 $consulta = $db->prepare(
00855                         'SELECT '
00856                                 .'p.dim_id as id, p.dim_nombre as nombre, p.dim_rangos as rangos, '
00857                                 .'p.dim_connotacion_negativa as connotacion_negativa, '
00858                                 .'c.dim_id as c_id, c.dim_nombre as c_nombre, c.dim_rangos as c_rangos, '
00859                                 .'c.dim_connotacion_negativa as c_connotacion_negativa '
00860                         .'FROM dimensiones p '
00861                         .'LEFT JOIN dimensiones c ON ( c.dim_padre_id = p.dim_id ) '
00862                         .'WHERE p.dim_padre_id = 0 AND p.dim_cue_id = :cue_id '
00863                         .'ORDER BY p.dim_id, c.dim_id '
00864                 );
00865 
00866                 $consulta->execute( array(
00867                         ':cue_id' => ( $this->getCuestionarioOrigen(  ) == 0 ? $this->getId(  ) : $this->getCuestionarioOrigen(  ) )
00868                 ) );
00869                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00870                         if( sizeof( $cue_dim ) == 0 ||  $cue_dim[ sizeof( $cue_dim )-1 ]->Id != $resultado['id'] ){
00871                                 $dim = new stdClass(  );
00872                                 $dim->Id=$resultado['id'];
00873                                 $dim->Nombre=$resultado['nombre'];
00874                                 $dim->Rangos=json_decode( $resultado['rangos'] );
00875                                 $dim->Padre=0;
00876                                 $dim->Dimensiones = array(  );
00877                                 $dim->ConnotacionNegativa = $resultado['connotacion_negativa'];
00878                                 array_push( $cue_dim, $dim );
00879                         }
00880                         if( $resultado['c_id'] ){
00881                                 $dim = new stdClass(  );
00882                                 $dim->Id=$resultado['c_id'];
00883                                 $dim->Nombre=$resultado['c_nombre'];
00884                                 $dim->Rangos=json_decode( $resultado['c_rangos'] );
00885                                 $dim->Padre=$resultado['id'];
00886                                 $dim->ConnotacionNegativa = $resultado['c_connotacion_negativa'];
00887                                 array_push( $cue_dim[ sizeof( $cue_dim )-1 ]->Dimensiones, $dim );
00888                         }
00889                 }
00890 
00891                 $this->cue_dimensiones = $cue_dim;
00892 
00893                 return $this->cue_dimensiones;
00894         
00895         }
00896 
00910         public function getDimensionesArray(  ){
00911 
00912                 $cue_dim = array(  );
00913 
00914                 $db = Database::getInstance(  );
00915 
00916                 $consulta = $db->prepare(
00917                         'SELECT dim_id as id, dim_padre_id as padre, dim_nombre as nombre, dim_rangos as rangos, '
00918                         .'dim_connotacion_negativa as connotacion_negativa '
00919                         .'FROM dimensiones WHERE dim_cue_id = :cue_id ORDER BY dim_id '
00920                 );
00921                 
00922                 $consulta->execute( array(
00923                         ':cue_id' => ( $this->getCuestionarioOrigen(  ) == 0 ? $this->getId(  ) : $this->getCuestionarioOrigen(  ) )
00924                 ) );
00925                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00926                         $dim = new stdClass(  );
00927                         $dim->Id=$resultado['id'];
00928                         $dim->Nombre=$resultado['nombre'];
00929                         $dim->Padre=$resultado['padre'];
00930                         $dim->ConnotacionNegativa=$resultado['connotacion_negativa'];
00931                         $dim->Rangos = $resultado['rangos'] != '' ? json_decode( $resultado['rangos'] ) : array(  );
00932                         array_push( $cue_dim, $dim );
00933                 }
00934 
00935                 return $cue_dim;
00936         
00937         }
00938 
00952         public function getDimensionesSimple(  ){
00953 
00954                 $cue_dim = array(  );
00955 
00956                 $db = Database::getInstance(  );
00957 
00958                 $consulta = $db->prepare(
00959                         'SELECT '
00960                                 .'p.dim_id as id, p.dim_nombre as nombre, p.dim_rangos as rangos, '
00961                                 .'p.dim_connotacion_negativa as connotacion_negativa, '
00962                                 .'c.dim_id as c_id, c.dim_nombre as c_nombre, c.dim_rangos as c_rangos, '
00963                                 .'c.dim_connotacion_negativa as c_connotacion_negativa '
00964                         .'FROM dimensiones p '
00965                         .'LEFT JOIN dimensiones c ON ( c.dim_padre_id = p.dim_id ) '
00966                         .'WHERE p.dim_padre_id = 0 AND p.dim_cue_id = :cue_id '
00967                         .'ORDER BY p.dim_id, c.dim_id '
00968                 );
00969                 
00970                 $consulta->execute( array(
00971                         ':cue_id' => ( $this->getCuestionarioOrigen(  ) == 0 ? $this->getId(  ) : $this->getCuestionarioOrigen(  ) )
00972                 ) );
00973                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
00974                         if( sizeof( $cue_dim ) == 0 ||  $cue_dim[ sizeof( $cue_dim )-1 ]->Id != $resultado['id'] ){
00975                                 $dim = new stdClass(  );
00976                                 $dim->Id=$resultado['id'];
00977                                 $dim->Nombre=$resultado['nombre'];
00978                                 $dim->ConnotacionNegativa=$resultado['connotacion_negativa'];
00979                                 $dim->Rangos=json_decode( $resultado['rangos'] );
00980                                 $dim->Padre=0;
00981                                 array_push( $cue_dim, $dim );
00982                         }
00983                         if( $resultado['c_id'] ){
00984                                 $dim = new stdClass(  );
00985                                 $dim->Id=$resultado['c_id'];
00986                                 $dim->Nombre=$resultado['c_nombre'];
00987                                 $dim->ConnotacionNegativa=$resultado['c_connotacion_negativa'];
00988                                 $dim->Rangos=json_decode( $resultado['c_rangos'] );
00989                                 $dim->Padre=$resultado['id'];
00990                                 array_push( $cue_dim, $dim );
00991                         }
00992                 }
00993 
00994                 return $cue_dim;
00995         
00996         }
00997 
01008         public function setDimensiones( $val ){ $this->cue_dimensiones = $val; }
01009 
01019         public function getPreguntas(  ){
01020 
01021                 if( $this->cue_preguntas ) return $this->cue_preguntas;
01022 
01023                 $cue_pre = array(  );
01024 
01025                 $db = Database::getInstance(  );
01026 
01027                 $consulta = $db->prepare( 
01028                         'SELECT * FROM preguntas pre LEFT JOIN alternativas alt ON ( alt.alt_pre_id = pre.pre_id ) '
01029                         .'WHERE pre.pre_cue_id = :cue_id ORDER BY pre.pre_orden, alt.alt_orden'
01030                 );
01031 
01032                 $consulta->execute( array( ':cue_id'=>$this->getId(  ) ) );
01033                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01034                         if( sizeof($cue_pre) == 0 || $cue_pre[sizeof($cue_pre)-1]->Id != $resultado['pre_id'] ){
01035                                 $pre = new stdClass(  );
01036                                 $pre->Id = $resultado['pre_id'];
01037                                 $pre->Enunciado = $resultado['pre_enunciado'];
01038                                 $pre->EnunciadoB = $resultado['pre_enunciado_b'];
01039                                 $pre->DimensionA = is_null( $resultado['pre_dimension_a'] ) ? 0 : $resultado['pre_dimension_a'];
01040                                 $pre->DimensionB = is_null( $resultado['pre_dimension_b'] ) ? 0 : $resultado['pre_dimension_b'];
01041                                 $pre->Orden = $resultado['pre_orden'];
01042                                 $pre->Tipo = $resultado['pre_tipo'];
01043                                 $pre->PromedioPonderadoPeso = $resultado['pre_pp_peso'];
01044                                 $pre->Alternativas = array(  );
01045                                 array_push( $cue_pre, $pre );
01046                         }
01047                         if( $resultado['alt_id'] ){
01048                                 $alt = new stdClass(  );
01049                                 $alt->Id = $resultado['alt_id'];
01050                                 $alt->Dimension = $resultado['alt_dim_id'];
01051                                 $alt->Valor = $this->getTipo(  ) == Cuestionario::TIPO_DEMOGRAFICO ? 
01052                                         $resultado['alt_valor_texto'] : $resultado['alt_valor'];
01053                                 $alt->Texto = $resultado['alt_texto'];
01054                                 $alt->Orden = $resultado['alt_orden'];
01055                                 array_push( $cue_pre[sizeof( $cue_pre ) - 1]->Alternativas, $alt );
01056                         }
01057                 }
01058 
01059                 $this->cue_preguntas = $cue_pre;
01060                 return $this->cue_preguntas;
01061         }
01062 
01091         public function getPreguntasLista( $pg=1, $limit=5, $eva, $par, $eval, $eval_tipo ){
01092 
01093                 if( !$this->getId(  ) ) return new stdClass(  );
01094 
01095                 $cue_pre = array(  );
01096 
01097                 $db = Database::getInstance(  );
01098 
01099                 $consulta = NULL;
01100                 $pager = new stdClass(  );
01101                 $rt = new stdClass(  );
01102 
01103                 $consulta = $db->prepare(
01104                         'SELECT count(*) as rowCount FROM  preguntas pre '
01105                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
01106                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
01107                         .'JOIN evaluaciones_inventarios eva_inv ON ( eva_inv.inv_id = inv.inv_id ) '
01108                         .'WHERE eva_inv.eva_id = :eva_id AND cue.cue_id = :cue_id AND NOT EXISTS ( '
01109                                 .'SELECT * FROM respuestas res WHERE pre.pre_id=res.pre_id AND res.eva_id=eva_inv.eva_id '
01110                                 .'AND res.par_id=:par_id AND res.eval_id=:eval_id'
01111                         .') ORDER BY pre.pre_orden ASC'
01112                 );
01113                 
01114                 $consulta->execute( array( ':cue_id'=>$this->getId(  ), ':eva_id'=>$eva, ':par_id'=>$par, ':eval_id'=>$eval ) );
01115                 $resultado = $consulta->fetch(PDO::FETCH_ASSOC); $consulta->closeCursor(  ); unset($consulta);
01116 
01117                 if( !$resultado || $resultado['rowcount'] == 0){
01118                         $rt->PageCount=1;
01119                         $rt->Pagina = 1;
01120                         $rt->RowCount = 0;
01121                         $rt->Preguntas = array(  );
01122                         return $rt;
01123                 }
01124                 $rt->RowCount = $resultado['rowcount'];
01125 
01126                 $pager->pageCount = ceil( $resultado['rowcount'] / $limit );
01127                 $pager->offset = $limit * ( ( $pg > $pager->pageCount ? $pager->pageCount : $pg ) -1 );
01128 
01129                 $query = Database::limit(
01130                         'SELECT pre.* FROM  preguntas pre '
01131                         .'JOIN cuestionarios cue ON ( cue.cue_id = pre.pre_cue_id ) '
01132                         .'JOIN inventarios inv ON ( inv.inv_id = cue.cue_inv_id ) '
01133                         .'JOIN evaluaciones_inventarios eva_inv ON ( eva_inv.inv_id = inv.inv_id ) '
01134                         .'WHERE eva_inv.eva_id = :eva_id AND cue.cue_id = :cue_id AND NOT EXISTS ( '
01135                                 .'SELECT * FROM respuestas res WHERE pre.pre_id=res.pre_id AND res.eva_id=eva_inv.eva_id '
01136                                 .'AND res.par_id=:par_id AND res.eval_id=:eval_id'
01137                         .') ORDER BY pre.pre_orden ASC'
01138                 , $limit, $pager->offset );
01139                 $consulta = $db->prepare( $query );
01140 
01141                 $consulta->execute( array( ':cue_id'=>$this->getId(  ), ':eva_id'=>$eva, ':par_id'=>$par, ':eval_id'=>$eval ) );
01142                 while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01143                         $pre = new stdClass(  );
01144                         $pre->Id = $resultado['pre_id'];
01145                         $pre->Enunciado = Utilitario::convertir_especiales_html( $resultado['pre_enunciado'] );
01146                         $pre->EnunciadoB = Utilitario::convertir_especiales_html( $resultado['pre_enunciado_b'] );
01147                         $pre->Orden = $resultado['pre_orden'];
01148                         $pre->Tipo = $resultado['pre_tipo'];
01149                         $pre->DimensionA = $resultado['pre_dimension_a'];
01150                         $pre->DimensionB = $resultado['pre_dimension_b'];
01151                         $pre->Alternativas = array(  );
01152                         $pre->SubTipo = 1;
01153                         array_push( $cue_pre, $pre );
01154                 }
01155                 $consulta->closeCursor(  ); unset($consulta);
01156 
01157                 $consulta = $db->prepare( 'SELECT * FROM alternativas WHERE alt_pre_id = :pre_id ORDER BY alt_orden ASC ' );
01158                 foreach( $cue_pre as $idx => &$pre ){
01159                         $consulta->execute( array( ':pre_id'=>$pre->Id ) );
01160                         while( $resultado = $consulta->fetch( PDO::FETCH_ASSOC, PDO::FETCH_ORI_NEXT ) ){
01161                                 $alt = new stdClass(  );
01162                                 $alt->Id = $resultado['alt_id'];
01163                                 $alt->Texto = Utilitario::convertir_especiales_html( $resultado['alt_texto'] );
01164                                 $alt->Orden = $resultado['alt_orden'];
01165                                 $alt->Valor = $resultado['alt_valor'];
01166                                 $alt->Dimension = $resultado['alt_dim_id'];
01167                                 array_push( $pre->Alternativas, $alt );
01168                                 if( $alt->Texto != '' )$pre->SubTipo = 0;
01169                         }
01170                 }
01171                 $consulta->closeCursor(  ); unset($consulta);
01172 
01173                 $rt->PageCount = $pager->pageCount;
01174                 $rt->Pagina = (string)($pg > $rt->PageCount ? $rt->PageCount : $pg);
01175                 $rt->Preguntas = $cue_pre;
01176 
01177                 return $rt;
01178         }
01179 
01188         public function getPreguntasCount(  ){
01189 
01190                 $db = Database::getInstance(  );
01191 
01192                 $consulta = $db->prepare( 'SELECT count(*) as rowCount FROM preguntas WHERE pre_cue_id = :cue_id' );
01193 
01194                 $consulta->execute( array( ':cue_id'=>$this->getId(  ) ) );
01195                 $resultado = $consulta->fetch(PDO::FETCH_ASSOC); $consulta->closeCursor(  ); unset($consulta);
01196 
01197                 return $resultado['rowcount'];
01198 
01199         }
01200 
01211         public function setPreguntas( $val ){ $this->cue_preguntas = $val; }
01212 
01222         public function setRangosDelGrafico( $val ){ $this->cue_gra_rangos = json_encode( $val ); }
01223 
01232         public function getRangosDelGrafico(  ){ return json_decode( $this->cue_gra_rangos ); }
01233 
01243         public function Respondido(  ){
01244                 $db = Database::getInstance(  );
01245 
01246                 $consulta = $db->prepare( 'SELECT COUNT( * ) as res FROM respuestas WHERE cue_id = :cue_id' );
01247                 $consulta->execute( array( ':cue_id'=>$this->getId(  ) ) );
01248                 $resultado = $consulta->fetch( PDO::FETCH_ASSOC );
01249                 $consulta->closeCursor(  ); unset( $consulta );
01250 
01251                 return $resultado['res'] > 0 ? true : false ;
01252         }
01253 
01266         public function Estructura( $force_encode = false ){
01267 
01268                 if( !$this->getId(  ) ) return '';
01269 
01270                 $db = Database::getInstance(  );
01271 
01272                 $rt = '';
01273 
01274                 $Cuestionario = (object)array(
01275                         'Id' => $this->getId(  ),
01276                         'Tipo' => $this->getTipo(  ),
01277                         'Origen' => $this->getCuestionarioOrigen(  ),
01278                         'Nombre' => $force_encode ? utf8_encode( $this->getNombre(  ) ) : $this->getNombre(  ),
01279                         'Instrucciones' => $force_encode ? utf8_encode( $this->getInstrucciones(  ) ) : $this->getInstrucciones(  ),
01280                         'TipoGrafico' => $this->getTipoDeGrafico(  ),
01281                         'Estadistico' => $this->getTipoDeEstadistica(  ),
01282                         'AnalisisGrafico' => $this->getAnalisis(  ),
01283                         'Escala' => (object)array(
01284                                 'Minimo' => $this->getEscalaMinimo(  ),
01285                                 'Maximo' => $this->getEscalaMinimo(  )
01286                         ),
01287                         'Rangos' => $this->getRangosDelGrafico(  ),
01288                         'Dimensiones' => $this->getDimensiones(  ),
01289                         'Dim_idx_match' => array(  ),
01290                         'Preguntas' => $this->getPreguntas(  )
01291                 );
01292 
01293                 foreach( $Cuestionario->Dimensiones as $i=>$dim ){
01294                         $Cuestionario->Dim_idx_match[$dim->Id] = $i;
01295                         foreach( $dim->Dimensiones as $j=>$subdim )
01296                                 $Cuestionario->Dim_idx_match[$subdim->Id] = $i;
01297                 }
01298 
01299                 foreach( $Cuestionario->Preguntas as $i => &$Pre )
01300                         foreach( $Pre->Alternativas as $j => &$Alt )
01301                                 $Alt->Dimension = $Cuestionario->Dim_idx_match[$Alt->Dimension];
01302 
01303                 return $Cuestionario;
01304         }
01305 
01306 }