123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842 |
- <?php
- require_once '../classes/Concurso.php';
- require_once '../classes/Etapa.php';
- require_once '../classes/Proyecto.php';
- require_once '../classes/Fechas.php';
- require_once '../classes/Colores.php';
- require_once '../classes/Resultados.php';
- require_once '../include/bd_pdo.php';
- if(!isset($_POST['id']) && !isset($_POST['etapa']) && !isset($_POST['tipo'])){
- $return['error'] = 'error';
- } else {
- switch ($_POST['tipo']){
- case 1: //DataList Concursos
- $actual = false;
- if ($_POST['actual'] === 'true')
- $actual = true;
- $edicion = (bool)base64_decode($_POST['pestana']);
- $fueraPeriodo = false;
- if ($actual){
- date_default_timezone_set('America/Mexico_City');
- $hoy = strtotime(date('Y-m-d'));
- $fechas = Etapa::getFechasXEtapa($pdo, $_POST['id'],$_POST['etapa']);
- if (count($fechas) > 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 .= '<div class="elemento d-flex flex-row align-items-center justify-content-start p-2" ><div class="py-1 px-3 bg-azul' . $cont . '">' . $proyecto['clave'] . '</div><div class="pl-2">' . $proyecto['proyecto'] . '</div></div>';
- 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<br><div class="small">(Pueden ser modificados únicamente antes de' . $msg . ')</div>';
- $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<br><div class="small">(Pueden ser modificados únicamente antes de' . $msg . ')</div>';
- $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 .= '<div class="d-flex flex-column align-items-center mt-2 px-2">
- <h4 class="text-center">' . $titulo[0] . '</h4>
- <div class="pleca"></div>
- <div class="row justify-content-around w-100 px-4 mt-3">';
- $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 .= '<div class="col-sm-6 justify-content-start mb-2">';
- $cambiaColumna = false;
- }
- $divAlMomento .= '<div class="d-flex flex-row justify-content-start align-items-center my-2">
- <div class="d-flex flex-column bg-primary text-white justify-content-center align-items-center mr-3 text-center faltantes" onclick="faltantes(this);" data-id="' . $asignado['idusuario'] . '">';
- $total = Etapa::totalFaltantes($pdo, $asignado['idusuario'], $etapa);
- if ($total > 0){
- $divAlMomento .= '<div class="w-100 small">Faltan</div>
- <div class="indivisa-text-bold">' . Fechas::dosDigitos($total) . '</div>
- <div class="w-100 small">proyectos</div>';
- } else
- $divAlMomento .= '<div class="ing-aceptar text-white"></div>';
- $divAlMomento .= '</div>
- <div class="nombres flex-fill">' . $usuario . '</div>
- </div>';
- $cont++;
- if ($cont > $numCol){
- $cambiaColumna = true;
- $cont = 1;
- }
- if($cambiaColumna)
- $divAlMomento .= '</div>';
- }
- if(!$cambiaColumna)
- $divAlMomento .= '</div>';
- }
- $divAlMomento .= '</div>
- </div>';
- if (isset($titulo[1])){
- $usuarios = Etapa::getUsuariosValoraciones($pdo, $concurso, $etapa, 'apellidos');
- if (count($usuarios) > 0){
- $divAlMomento .= '<div class="d-flex flex-column align-items-center mt-2 px-2">
- <h4 class="text-center">' . $titulo[1] . '</h4>
- <div class="pleca"></div>
- <div class="row justify-content-around w-100 px-4 mt-3">';
- 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 .= '<div class="col-sm-6 justify-content-start mb-2">';
- $cambiaColumna = false;
- }
- $divAlMomento .= '<div class="d-flex flex-row justify-content-start align-items-center mb-2">
- <div class="ing-estrella1 mr-3"></div><div class="nombres">' . $usuario . '</div>
- </div>';
- $cont++;
- if ($cont > $numCol){
- $cambiaColumna = true;
- $cont = 1;
- }
- if($cambiaColumna)
- $divAlMomento .= '</div>';
- }
- if(!$cambiaColumna)
- $divAlMomento .= '</div>';
- }
- $divAlMomento .= '</div>
- </div>';
- }
- }
- 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 .= '<div class="w-100 indivisa-text-bold text-left display-6 indivisa-text-bold-italic text-white mt-3 mb-2 pb-1 px-4 bg-primary">' . $rubro['rubro'] . '</div>
- <div class="cat">';
- $preguntas = Etapa::getPreguntasXRubro($pdo, $rubro['idrubro']);
- foreach ($preguntas as $pregunta){
- if (Resultados::esPromediable($pdo, $pregunta['tipo'])){
- $cont++;
- $divRubros .= '<div class="elem text-left pl-4 py-1 bordeInf" data-id="' . $pregunta['idpregunta'] . '" data-con="' . $concurso . '" onclick="grafica(this)">' . $pregunta['pregunta'] . '</div>';
- }
- }
- $divRubros .= '</div>';
- }
- $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 .= '<div class="col-6">';
- $cambiaColumna = false;
- }
- $divLeyenda .= '<div class="d-flex flex-row justify-content-start align-items-start align-items-center my-1">
- <div class="etiqueta text-white rounded p-2 mr-3" style="background:' . $colores[$cont] . '">' . $proyectos[$cont]['clave'] . '</div>
- <div class="text-primary ">' . $proyectos[$cont]['proyecto'] . '</div>
- </div>';
- $col++;
- if ($col > $divide){
- $cambiaColumna = true;
- $col = 1;
- }
- if($cambiaColumna)
- $divLeyenda .= '</div>';
- }
- if(!$cambiaColumna)
- $divLeyenda .= '</div>';
- $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 .= '<li data-id="' . $proyecto['idproyecto'] . '">' . $proyecto['clave'] . '-' . $proyecto['proyecto'] . '</li>';
- }
- return $listaProyectos;
- } else
- return 'error';
- }
- /********** FINALISTAS / GANADORES **********/
- function finalistas($pdo, $id, $fechaFinalistas, $activo, $acceso){
- $divFinalistas = '';
- if ($fechaFinalistas['fechas'] == 'Por definir')
- return '<div class="fondoAnuncio mt-2">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="text-primary text-center mt-5 tit">¡Importante!</div>
- <div class="text-primary text-center small m-3 msg">No ha sido asignada la fecha de publicación de finalistas</div>
- <div class="display-1 text-danger mb-4 ing-no-cargado"></div>
- </div>
- </div>';
- 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 .= '<div class="' . $despliega . ' categorias">';
- $col = 0;
- $disabled = '';
- $existenFinalistas = Proyecto::getProyectosFinalistas($pdo, $id, 0, 'nombre');
- if (count($existenFinalistas) > 0){
- $flag = true;
- $disabled = 'disabled';
- }
- foreach ($categorias as $categoria){
- $divFinalistas .= '<div class="card mb-3">
- <h4 class="text-center catSelec">' . $categoria['categoria'] . '</h4>
- <div class="w-100 d-flex flex-row justify-content-between">
- <div class="w-75 indivisa-text-bold text-white bg-primary align-items-center"><div class="p-3">Proyecto</div></div>
- <div class="w-25 d-flex flex-row justify-content-center align-content-center">
- <div class="flex-fill d-flex flex-column justify-content-center indivisa-text-bold text-center text-white ' . Colores::getBGColor($col) . '"><div>Finalistas</div></div>
- </div>
- </div>';
- $row = 0;
- $col++;
- $autorizados = Proyecto::getProyectosAutorizados($pdo, $id, $categoria['idcategoria'], 'nombre');
- $finalistas = Proyecto::getProyectosFinalistas($pdo, $id, $categoria['idcategoria'], 'nombre');
- foreach ($autorizados as $proyecto) {
- $divFinalistas .= '<div class="w-100 d-flex flex-row justify-content-between renglon py-2">
- <div class="w-75 text-primary"><b>' . $proyecto['clave'] . '</b> - '. $proyecto['proyecto'] . '</div>
- <div class="w-25 d-flex flex-row justify-content-center">';
- if (in_array($proyecto['idproyecto'], array_column($finalistas, 'idproyecto')))
- $check = 'checked';
- else
- $check = '';
- $divFinalistas .= '<div class="flex-fill text-center align-self-center">
- <input type="checkbox" id="cat' . $categoria['idcategoria'] . '-row' . $row . '" name="cat' . $categoria['idcategoria'] . '-row' . $row . '" data-table="' . $categoria['idcategoria'] . '" value="' . $categoria['idcategoria'] . '-' . $proyecto['idproyecto'] . '" ' . $check .' ' . $disabled . '/>
- <label for="cat' . $categoria['idcategoria'] . '-row' . $row . '" class="ing-finalistas elemSelec final ';
- if ($check == '' && $flag)
- $divFinalistas .= ' disabledElem ';
- $divFinalistas .= '"></label>
- </div>';
- $divFinalistas .= '</div>
- </div>';
- $row++;
- }
- $divFinalistas .= '</div>';
- }
- $divFinalistas .= '</div>
- <div id="errorLblAsignar" class="mt-3 indivisa-text-bold-italic display-6 text-center" style="display:none"></div>
- <div id="secBtns">
- <div class="d-flex mx-auto justify-content-center pt-3">';
- if ($flag)
- $divFinalistas .= '<button type="button" class="btn btn-ing btn-outline-primary arrow mx-2" id="btnAsignar" data-tipo="1">Editar</button>';
- else
- $divFinalistas .= '<button type="button" class="btn btn-ing btn-outline-primary arrow mx-2" id="btnAsignar" data-tipo="1">Publicar</button>';
- if ($flag)
- $estilo = 'style="display:none;"';
- else
- $estilo = '';
- $divFinalistas .= '<button type="reset" class="btn btn-ing btn-outline-danger arrow mx-2" id="btnLimpiar" data-tipo="1" ' . $estilo .'>Cancelar</button>
- </div>
- </div>';
- } else {
- $divFinalistas = '<div class="fondoAnuncio mt-2">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="text-primary text-center mt-5 tit">¡Lo sentimos!</div>
- <div class="text-primary text-center small m-3 msg">Los finalistas aún no han sido publicados</div>
- <div class="display-1 text-danger mb-4 ing-no-cargado"></div>
- </div>
- </div>';
- }
- } else {
- $despliega = '';
- if (count($categorias) < 3)
- $despliega = 'd-flex flex-row';
- else
- $despliega = 'card-columns';
- $divFinalistas .= '<div class="' . $despliega . ' categorias">';
- foreach ($categorias as $categoria){
- $finalistas = Proyecto::getProyectosFinalistas($pdo, $id, $categoria['idcategoria'], 'clave');
- $divFinalistas .= '<div class="card mb-3">
- <div class="indivisa-text-bold display-6 text-center titCategoria mb-4">' . $categoria['categoria'] . '</div>';
- $cont = 0;
- foreach ($finalistas as $finalista){
- $divFinalistas .= '<div class="d-flex flex-row align-items-center mb-2">
- <label class="colA ' . Colores::getBGColor($cont) . ' text-primary indivisa-text-bold pt-2 mr-3">' . $finalista['clave'] . '</label>
- <label class="text-primary flex-grow-1">' . $finalista['proyecto'] . '</label>
- </div>';
- $cont++;
- }
- $divFinalistas .= '</div>';
- }
- $divFinalistas .= '</div>';
- }
- if ($asigna){
- if ($flag)
- return '<div id="msgPrincipal" class="indivisa-text-italic display-5 text-center text-primary pb-4">Los finalistas del concurso ya han sido asignados<br><div class="small">(Pueden ser modificados únicamente antes del ' . Fechas::romanizaFecha($fechaFinalistas['fechas']) .')</div></div>' . $divFinalistas;
- else
- return '<div id="msgPrincipal" class="indivisa-text-italic display-5 text-center text-primary pb-4">Selecciona a los finalistas del concurso para poder hacerlos públicos</div>' . $divFinalistas;
- } else
- return $divFinalistas;
- } else
- return 'error';
- }
- }
- function ganadores($pdo, $id, $fechaGanadores, $activo, $acceso){
- $divGanadores = '';
- if ($fechaGanadores['fechas'] == 'Por definir')
- return '<div class="fondoAnuncio mt-2">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="text-primary text-center mt-5 tit">¡Importante!</div>
- <div class="text-primary text-center small m-3 msg">No ha sido asignada la fecha de publicación de ganadores</div>
- <div class="display-1 text-danger mb-4 ing-no-cargado"></div>
- </div>
- </div>';
- 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 .= '<div class="' . $despliega . ' categorias">';
- foreach ($categorias as $categoria){
- $divGanadores .= '<div class="card mb-3">
- <h4 class="text-center catSelec">' . $categoria['categoria'] . '</h4>
- <div class="w-100 d-flex flex-row justify-content-between">
- <div class="w-75 indivisa-text-bold text-white bg-primary align-items-center"><div class="p-3">Proyecto</div></div>
- <div class="w-25 d-flex flex-row justify-content-center align-content-center">
- <div class="flex-fill d-flex flex-column justify-content-center indivisa-text-bold text-center text-white bg-azul1"><div>1°</div></div>
- <div class="flex-fill d-flex flex-column justify-content-center indivisa-text-bold text-center text-white bg-azul2"><div>2°</div></div>
- <div class="flex-fill d-flex flex-column justify-content-center indivisa-text-bold text-center text-white bg-azul3"><div>3°</div></div>
- </div>
- </div>';
- $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 .= '<div class="w-100 d-flex flex-row justify-content-between renglon py-2">
- <div class="w-75 text-primary"><b>' . $proyecto['clave'] . '</b> - ' . $proyecto['proyecto'] . '</div>
- <div class="w-25 d-flex flex-row justify-content-center">';
- for ($cont = 1; $cont <= 3; $cont++){
- if ($lugar == $cont)
- $check = 'checked';
- else
- $check = '';
- $divGanadores .= '<div class="flex-fill text-center align-self-center">
- <input type="radio" id="cat' . $categoria['idcategoria'] . '-row' . $row . '-' . $cont . '" name="cat' . $categoria['idcategoria'] . '-row' . $row . '" data-table="' . $categoria['idcategoria'] . '" data-col="' . $cont . '" value="' . $categoria['idcategoria'] . '-' . $proyecto['idproyecto'] . '" ' . $check .' ' . $disabled . '/>
- <label for="cat' . $categoria['idcategoria'] . '-row' . $row . '-' . $cont . '" class="ing-insignia3 elemSelec ' . Colores::getLugarColor($cont) . ' ';
- if ($check == '' && $flag)
- $divGanadores .= ' disabledElem ';
- $divGanadores .= '"></label>
- </div>';
- }
- $divGanadores .= '</div>
- </div>';
- $row++;
- }
- }
- $divGanadores .= '</div>';
- }
- $divGanadores .= '</div>
- <div id="errorLblAsignar" class="mt-3 indivisa-text-bold-italic display-6 text-center" style="display:none"></div>
- <div id="secBtns">
- <div class="d-flex mx-auto justify-content-center pt-3">';
- if ($flag)
- $divGanadores .= '<button type="button" class="btn btn-ing btn-outline-primary arrow mx-2" id="btnAsignar" data-tipo="2">Editar</button>';
- else
- $divGanadores .= '<button type="button" class="btn btn-ing btn-outline-primary arrow mx-2" id="btnAsignar" data-tipo="2">Publicar</button>';
- if ($flag)
- $estilo = 'style="display:none;"';
- else
- $estilo = '';
- $divGanadores .= '<button type="reset" class="btn btn-ing btn-outline-danger arrow mx-2" id="btnLimpiar" data-tipo="2" ' . $estilo .'>Cancelar</button>
- </div>
- </div>';
- } else {
- $divGanadores = '<div class="fondoAnuncio mt-2">
- <div class="d-flex flex-column justify-content-center align-items-center">
- <div class="text-primary text-center mt-5 tit">¡Lo sentimos!</div>
- <div class="text-primary text-center small m-3 msg">Los ganadores aún no han sido publicados</div>
- <div class="display-1 text-danger mb-4 ing-no-cargado"></div>
- </div>
- </div>';
- }
- } else {
- $divGanadores .= '<div class="row align-items-center justify-content-end">';
- foreach ($categorias as $categoria){
- $ganadores = Proyecto::getProyectosGanadores($pdo, $categoria['idcategoria'],$id);
- $divGanadores .= '<div class="col-sm-6">
- <div class="d-flex flex-row justify-content-center align-items-end px-5">
- <div>
- <div class="grad2 text-center"><img class="segundo" src="img/secciones/reportes/copa2.svg"></div>
- <div class="flex-fill bg-azul5 segundo px-4 pt-1">
- <svg viewbox="0 0 100 100"><path d="M0,0 a1,1 0 0,0 100,0" class="medioCirc" /><text x="40" y="30" class="indivisa-text-black display-6 textMedioCirc">2°</text></svg>
- </div>
- </div>
- <div>
- <div class="grad1 text-center"><img class="primero" src="img/secciones/reportes/copa1.svg"></div>
- <div class="flex-fill bg-azul4 primero px-4 pt-1">
- <svg viewbox="0 0 100 100"><path d="M0,0 a1,1 0 0,0 100,0" class="medioCirc" /><text x="40" y="30" class="indivisa-text-black display-6 textMedioCirc">1°</text></svg>
- </div>
- </div>
- <div>
- <div class="grad3 text-center"><img class="tercero" src="img/secciones/reportes/copa3.svg"></div>
- <div class="flex-fill bg-azul6 tercero px-4 pt-1">
- <svg viewbox="0 0 100 100"><path d="M0,0 a1,1 0 0,0 100,0" class="medioCirc" /><text x="40" y="30" class="indivisa-text-black display-6 textMedioCirc">3°</text></svg>
- </div>
- </div>
- </div>
- <div class="w-100 bg-primary p-2 lugarCat text-center text-white">' . $categoria['categoria'] . '</div>
- <div class="container">';
- for ($cont = 0; $cont < count($ganadores); $cont++){
- if ($cont < (count($ganadores) -1))
- $borde = 'lugarBorde';
- else
- $borde = '';
- $divGanadores .= '<div class="row px-5">
- <div class="grad' . $ganadores[$cont]['lugar'] . ' lugarNum col-sm-2 text-primary text-center">' . $ganadores[$cont]['lugar'] . '°</div>
- <div class="col-sm-10 d-flex flex-row justify-content-start align-items-center text-primary px-0 ' . $borde .'">
- <div class="lugarClave mx-2">' . $ganadores[$cont]['clave'] . '</div><div class="mx-2">' . $ganadores[$cont]['proyecto'] . '</div>
- </div>
- </div>';
- }
- $divGanadores .= '</div>
- </div>';
- }
- $divGanadores .= '</div>';
- }
- if ($asigna){
- if ($flag)
- return '<div id="msgPrincipal" class="indivisa-text-italic display-5 text-center text-primary pb-4">Los ganadores del concurso ya han sido asignados<br><div class="small">(Pueden ser modificados únicamente antes del ' . Fechas::romanizaFecha($fechaGanadores['fechas']) . ')</div></div>' . $divGanadores;
- else
- return '<div id="msgPrincipal" class="indivisa-text-italic display-5 text-center text-primary pb-4">Selecciona a los ganadores del concurso para poder hacerlos públicos</div>' . $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;
- }
|