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(); } }