0) { $temp = array_column($asignaciones, 'idusuario'); $temp = array_unique($temp, SORT_NUMERIC); $usuarios = array(); foreach ($temp as $user){ array_push($usuarios, array('idusuario' => $user) + Usuario::getNombreUsuario($pdo, $user)); } array_multisort(array_column($usuarios, 'apellidos'),SORT_ASC,$usuarios); $proyectos = array(); $temp = array_column($asignaciones, 'idproyecto'); $temp = array_unique($temp, SORT_NUMERIC); foreach ($temp as $proy){ array_push($proyectos, array('idproyecto' => $proy) + Proyecto::getProyectoXID($pdo, $proy)); } array_multisort(array_column($proyectos, 'clave'),SORT_ASC,$proyectos); $html = generaResumen($proyectos, $usuarios, $asignaciones); $return['main'] = $html; } else{ $return['icono'] = 'ing-no-cargado text-danger'; $return['error'] = 'Aún no han sido asignados los proyectos'; } } else { $return['icono'] = 'ing-eventos text-rojo1'; $return['error'] = 'No ha sido definida la fecha de evaluación de proyectos'; } break; case 2: //Genera dropdownlist de proyectos $asignaciones = Asignacion::getAsignaciones($pdo, 'ETAPA', null, $etapa, $_POST['concurso']); $proyectosAsignados = array(); if (count($asignaciones) > 0) { $temp = array_column($asignaciones, 'idproyecto'); $proyectosAsignados = array_unique($temp, SORT_NUMERIC); } if ($_POST['carrera'] == 0) $proyectos = Proyecto::getProyectosConcurso($pdo, $_POST['concurso']); else $proyectos = Proyecto::getProyectosConcurso($pdo, $_POST['concurso'], $_POST['carrera']); foreach ($proyectosAsignados as $proy){ reset($proyectos); while ($temp = current($proyectos)){ if ($temp['idproyecto'] == $proy){ $index = key($proyectos); unset($proyectos[$index]); end($proyectos); next($proyectos); } else next($proyectos); } } if (count($proyectos) > 0){ $html = ''; foreach ($proyectos as $proy){ $nivel = 0; $html .= '
  • ' . $proy['proyecto'] . '
  • '; } $return['lista'] = $html; } else { if (count($proyectosAsignados) > 0) $return['error'] = 'Todos los proyectos finalistas tienen al menos un evaluador asignado.
    Modifica en la sección editar.'; else $return['error'] = 'No se han publicado aún los proyectos finalistas'; } break; case 3: //Asignar proyectos-evaluador $seleccionados = json_decode($_POST['elegidos'],true); $elegidos = array(); $asignado = true; $todos = true; $rol = Usuario::getIdRol($pdo, 'EVALUADOR'); foreach ($seleccionados as $evaluador){ if ($evaluador['id'] != 'x') { $ids = explode('-',$evaluador['id']); if ($ids[0] != 0){ $usr = $ids[0]; if (count($rol) > 0) if (!Usuario::tieneRol($pdo, $usr, $rol['idrol'], $_POST['concurso'])) Usuario::agregaUsuarioRol($pdo, $usr, $rol['idrol'], $_POST['concurso']); } else $usr = Usuario::agregaUsuarioNuevoInterno($pdo, $ids[1], 'EVALUADOR', $_POST['concurso']); } else { $usr = Usuario::agregaUsuarioNuevoExterno($pdo, $evaluador['nombre'], $evaluador['apellidos'], '', $evaluador['email'], 'EVALUADOR', $_POST['concurso']); } if ($usr == 0) { $todos = false; } else { array_push($elegidos,$usr); } } $cont = 0; while ($cont < count($elegidos) && $asignado){ $asignado = Asignacion::agregaAsignacion($pdo, $etapa, $_POST['proyecto'], $elegidos[$cont]); $cont++; } if (!$asignado){ foreach ($elegidos as $elegido){ Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $_POST['proyecto'], $elegido); } if (count($elegidos) == 1) $return['error'] = 'No fue posible asignarle un evaluador al proyecto ' . $_POST['texto'] . ''; else $return['error'] = 'No fue posible asignarle evaluadores al proyecto ' . $_POST['texto'] . ''; } else { if (count($elegidos) == 1) if ($todos) $return['asigna'] = 'Se asignó exitosamente al evaluador al proyecto ' . $_POST['texto'] . ''; else $return['error'] = 'No fue posible asignarle un evaluador al proyecto ' . $_POST['texto'] . ''; else if ($todos) $return['asigna'] = 'Se asignaron exitosamente los evaluadores al proyecto ' . $_POST['texto'] . ''; else $return['asigna'] = 'Se asignaron algunos de los evaluadores al proyecto ' . $_POST['texto'] . '.
    No fue posible asignarlos a todos.
    '; } break; case 4: //Consulta un proyecto $asignados = Asignacion::getAsignaciones($pdo, 'PROYECTO', $_POST['dato'], $etapa, $_POST['concurso']); if (count($asignados) > 0){ $html = ''; foreach ($asignados as $asignado){ $nombre = Usuario::getNombreUsuario($pdo, $asignado['idusuario']); $html .= '
    ' . $nombre['nombre'] . ' ' . $nombre['apellidos'] . '
    '; $return['elegibles'] = $html; } } else $return['error'] = 'No es posible obtener las asignaciones del proyecto '; break; case 5: //Guarda las ediciones $seleccionados = json_decode($_POST['elegidos'],true); $asignados = Asignacion::getAsignaciones($pdo, 'PROYECTO', $_POST['proyecto'], $etapa, $_POST['concurso']); $asignados = array_column($asignados, 'idusuario'); $error = array(); $elegidos = array(); $agregar = array(); foreach ($seleccionados as $elegido) { $ids = explode('-',$elegido['id']); if (in_array($ids[0], $asignados)){ if (($key = array_search($ids[0], $asignados)) !== false){ unset($asignados[$key]); if (($key = array_search($elegido, $seleccionados)) !== false) unset($seleccionados[$key]); } } } foreach ($asignados as $asignado) { if (!Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $_POST['proyecto'], $asignado)) array_push($error,$asignado); } $asignado = true; $todos = true; foreach ($seleccionados as $evaluador){ if ($evaluador['id'] != 'x') { $ids = explode('-',$evaluador['id']); if ($ids[0] != 0){ $usr = $ids[0]; if (count($rol) > 0) if (!Usuario::tieneRol($pdo, $usr, $rol['idrol'], $_POST['concurso'])) Usuario::agregaUsuarioRol($pdo, $usr, $rol['idrol'], $_POST['concurso']); } else $usr = Usuario::agregaUsuarioNuevoInterno($pdo, $ids[1], 'EVALUADOR', $_POST['concurso']); } else { $usr = Usuario::agregaUsuarioNuevoExterno($pdo, $evaluador['nombre'], $evaluador['apellidos'], '', $evaluador['email'], 'EVALUADOR', $_POST['concurso']); } if ($usr == 0) { $todos = false; } else { array_push($elegidos,$usr); } } $cont = 0; while ($cont < count($elegidos) && $asignado){ $asignado = Asignacion::agregaAsignacion($pdo, $etapa, $_POST['proyecto'], $elegidos[$cont]); $cont++; } if (!$asignado){ foreach ($elegidos as $elegido){ Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $_POST['proyecto'], $elegido); } if (count($elegidos) == 1) $return['error'] = 'No fue posible asignarle un evaluador al proyecto ' . $_POST['texto'] . ''; else $return['error'] = 'No fue posible asignarle evaluadores al proyecto ' . $_POST['texto'] . ''; } else { if (count($elegidos) == 1) if ($todos) $return['asigna'] = 'Se asignó exitosamente al evaluador al proyecto ' . $_POST['texto'] . ''; else $return['error'] = 'No fue posible asignarle un evaluador al proyecto ' . $_POST['texto'] . ''; else if ($todos) $return['asigna'] = 'Se asignaron exitosamente los evaluadores al proyecto ' . $_POST['texto'] . ''; else $return['asigna'] = 'Se asignaron algunos de los evaluadores al proyecto ' . $_POST['texto'] . '.
    No fue posible asignarlos a todos.
    '; } break; case 6: //Eliminar asignación $elegidos = explode(',',$_POST['elegidos']); $noBorrar = array(); $asignacionesTotales = 0; foreach ($elegidos as $elegido) { $asignaciones = Asignacion::getAsignaciones($pdo, 'PROYECTO', $elegido, $etapa, $_POST['concurso']); foreach($asignaciones as $asignado){ if (Etapa::tieneEvaluaciones($pdo, $asignado['idusuario'], $asignado['idproyecto'], $etapa, $_POST['concurso'])){ array_push($noBorrar,array('enuso'=>$asignado['idasignacion'], 'elegido' => $elegido)); } else if (!Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $asignado['idproyecto'], $asignado['idusuario'])) array_push($noBorrar,array('enuso'=>$asignado['idasignacion'], 'elegido' => $elegido)); $asignacionesTotales++; } } if (count($noBorrar) == 0){ if (count($elegidos) == 1) $return['eliminados'] = 'Se borraron las asignaciones del proyecto'; else $return['eliminados'] = 'Se borraron las asignaciones de todos los proyectos seleccionados'; } else { if (count($noBorrar) < $asignacionesTotales){ if (count($elegidos) == 1) $return['faltan'] = 'No fue posible eliminar todas las asignaciones del proyecto'; else $return['faltan'] = 'No fue posible eliminar todas las asignaciones de todos los proyectos seleccionados'; } else { if (count($elegidos) == 1) $return['error'] = 'No fue posible eliminar ninguna asignación del proyecto'; else $return['error'] = 'No fue posible eliminar ninguna asignación de los proyectos seleccionados'; break; } } break; } } else $return['error'] = 'No fue posible obtener los datos'; } $return['json'] = json_encode($return); echo json_encode($return); function generaResumen($proyectos, $users, $asignaciones){ $html = ''; $html = '
    '; $cont = 1; foreach ($proyectos as $proyecto){ $lista = ''; $id = 0; $usuarios = array_filter($asignaciones, function($arreglo) use($proyecto) { return $arreglo['idproyecto'] == $proyecto['idproyecto']; }); foreach ($usuarios as $usuario){ $temp = array_filter($users, function($arreglo) use($usuario) { return $arreglo['idusuario'] == $usuario['idusuario']; }); $temp2 = current($temp); $lista .= '
    ' . $temp2['nombre'] . ' ' . $temp2['apellidos'] . '
    '; } $id = $proyecto['idproyecto']; $html .= '
    ' . $proyecto['proyecto'] . '
    Ver Detalle
    '. $lista . '
    '; $cont++; } $html .= '
    '; return $html; } /*function asignaAsesores($pdo, $etapa, $evaluadores, $proyecto, $concurso){ $asignados = false; $docentes = array(); foreach ($evaluadores as $evaluador){ if ($evaluador['id'] != '-1') { $ids = explode('-',$evaluador['id']); if ($ids[0] != 0){ $usr = $ids[0]; $rol = Usuario::getIdRol($pdo, 'ASESOR'); if (count($rol) > 0) if (!Usuario::tieneRol($pdo, $usr,$rol['idrol'],$concurso)) Usuario::agregaUsuarioRol($pdo, $usr, $rol['idrol'], $concurso); } else $usr = Usuario::agregaUsuarioNuevoInterno($pdo, $ids[1], 'ASESOR', $concurso); array_push($docentes,$usr); } else { $usr = Usuario::agregaUsuarioNuevoExterno($pdo, $evaluador['nombre'], $evaluador['apellidos'], '', $evaluador['email'], 'ASESOR', $concurso); array_push($docentes,$usr); } } if (count($docentes) > 0){ $error = false; foreach ($docentes as $docente){ if (!Asignacion::agregaAsignacion($pdo, $etapa, $proyecto, $docente)) $error = true; } if (!$error) $asignados = true; else { foreach ($docentes as $docente){ Asignacion::eliminaAsignacionXDatos($pdo, $etapa, $proyecto, $docente); } Proyecto::eliminaAlumnosProyecto($pdo, $proyecto); Proyecto::eliminaProyecto($pdo, $proyecto); $asignados = false; } } else { Proyecto::eliminaAlumnosProyecto($pdo, $proyecto); Proyecto::eliminaProyecto($pdo, $proyecto); $asignados = false; } return $asignados; }*/