123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <?php
- require_once 'Etapa.php';
- require_once 'Proyecto.php';
- require_once 'Usuario.php';
- require_once 'SGI.php';
- class Asignacion {
- public static function existenAsignaciones($pdo, $concurso, $etapa){
- $existen = false;
- $stmt = $pdo->prepare('Select * from cidit_fs_existenasignacionesconcurso(:etapa,:concurso)');
- $stmt->bindParam(':etapa', $etapa);
- $stmt->bindParam(':concurso', $concurso);
- if($stmt->execute()){
- $temp = $stmt->fetch();
- $existen = $temp['existe'];
- }
- $stmt->closeCursor();
- $stmt = null;
- return $existen;
- }
-
- public static function getAsignaciones($pdo, $tipo, $dato, $etapa, $concurso){
- $asignaciones = array();
- switch($tipo){
- case 1:
- $stmt = $pdo->prepare('Select * from cidit_fs_asignaciones(:usr,null,:etapa,:concurso)');
- $stmt->bindParam(':usr', $dato);
- break;
- case 2:
- $stmt = $pdo->prepare('Select * from cidit_fs_asignaciones(null,:proy,:etapa,:concurso)');
- $stmt->bindParam(':proy', $dato);
- break;
- }
- $stmt->bindParam(':etapa', $etapa);
- $stmt->bindParam(':concurso', $concurso);
- if($stmt->execute())
- $asignaciones = $stmt->fetchAll();
- $stmt->closeCursor();
- $stmt = null;
- return $asignaciones;
- }
-
- public static function agregaAsignacion($pdo, $etapa, $proyecto, $usuario){
- $asigno = false;
- $stmt = $pdo->prepare('Select * from cidit_fi_asignacion(:etapa,:proyecto,:usuario)');
- $stmt->bindParam(':etapa', $etapa);
- $stmt->bindParam(':proyecto', $proyecto);
- $stmt->bindParam(':usuario', $usuario);
- if($stmt->execute())
- $asigno = true;
- $stmt->closeCursor();
- $stmt = null;
- return $asigno;
- }
-
- public static function eliminaAsignacionXDatos($pdo, $etapa, $proyecto, $usuario){
- $elimino = false;
- $stmt = $pdo->prepare('Select * from cidit_fd_asignacionxdatos(:etapa,:proyecto,:usuario)');
- $stmt->bindParam(':proyecto', $proyecto);
- $stmt->bindParam(':usuario', $usuario);
- $stmt->bindParam(':etapa', $etapa);
- if($stmt->execute())
- $elimino = true;
- $stmt->closeCursor();
- $stmt = null;
- return $elimino;
- }
-
- public static function eliminaAsignacion($pdo, $asignacion){
- $elimino = false;
- $stmt = $pdo->prepare('Select * from cidit_fd_asignacion(:asignacion)');
- $stmt->bindParam(':asignacion', $asignacion);
- if($stmt->execute())
- $elimino = true;
- $stmt->closeCursor();
- $stmt = null;
- return $elimino;
- }
-
- public static function tieneEvaluaciones($pdo, $asignacion){
- $tiene = true;
- $stmt = $pdo->prepare('Select * from cidit_fs_tieneevaluacion(:asignacion)');
- $stmt->bindParam(':asignacion', $asignacion);
- if($stmt->execute()){
- $temp = $stmt->fetch();
- $tiene = $temp['tiene'];
- }
- $stmt->closeCursor();
- $stmt = null;
- return $tiene;
- }
-
- public static function agregaUsuario ($pdo, $usr, $etapa, $concurso){
- $idusr = Usuario::agregaUsuarioInterno($pdo, $usr);
- $puesto = Usuario::getPuestoXClave($pdo, 'COMITE');
- if (count($puesto) > 0)
- Usuario::agregaUsuarioPuesto($pdo,$idusr,$puesto['idpuesto']);
- else
- $idusr = 0;
- if ($idusr != 0){
- $rol = array();
- switch($etapa){
- case 'REVISION': $rol = Usuario::getIdRol($pdo, 'REVISOR'); break;
- case 'EVALUACION': $rol = Usuario::getIdRol($pdo, 'JURADO'); break;
- }
- if (count($rol) > 0)
- if(!Usuario::agregaUsuarioRol($pdo, $idusr, $rol['idrol'], $concurso))
- $idusr = 0;
- }
- return $idusr;
- }
-
- public static function getUsuariosAsignables($pdo, $niveles){
- $usuarios = array();
- $users = array();
- foreach ($niveles as $nivel){
- array_push($users, self::getProfesPorNivel($pdo, $nivel));
- }
- foreach ($users as $usr){
- foreach ($usr as $temp){
- array_push($usuarios,$temp);
- }
- }
- $duplicados = array_column($usuarios,'idinterno');
- $duplicados = array_unique($duplicados);
- $duplicados = array_diff_assoc(array_column($usuarios,'idinterno'), $duplicados);
- while ($temp = current($duplicados)){
- reset($usuarios);
- $index = key($duplicados);
- while ($temp2 = current($usuarios)){
- if ($temp2['idinterno'] == $temp){
- $index2 = key($usuarios);
- $usuarios[$index2]['categorias'] .= ',' . $usuarios[$index]['niveles'];
- unset($usuarios[$index]);
- end($usuarios);
- next($usuarios);
- } else
- next($usuarios);
- }
- next($duplicados);
- }
- //array_multisort(array_column($usuarios, 'apellidos'),SORT_ASC,$usuarios);
- setlocale(LC_COLLATE, 'esm');
- usort($usuarios, function($a, $b) {
- return strcoll($a['apellidos'], $b['apellidos']);
- });
- return $usuarios;
- }
-
- private static function getProfesPorNivel($pdo, $nivel) {
- $periodo = SGI::getPeriodoActivo($pdo, $nivel);
- $usuarios = array();
- if (!empty($periodo)){
- $profes = SGI::getProfesoresActivos($pdo, $periodo);
- foreach ($profes as $prof){
- $temp = Usuario::datosUsuario($pdo, $prof["Usuario_id"], 'a', false);
- if (count($temp) > 0)
- array_push ($usuarios, array('idusuario' => $temp['iduser'], 'idinterno' => $prof["Usuario_id"], 'nombre' => $prof['Usuario_nombre'], 'apellidos' => $prof['Usuario_apellidos'],'niveles' => $nivel));
- else
- array_push ($usuarios, array('idusuario' => 0, 'idinterno' => $prof["Usuario_id"], 'nombre' => $prof['Usuario_nombre'], 'apellidos' => $prof['Usuario_apellidos'],'niveles' => $nivel));
- }
- return $usuarios;
- } else
- return array();
- }
- }
|