0) {
$temp = str_replace('{', '', $fechas[0]['fecha']);
$temp = str_replace('}', '', $temp);
$temp = explode(',', $temp);
if ($hoy < strtotime($temp[0]))
$fueraPeriodo = true;
} else
$fueraPeriodo = true;
}
if (!$fueraPeriodo) {
$etapa = Etapa::getClaveEtapaXID($pdo, $_POST['etapa']);
$seccion = '';
if ($actual){
$seccion = alMomento($pdo, $_POST['id'],$_POST['etapa']);
if ($seccion != 'error')
$return['momento'] = $seccion;
else
$return['error'] = 'error';
}
switch (mb_strtoupper($etapa)){
case 'REVISION':
$etapaFinalistas = Etapa::buscaEtapaXClave($pdo, 'FINALISTAS');
if (isset($etapaFinalistas))
$fechasFinalistas = Concurso::getFechaXEtapa($pdo, $_POST['id'], $etapaFinalistas);
if (isset($fechasFinalistas))
$seccion = finalistas($pdo, $_POST['id'], $fechasFinalistas, $actual, $edicion);
else
$seccion = 'error';
if ($seccion != 'error')
$return['asignaciones'] = $seccion;
else
$return['error'] = 'error';
break;
case 'EVALUACION':
$etapaGanadores = Etapa::buscaEtapaXClave($pdo, 'GANADORES');
if (isset($etapaGanadores))
$fechasGanadores = Concurso::getFechaXEtapa($pdo, $_POST['id'], $etapaGanadores);
if (isset($fechasGanadores))
$seccion = ganadores($pdo, $_POST['id'], $fechasGanadores, $actual, $edicion);
else
$seccion = 'error';
if ($seccion != 'error')
$return['asignaciones'] = $seccion;
else
$return['error'] = 'No podemos mostrar la información en éste momento';
break;
default :
$return['error'] = 'No podemos mostrar la información en éste momento';
}
if (Concurso::tieneEvaluaciones($pdo, $_POST['etapa'], $_POST['id']))
$flag = true;
else
$flag = false;
if (!isset($return['error']) && $flag){
$seccion = listadoProyectos($pdo, $_POST['id'],$_POST['etapa']);
if ($seccion != 'error'){
$return['proyectos'] = $seccion;
$graficas = graficas($pdo, $_POST['id'],$_POST['etapa']);
if (count($graficas) > 0){
$return['rubros'] = $graficas['rubros'];
$return['leyenda'] = $graficas['leyenda'];
$concurso = Concurso::getCouncursoxId($pdo, $_POST['id']);
} else
$return['error'] = 'No podemos mostrar la información en éste momento';
} else
$return['error'] = 'No podemos mostrar la información en éste momento';
} else {
if (!$flag){
$return['rubros'] = 'NO';
$return['proyectos'] = 'NO';
}
}
} else
$return['error'] = 'Se encuentra fuera de período';
break;
case 2: //ModalFaltantes
$faltante = '';
$faltantes = Proyecto::obtenerProyectosFaltantes($pdo, $_POST['id'], $_POST['etapa']);
$cont = 1;
foreach ($faltantes as $proyecto){
$faltante .= '
' . $proyecto['clave'] . '
' . $proyecto['proyecto'] . '
';
if ($cont ==5)
$cont = 1;
else
$cont++;
}
$return['faltan'] = $faltante;
break;
case 3: //Rubros
$datos = '';
switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo,$_POST['etapa']))){
case 'REVISION':
$proyectos = Proyecto::getProyectosAutorizados($pdo, $_POST['id'], 0, 'nombre');
break;
case 'EVALUACION':
$proyectos = Proyecto::getProyectosFinalistas($pdo, $_POST['id'], 0, 'nombre');
break;
default :
$proyectos = array();
}
if (count($proyectos) > 0){
$valores = array();
foreach ($proyectos as $proyecto)
array_push ($valores,Resultados::valoresGraficaXPregunta($pdo, $_POST['pregunta'], $proyecto['idproyecto'], $_POST['etapa']));
if(count($valores) > 0){
$colores = obtenerColores($proyectos);
$claves = array_column($proyectos, 'clave');
$return['tipo'] = 'doughnut';
$return['etiquetas'] = $claves;
$return['colores'] = $colores;
$return['datos'] = $valores;
} else
$return['datos'] = '';
} else
$return['error'] = 'error';
break;
case 4: //DataList Proyectos
$seccion = Resultados::evaluacionesXProyecto($pdo, $_POST['id'], $_POST['etapa'],'HTML');
if ($seccion != 'error')
$return['tablas'] = $seccion;
else
$return['error'] = 'error';
break;
case 5: //Guarda Finalistas/Ganadores
switch ($_POST['seleccionados']){
case 1: //Finalistas
$anteriores = false;
if(!empty($_POST['old'])){
$olds = explode(',',$_POST['old']);
while ($temp = current($olds)){
$index = key($olds);
$temp = explode('-', $temp);
$olds[$index] = $temp[1];
next($olds);
}
$anteriores = true;
}
$finalistas = explode(',',$_POST['elegidos']);
while ($temp = current($finalistas)){
$index = key($finalistas);
$temp = explode('-', $temp);
$finalistas[$index] = $temp[1];
next($finalistas);
}
$falsos = array();
$verdaderos = array();
if ($anteriores){
$falsos = array_diff($olds,$finalistas);
$verdaderos = array_diff($finalistas, $olds);
} else
$verdaderos = $finalistas;
$cont = 0;
foreach ($falsos as $falso){
if (actualizaFinalista($pdo, $falso,(bool)false)){
if ($cont == 0)
$validaF = true;
} else
$validaF = false;
$cont++;
}
$validaV = false;
$cont = 0;
foreach ($verdaderos as $verdadero){
if (actualizaFinalista($pdo, $verdadero,(bool)true)){
if ($cont == 0)
$validaV = true;
} else
$validaV = false;
$cont++;
}
if (count($falsos) == 0)
$validaF = true;
if (count($verdaderos) == 0)
$validaV = true;
if ($validaF && $validaV){
$etapaFinalistas = Etapa::buscaEtapaXClave($pdo, 'GANADORES');
if (isset($etapaFinalistas))
$fechasGanadores = Concurso::getFechaXEtapa($pdo, $_POST['id'], $etapaFinalistas);
if (!isset($fechasFinalistas))
$msg = ' la fecha de publicación';
else
$msg = 'l ' . Fechas::romanizaFecha($fechasFinalistas['fechas']);
$return['titulo'] = 'Los finalistas del concurso ya han sido asignados
(Pueden ser modificados únicamente antes de' . $msg . ')
';
$return['msg'] = '¡Felicidades! Se asignaron exitosamente los finalistas';
} else
$return['error'] = 'No fue posible asignar correctamente todos los finalistas';
break;
case 2: //Ganadores
$anteriores = false;
if(!empty($_POST['old'])){
$olds = explode(',',$_POST['old']);
while ($temp = current($olds)){
$index = key($olds);
$temp = explode('-', $temp);
$olds[$index] = array('categoria' => $temp[0],'proyecto' => $temp[1],'lugar' => $temp[2]);
next($olds);
}
$cont = 0;
foreach ($olds as $old){
if(eliminaGanador($pdo, $old['categoria'], $old['proyecto'], $old['lugar'])){
if ($cont == 0)
$anteriores = true;
} else
$anteriores = false;
$cont++;
}
} else
$anteriores = true;
if(isset($_POST['elegidos']) && $anteriores){
$ganadores = explode(',',$_POST['elegidos']);
while ($temp = current($ganadores)){
$index = key($ganadores);
$temp = explode('-', $temp);
$ganadores[$index] = array('categoria' => $temp[0],'proyecto' => $temp[1],'lugar' => $temp[2]);
next($ganadores);
}
$valida = false;
$cont = 0;
foreach ($ganadores as $ganador){
if (agregaGanador($pdo, $ganador['categoria'], $ganador['proyecto'], $ganador['lugar'])){
if ($cont == 0)
$valida = true;
} else
$valida = false;
$cont++;
}
if (!$valida) {
foreach ($ganadores as $ganador){
eliminaGanador($pdo, $ganador['categoria'], $ganador['proyecto'], $ganador['lugar']);
}
$return['error'] = 'No fue posible asignar los ganadores';
} else{
$etapaGanadores = Etapa::buscaEtapaXClave($pdo, 'GANADORES');
if (isset($etapaGanadores))
$fechasGanadores = Concurso::getFechaXEtapa($pdo, $_POST['id'], $etapaGanadores);
if (!isset($fechasGanadores))
$msg = ' la fecha de publicación';
else
$msg = 'l ' . Fechas::romanizaFecha($fechasGanadores['fechas']);
$return['titulo'] = 'Los ganadores del concurso ya han sido asignados
(Pueden ser modificados únicamente antes de' . $msg . ')
';
$return['msg'] = '¡Felicidades! Se asignaron exitosamente los ganadores';
}
} else {
$return['error'] = 'No fue posible asignar los ganadores';
}
break;
}
break;
}
}
$return['json'] = json_encode($return);
echo json_encode($return);
/********** AL MOMENTO *********/
function alMomento($pdo,$concurso,$etapa, $orden = 'apellidos'){
$error = false;
$divAlMomento = '';
$titulo = array();
switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo,$etapa))){
case 'REGISTRO':
break;
case 'REVISION':
$titulo[] = 'Revisores';
break;
case 'EVALUACION':
$titulo[] = 'Jurado Evaluador';
$titulo[] = 'Docentes / Administrativos';
break;
default :
$error = true;
}
if (!$error) {
$divAlMomento .= '
' . $titulo[0] . '
';
$asignados = Etapa::getUsuariosAsignados($pdo, $concurso, $etapa, $orden);
if (count($asignados) <= 10 )
$numCol = count($asignados);
else
$numCol = ceil(count($asignados) / 2);
$cont = 1;
$cambiaColumna = true;
if (count($asignados) > 0){
foreach ($asignados as $asignado){
switch (mb_strtoupper($orden)){
case 'NOMBRE':
$usuario = $asignado['nombre'] . ' ' . $asignado['apellidos'];
break;
case 'APELLIDOS':
$usuario = $asignado['apellidos'] . ' ' . $asignado['nombre'];
break;
default:
$usuario = '';
}
if($cambiaColumna){
$divAlMomento .= '
';
$cambiaColumna = false;
}
$divAlMomento .= '
';
$total = Etapa::totalFaltantes($pdo, $asignado['idusuario'], $etapa);
if ($total > 0){
$divAlMomento .= '
Faltan
' . Fechas::dosDigitos($total) . '
proyectos
';
} else
$divAlMomento .= '
';
$divAlMomento .= '
' . $usuario . '
';
$cont++;
if ($cont > $numCol){
$cambiaColumna = true;
$cont = 1;
}
if($cambiaColumna)
$divAlMomento .= '
';
}
if(!$cambiaColumna)
$divAlMomento .= '
';
}
$divAlMomento .= '
';
if (isset($titulo[1])){
$usuarios = Etapa::getUsuariosValoraciones($pdo, $concurso, $etapa, 'apellidos');
if (count($usuarios) > 0){
$divAlMomento .= '
' . $titulo[1] . '
';
if (count($asignados) <= 10 )
$numCol = count($usuarios);
else
$numCol = ceil(count($usuarios) / 2);
$cont = 1;
$cambiaColumna = true;
if (count($usuarios) > 0){
foreach ($usuarios as $usr){
switch (mb_strtoupper($orden)){
case 'NOMBRE':
$usuario = $usr['nombre'] . ' ' . $usr['apellidos'];
break;
case 'APELLIDOS':
$usuario = $usr['apellidos'] . ' ' . $usr['nombre'];
break;
default:
$usuario = '';
}
if($cambiaColumna){
$divAlMomento .= '
';
$cambiaColumna = false;
}
$divAlMomento .= '
';
$cont++;
if ($cont > $numCol){
$cambiaColumna = true;
$cont = 1;
}
if($cambiaColumna)
$divAlMomento .= '
';
}
if(!$cambiaColumna)
$divAlMomento .= '
';
}
$divAlMomento .= '
';
}
}
return $divAlMomento;
} else
return 'error';
}
/********** GRÁFICAS **********/
function graficas($pdo, $concurso, $etapa){
$graficas = array();
$divRubros = '';
$cont = 0;
$rubros = Etapa::getRubrosXEtapa($pdo, $etapa);
if (count($rubros) > 0){
$graficas = array('rubros' => '', 'graficas' => '', 'leyenda' => '');
foreach ($rubros as $rubro){
$divRubros .= '' . $rubro['rubro'] . '
';
$preguntas = Etapa::getPreguntasXRubro($pdo, $rubro['idrubro']);
foreach ($preguntas as $pregunta){
if (Resultados::esPromediable($pdo, $pregunta['tipo'])){
$cont++;
$divRubros .= '
' . $pregunta['pregunta'] . '
';
}
}
$divRubros .= '
';
}
$graficas['rubros'] = $divRubros;
$divLeyenda = '';
switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo,$etapa))){
case 'REVISION':
$proyectos = Proyecto::getProyectosAutorizados($pdo, $concurso, 0, 'clave');
break;
case 'EVALUACION':
$proyectos = Proyecto::getProyectosFinalistas($pdo, $concurso, 0, 'clave');
break;
default :
$proyectos = array();
}
$colores = obtenerColores($proyectos);
$col = 1;
$divide = ceil(count($colores) / 2);
$cambiaColumna = true;
for ($cont =0; $cont < count($colores); $cont++){
if($cambiaColumna){
$divLeyenda .= '';
$cambiaColumna = false;
}
$divLeyenda .= '
' . $proyectos[$cont]['clave'] . '
' . $proyectos[$cont]['proyecto'] . '
';
$col++;
if ($col > $divide){
$cambiaColumna = true;
$col = 1;
}
if($cambiaColumna)
$divLeyenda .= '
';
}
if(!$cambiaColumna)
$divLeyenda .= '';
$graficas['leyenda'] = $divLeyenda;
}
return $graficas;
}
function obtenerColores($proyectos){
$coloresDef = array();
$colores = Colores::chartColors();
if (count($proyectos) <= count($colores)){
for ($cont = 0; $cont < count($proyectos); $cont++){
array_push($coloresDef, $colores[$cont]);
}
} else {
$cont = 0;
for ($proy = 0; $proy < count($proyectos); $proy++){
array_push($coloresDef, $colores[$cont]);
$cont++;
if ($cont == (count($colores) - 1))
$cont = 0;
}
}
return $coloresDef;
}
/********** PROYECTOS **********/
function listadoProyectos($pdo, $concurso, $etapa){
$listaProyectos = '';
switch (mb_strtoupper(Etapa::getClaveEtapaXID($pdo,$etapa))){
case 'REVISION':
$proyectos = Proyecto::getProyectosAutorizados($pdo, $concurso, 0, 'nombre');
break;
case 'EVALUACION':
$proyectos = Proyecto::getProyectosFinalistas($pdo, $concurso, 0, 'nombre');
break;
default :
$proyectos = array();
}
if (count($proyectos) > 0){
foreach ($proyectos as $proyecto){
$listaProyectos .= '' . $proyecto['clave'] . '-' . $proyecto['proyecto'] . '';
}
return $listaProyectos;
} else
return 'error';
}
/********** FINALISTAS / GANADORES **********/
function finalistas($pdo, $id, $fechaFinalistas, $activo, $acceso){
$divFinalistas = '';
if ($fechaFinalistas['fechas'] == 'Por definir')
return '
¡Importante!
No ha sido asignada la fecha de publicación de finalistas
';
else {
$asigna = false;
$flag = false;
$categorias = Concurso::getCategoriasConcurso($pdo, $id);
$finalistas = array();
if (count($categorias) > 0) {
if ($activo && !$fechaFinalistas['activo']){
if ($acceso){
$asigna = true;
$despliega = '';
if (count($categorias) < 3)
$despliega = 'd-flex flex-row';
else
$despliega = 'card-columns';
$divFinalistas .= '';
$col = 0;
$disabled = '';
$existenFinalistas = Proyecto::getProyectosFinalistas($pdo, $id, 0, 'nombre');
if (count($existenFinalistas) > 0){
$flag = true;
$disabled = 'disabled';
}
foreach ($categorias as $categoria){
$divFinalistas .= '
' . $categoria['categoria'] . '
';
$row = 0;
$col++;
$autorizados = Proyecto::getProyectosAutorizados($pdo, $id, $categoria['idcategoria'], 'nombre');
$finalistas = Proyecto::getProyectosFinalistas($pdo, $id, $categoria['idcategoria'], 'nombre');
foreach ($autorizados as $proyecto) {
$divFinalistas .= '
' . $proyecto['clave'] . ' - '. $proyecto['proyecto'] . '
';
if (in_array($proyecto['idproyecto'], array_column($finalistas, 'idproyecto')))
$check = 'checked';
else
$check = '';
$divFinalistas .= '
';
$divFinalistas .= '
';
$row++;
}
$divFinalistas .= '
';
}
$divFinalistas .= '
';
if ($flag)
$divFinalistas .= '';
else
$divFinalistas .= '';
if ($flag)
$estilo = 'style="display:none;"';
else
$estilo = '';
$divFinalistas .= '
';
} else {
$divFinalistas = '
¡Lo sentimos!
Los finalistas aún no han sido publicados
';
}
} else {
$despliega = '';
if (count($categorias) < 3)
$despliega = 'd-flex flex-row';
else
$despliega = 'card-columns';
$divFinalistas .= '';
foreach ($categorias as $categoria){
$finalistas = Proyecto::getProyectosFinalistas($pdo, $id, $categoria['idcategoria'], 'clave');
$divFinalistas .= '
' . $categoria['categoria'] . '
';
$cont = 0;
foreach ($finalistas as $finalista){
$divFinalistas .= '
';
$cont++;
}
$divFinalistas .= '
';
}
$divFinalistas .= '
';
}
if ($asigna){
if ($flag)
return 'Los finalistas del concurso ya han sido asignados
(Pueden ser modificados únicamente antes del ' . Fechas::romanizaFecha($fechaFinalistas['fechas']) .')
' . $divFinalistas;
else
return 'Selecciona a los finalistas del concurso para poder hacerlos públicos
' . $divFinalistas;
} else
return $divFinalistas;
} else
return 'error';
}
}
function ganadores($pdo, $id, $fechaGanadores, $activo, $acceso){
$divGanadores = '';
if ($fechaGanadores['fechas'] == 'Por definir')
return '
¡Importante!
No ha sido asignada la fecha de publicación de ganadores
';
else {
$asigna = false;
$flag = false;
$categorias = Concurso::getCategoriasConcurso($pdo, $id);
$ganadores = array();
if (count($categorias) > 0) {
if ($activo && !$fechaGanadores['activo']){
if ($acceso){
$asigna = true;$despliega = '';
if (count($categorias) < 3)
$despliega = 'd-flex flex-row';
else
$despliega = 'card-columns';
$divGanadores .= '';
foreach ($categorias as $categoria){
$divGanadores .= '
' . $categoria['categoria'] . '
';
$row = 0;
$color;
$finalistas = Proyecto::getProyectosFinalistas($pdo, $id, $categoria['idcategoria'], 'nombre');
$ganadores = Proyecto::getProyectosGanadores($pdo, $categoria['idcategoria'],$id);
$disabled = '';
if (count($ganadores) > 0){
$flag = true;
$disabled = 'disabled';
}
foreach ($finalistas as $proyecto) {
$lugar = verificalugar($ganadores, $proyecto['idproyecto']);
if ($proyecto['categoria'] == $categoria['idcategoria']) {
$divGanadores .= '
' . $proyecto['clave'] . ' - ' . $proyecto['proyecto'] . '
';
for ($cont = 1; $cont <= 3; $cont++){
if ($lugar == $cont)
$check = 'checked';
else
$check = '';
$divGanadores .= '
';
}
$divGanadores .= '
';
$row++;
}
}
$divGanadores .= '
';
}
$divGanadores .= '
';
if ($flag)
$divGanadores .= '';
else
$divGanadores .= '';
if ($flag)
$estilo = 'style="display:none;"';
else
$estilo = '';
$divGanadores .= '
';
} else {
$divGanadores = '
¡Lo sentimos!
Los ganadores aún no han sido publicados
';
}
} else {
$divGanadores .= '';
foreach ($categorias as $categoria){
$ganadores = Proyecto::getProyectosGanadores($pdo, $categoria['idcategoria'],$id);
$divGanadores .= '
' . $categoria['categoria'] . '
';
for ($cont = 0; $cont < count($ganadores); $cont++){
if ($cont < (count($ganadores) -1))
$borde = 'lugarBorde';
else
$borde = '';
$divGanadores .= '
' . $ganadores[$cont]['lugar'] . '°
' . $ganadores[$cont]['clave'] . '
' . $ganadores[$cont]['proyecto'] . '
';
}
$divGanadores .= '
';
}
$divGanadores .= '
';
}
if ($asigna){
if ($flag)
return 'Los ganadores del concurso ya han sido asignados
(Pueden ser modificados únicamente antes del ' . Fechas::romanizaFecha($fechaGanadores['fechas']) . ')
' . $divGanadores;
else
return 'Selecciona a los ganadores del concurso para poder hacerlos públicos
' . $divGanadores;
} else
return $divGanadores;
} else
return 'error';
}
}
function lugar($lugar){
$datos= array();
switch ($lugar){
case 1: $datos = array('color' => 'gold', 'orden' => 'order-1 order-sm-2', 'bloque' => 'Central'); break;
case 2: $datos = array('color' => 'silver', 'orden' => 'order-2 order-sm-1', 'bloque' => 'Izq'); break;
case 3: $datos = array('color' => 'bronze', 'orden' => 'order-3 order-sm-3', 'bloque' => 'Der'); break;
}
return $datos;
}
function verificalugar($ganadores, $idproyecto){
$lugar = 0;
if (in_array($idproyecto, array_column($ganadores, 'idproyecto'))){
$cont = 0;
while ($cont < count($ganadores)){
if ($ganadores[$cont]['idproyecto'] == $idproyecto){
$lugar = $ganadores[$cont]['lugar'];
$cont = count($ganadores);
} else
$cont++;
}
}
return $lugar;
}
/********** INSERT, DELETE, UPDATE **********/
function actualizaFinalista($pdo, $proyecto, $status){
$actualizado = false;
$stmt = $pdo->prepare('Select * from cidit_fu_finalistas(:proyecto,:status)');
$stmt->bindParam(':proyecto', $proyecto);
$stmt->bindParam(':status', $status, PDO::PARAM_BOOL);
if($stmt->execute())
$actualizado = true;
$stmt->closeCursor();
$stmt = null;
return $actualizado;
}
function agregaGanador($pdo, $categoria, $proyecto, $lugar){
$agregado = false;
$stmt = $pdo->prepare('Select * from cidit_fi_ganador(:categoria,:proyecto,:lugar)');
$stmt->bindParam(':categoria', $categoria);
$stmt->bindParam(':proyecto', $proyecto);
$stmt->bindParam(':lugar', $lugar);
if($stmt->execute())
$agregado = true;
$stmt->closeCursor();
$stmt = null;
return $agregado;
}
function eliminaGanador($pdo, $categoria, $proyecto, $lugar){
$eliminado = false;
$stmt = $pdo->prepare('Select * from cidit_fd_ganador(:categoria,:proyecto,:lugar)');
$stmt->bindParam(':categoria', $categoria);
$stmt->bindParam(':proyecto', $proyecto);
$stmt->bindParam(':lugar', $lugar);
if($stmt->execute())
$eliminado = true;
$stmt->closeCursor();
$stmt = null;
return $eliminado;
}