From ef33efd0672fad371f77955867a4d4f7a7995659 Mon Sep 17 00:00:00 2001 From: Vladimir H Date: Wed, 17 Dec 2008 23:10:02 -0600 Subject: [PATCH] =?utf8?q?Agregada=20lista=20de=20horarios=20y=20gesti?= =?utf8?q?=C3=B3n=20por=20instructor.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- contenido/admin+reportes.php | 2 +- contenido/admin.php | 2 +- contenido/usuario+horarios.php | 358 +++++++++++++++++++++++++++-------------- 3 files changed, 242 insertions(+), 120 deletions(-) diff --git a/contenido/admin+reportes.php b/contenido/admin+reportes.php index 8401c2a..a77e635 100644 --- a/contenido/admin+reportes.php +++ b/contenido/admin+reportes.php @@ -80,7 +80,7 @@ function OBTENER_TIPO_R($taller,$dia, $hora) { unset ($nombre); ereg("([^ ]*)", $uname, $nombre); $uinfo = mysql_result($resultados,$i,"username"); - $msj = $msj.$nombre[0]; + $msj = $msj.$nombre[0]."
"; } return "".$msj.""; }else { diff --git a/contenido/admin.php b/contenido/admin.php index 7ced2b3..d80b961 100644 --- a/contenido/admin.php +++ b/contenido/admin.php @@ -27,7 +27,7 @@ function displayUsers(){ $ulevel = mysql_result($result,$i,"userlevel"); $email = mysql_result($result,$i,"email"); $time = date("d-m-y\nh:ia", mysql_result($result,$i,"timestamp")); - $verHorario = CREAR_LINK_GET("horarios&nombre=$uname&dpto=". mysql_result($result,$i,"departamento")."&tipo=". mysql_result($result,$i,"tipo"), "Ver", "Le mostrará la página de horarios adecuada para este Instructor") ; + $verHorario = CREAR_LINK_GET("horarios&user=$uname", "Ver", "Le mostrará la página de horarios adecuada para este Instructor") ; //$horarios ='Ver'; $uname = ''.$uname.''; echo "$uname$nombre$ulevel$email$time$verHorario"; diff --git a/contenido/usuario+horarios.php b/contenido/usuario+horarios.php index fd88573..5691fcb 100644 --- a/contenido/usuario+horarios.php +++ b/contenido/usuario+horarios.php @@ -1,56 +1,172 @@ + + +
Taller a asignar: + +
+ + + + '; +} + /*****************************************************************************************************************************************************/ //Se nos pide registrar un instructor? -function HORARIO_registrar_instructor($sUsername, $sTaller, $sDia, $sPosicion) { +function HORARIO_registrar_instructor() { global $session, $link, $base, $motor, $usuario, $clave; if (!$session->isAdmin()) {die("Lo siento, Ud. esta intentando registrar un Instructor sin ser administrador");} - $_SESSION['nombre'] = $sUsername; - $_SESSION['taller'] = $sTaller; - $_SESSION['dia'] = $sDia; - $_SESSION['posicion'] = $sPosicion; - - echo "

Visor de Horarios - Procesando la asignación de horarios para ".$_SESSION['nombre']."

"; + echo "

Visor de Horarios - Procesando la asignación de horarios para ".$_SESSION['user']."

"; - if(!$_SESSION['nombre']) { - echo '

Registro fallido del Instructor

'; + $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:
' . mysql_error() . '
'); + mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe'); + + //Si es encargado de taller no importa si tiene otro laboratorio + $num_rows = 0; + if ( $_SESSION['tipo'] != 2 ) { + //Verificamos que no tenga otro laboratorio al mismo tiempo. + $q = "SELECT * FROM horarios WHERE username='". $_SESSION['user'] ."' AND dia='".$_SESSION['dia']."' AND posicion='".$_SESSION['posicion']."';"; + //echo $q."
"; + $resultados = @mysql_query($q, $link) or die('!->Ocurrió un error mientras se revisaba la disponibilidad del instructor.'); + $num_rows = mysql_numrows($resultados); + //$num_rows > 0 significa que el muchacho ya tiene asignado otro laboratorio a la misma hora :) + if ($num_rows > 0) { + echo + ' +

Registro de Intructor abortado


+ Lo sentimos, pero este Instructor ya tiene otros laboratorios asignados el mismo día y hora. + '; + echo CONTINUAR; return; + } } - $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:
' . mysql_error() . '
'); - mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe'); - //Verificamos que no tenga otro laboratorio al mismo tiempo. - $q = "SELECT * FROM horarios WHERE username='". $_SESSION['nombre'] ."' AND taller='". $_SESSION['taller'] ."' AND dia='".$_SESSION['dia']."' AND posicion='".$_SESSION['posicion']."';"; - //echo $q."
"; - $resultados = @mysql_query($q, $link) or die('!->Ocurrió un error mientras se revisaba la disponibilidad del instructor.'); + //Ok, no tiene otro laboratorio simultaneo, entonces verificamos que no haya nadie mas ya asignado a ese taller + //Si no es asistente, entonces contar todos los que hay que NO sean asistentes. + //Tampoco hay que contar los Encargados de Taller + switch ( $_SESSION['tipo'] ) { + //Asistente de Catedratico, contar solo asistentes en ese taller. + case 0: + $q = "SELECT * FROM horarios, users WHERE horarios.username = users.username AND tipo = 0 AND taller='". $_SESSION['taller'] ."' AND dia='".$_SESSION['dia']."' AND posicion='".$_SESSION['posicion']."';"; + break; + //Asistente de Taller + Instructor, contar todo menos asistentes y encargados. + case 1: + case 3: + $q = "SELECT * FROM horarios, users WHERE horarios.username = users.username AND tipo != 0 AND tipo != 2 AND taller='". $_SESSION['taller'] ."' AND dia='".$_SESSION['dia']."' AND posicion='".$_SESSION['posicion']."';"; + break; + //Encargado de Taller, verificar si EL esta. + case 2: + $q = "SELECT * FROM horarios, users WHERE horarios.username = users.username AND tipo = 2 AND taller='". $_SESSION['taller'] ."' AND dia='".$_SESSION['dia']."' AND posicion='".$_SESSION['posicion']."';"; + break; + } + //echo $q.'
'; + $resultados = @mysql_query($q, $link) or die('!->Ocurrió un error mientras se revisaba la disponibilidad del instructor. (2)'); $num_rows = mysql_numrows($resultados); - //$num_rows > 0 significa que el muchacho ya tiene asignado otro laboratorio a la misma hora :) - if ($num_rows > 0) { - echo - ' -

Registro de Intructor abortado


- Lo sentimos, pero este Instructor ya tiene otros laboratorios asignados el mismo día y hora. - '; + + //Umm si >0 es que hay alguien ahi, y podemos proceder solo si ese numero es menor a 8 y somos asistentes... + if ( $num_rows > 0 && ($_SESSION['tipo'] != 0 && $num_rows < 8) ) { + echo '

Registro de Intructor abortado


'; + + switch ( $_SESSION['tipo'] ) { + case 0: + echo 'Lo sentimos, pero ya hay 8 ' . TI_0 . ' en este taller a esta hora'; + break; + case 1: + case 3: + echo 'Lo sentimos, pero este Instructor ya tiene otros laboratorios asignados el mismo día y hora.'; + break; + case 2: + echo 'Lo sentimos, pero este Encargado de taller ya esta asignado a este horario.'; + break; + } echo CONTINUAR; return; } - + //Finalmente, si no estabamos ocupados y no lo estaban ocupando, nos insertamos. //Insertamos al instructor en el horario. - $q = "INSERT INTO horarios VALUES ('".$_SESSION['nombre'] ." ', ' " . $_SESSION['taller'] . "','".$_SESSION['dia']."','".$_SESSION['posicion']."')"; + + if ( $_SESSION['tipo'] == 2 ) { + $tempTaller = ""; + } else { + $tempTaller = $_SESSION['taller']; + } + $q = "INSERT INTO horarios VALUES ('".$_SESSION['user'] ."', ' " . $tempTaller . "','".$_SESSION['dia']."','".$_SESSION['posicion']."')"; @mysql_query($q, $link) or die('!->Ocurrió un error en la ultima etapa de la adición de usuarios.'); echo ' -

Registro exitoso del Instructor


+

Registro exitoso


'; echo CONTINUAR; return; } +function HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO($dia, $hora) { + global $session, $link; + // 1. Tengo ocupada esa hora? + switch ( $_SESSION['tipo'] ) { + case 0: + case 1: + case 3: + case 2: + $q = "SELECT users.username, nombre, horarios.taller FROM users,horarios WHERE horarios.username = '".$_SESSION['user'] . "' AND users.username = '".$_SESSION['user']."' AND tipo = '".$_SESSION['tipo']."' AND dia='$dia' AND posicion='$hora'"; + break; + } + //echo $q; + $resultados = @mysql_query($q, $link); + $num_rows = mysql_numrows($resultados); + + if($num_rows > 0){ + //Los encargados estan ocupados y punto. + if ( $_SESSION['tipo'] == 2 ) { + $msj = $msj.''."Ocupado"."
"; + } else { + //Si, la tengo ocupada, ¿en que taller estoy? + //Hacemos for para mostrar si hay mas de un taller (error)! + for($i=0; $i<$num_rows; $i++){ + $msj = $msj.''.mysql_result($resultados,$i,"taller")."
"; + } + } + }else { + //No, no la tengo ocupada!, entonces dejemos ponerle trabajo, claro, si somos admins... + if ($session->isAdmin()){ + $msj=$msj .'Asignar'; + } else { + $msj=""; + + } + } +return "".$msj.""; +} function HORARIO__DESCRIBIR_ELEMENTO_EN_POS($taller,$dia, $hora) { global $session, $link; //Si existe un nombre en $_GET entonces mostrar solo ese nombre o asignar. - if ( isset($_GET['nombre']) ) - {$userExtra = "horarios.username = '".$_GET['nombre'] . "' AND users.username = '".$_GET['nombre']."'";} + if ( isset($_GET['user']) ) + {$userExtra = "horarios.username = '".$_GET['user'] . "' AND users.username = '".$_GET['user']."'";} else {$userExtra = "horarios.username = users.username";} @@ -61,38 +177,48 @@ function HORARIO__DESCRIBIR_ELEMENTO_EN_POS($taller,$dia, $hora) { $num_rows = mysql_numrows($resultados); if($num_rows > 0){ - $msj=""; + $msj=""; for($i=0; $i<$num_rows; $i++){ $uname = mysql_result($resultados,$i,"nombre"); $uinfo = mysql_result($resultados,$i,"username"); /* Por petición solo el primer nombre es mostrado */ unset ($nombre); ereg("([^ ]*)", $uname, $nombre); - if($session->isAdmin()){ - $msj = $msj.''.$nombre[1].'[X]
'; - } else { - /* Si no es administrador entonces solo mostrarle SUS horarios y sin posibilidad de eliminar ni nada*/ - if ($uinfo == $session->username){ - $msj = 'Asignado'; - } else { - $msj = ""; - } - } - } - }else { - if ($session->isAdmin()){ - if( $num_rows == 0 || ($_SESSION['tipo'] == 0 && $num_rows < 9)){ - if ( isset($_SESSION['nombre']) ) { $u = "&nombre=".$_SESSION['nombre']."&u=".$_SESSION['nombre']; } else { $u = ""; } - $msj=$msj .'Asignar'; - } - } else { - $msj=""; - + $msj = $msj.''.$nombre[1].'[X]
'; } } + + if($num_rows == 0 || ($_SESSION['tipo'] == 0 && $num_rows < 9) ){ + if ( isset($_SESSION['user']) ) { $u = "&nombre=".$_SESSION['user']; } else { $u = ""; } + $msj=$msj .'Asignar'; + } + return "".$msj.""; } +function MOSTRAR_HORARIOS_UNICO() { + /* Muestra la tabla de horario en base a las opciones de filtro establecidas */ + global $link, $base, $motor, $usuario, $clave; + $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:
' . mysql_error() . '
'); + @mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe'); + echo "

"; + switch ($_SESSION['dpto']) + { + case 0: echo DE_0; break; + case 1: echo DE_1; break; + } + echo + '

+
+ + + '; + for ($i=450; $i<=1170; $i+=60){ + echo "". HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(1, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(2, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(3, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(4, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(5, $i).HORARIO__DESCRIBIR_ELEMENTO_EN_POS_UNICO(6, $i).""; + } + echo "
HorarioLunesMartesMiercolesJuevesViernesSabado
". date("h:ia", mktime(0,$i)) . "
"; + mysql_close($link); +} function MOSTRAR_HORARIOS() { /* Muestra la tabla de horario en base a las opciones de filtro establecidas */ @@ -129,84 +255,73 @@ function MOSTRAR_HORARIOS() { function CONTENIDO_horarios() { /* Esta es la función principal que muta dependiendo de la acción requerida */ -global $session, $database; +global $session, $database, $link, $base, $motor, $usuario, $clave; /*****************************************************************************************************************************************************/ -/* Si es admin y quiere ver el horario de un solo Instructor */ -if ( isset($_GET['nombre']) && $session->isAdmin() ) { $sUsuarioTemporal=$_GET['nombre']; $_SESSION['nombre'] = $_GET['nombre']; } else { $sUsuarioTemporal=$session->username; unset($_SESSION['nombre']); } -/*Si no es admin SOLO mostrarle sus horarios y ya.*/ -if ( - !$session->isAdmin() - || - ( isset($_GET['nombre']) && $session->isAdmin() ) - && - !((isset($_GET['t']) && isset($_GET['d']) && isset($_GET['h'])&& isset($_GET['o'])) ) - ){ - $req_user_info = $database->getUserInfo($sUsuarioTemporal); - $_SESSION['tipo'] = $req_user_info['tipo']; - $_SESSION['dpto'] = $req_user_info['departamento']; - switch ($req_user_info['departamento']) { - case 0: - $_SESSION['taller'] = 'LSA'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'LID'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'LAI'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'LIV'; - MOSTRAR_HORARIOS(); - break; - case 1: - $_SESSION['taller'] = 'TPP'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'TIS'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'TAS'; - MOSTRAR_HORARIOS(); - $_SESSION['taller'] = 'TEC'; - MOSTRAR_HORARIOS(); - break; +//Tenemos un nombre y somos admins, o somos instructores? - Y no estamos procesando un (o)bjectivo. +if ( !$session->isAdmin() || ($session->isAdmin() && isset($_GET['user'])) && !isset($_GET['o']) ) { + if ( $session->isAdmin() ) { + $_SESSION['user']=$_GET['user']; + } else { + $_SESSION['user'] = $session->username; } -return; -} + //echo "We've got a name: " . $_SESSION['user']; + $req_user_info = $database->getUserInfo($_SESSION['user']); + $_SESSION['tipo'] = $req_user_info['tipo']; + $_SESSION['dpto'] = $req_user_info['departamento']; + unset($_SESSION['taller']); + + MOSTRAR_HORARIOS_UNICO(); + return; +} /*****************************************************************************************************************************************************/ -// Teoricamente solo un Admin puede pasar de esta linea. +/* Teoricamente solo un Admin puede pasar de esta linea. */ +if (!$session->isAdmin()) {die("Lo siento, Ud. esta intentando ingresar a un área especial sin ser administrador");} /*****************************************************************************************************************************************************/ -/* Se nos pide ir a la pantalla de ingresar usuario */ -if ( - (isset($_GET['t']) && isset($_GET['d']) && isset($_GET['h'])&& isset($_GET['o'])) - || - isset($_POST['HORARIO_registrar']) - ) - { - if (!$session->isAdmin()) {die("Lo siento, Ud. esta intentando registrar un usuario sin ser administrador");} - //Agregar o eliminar usuario de horario - global $session, $link, $base, $motor, $usuario, $clave; - //echo "Intentando registrar: " . $_POST['nombre'], $_SESSION['taller'], $_SESSION['dia'], $_SESSION['posicion']; - if (isset($_POST['HORARIO_registrar'])) { HORARIO_registrar_instructor($_POST['nombre'], $_SESSION['taller'], $_SESSION['dia'], $_SESSION['posicion'] ); return;} - $_SESSION['taller'] = $_GET['t']; +/* Se nos pide registrar a un instructor */ /*Entramos si somos Encargados de Taller */ +if ( isset($_POST['HORARIO_registrar']) || ($_GET['o'] == 'a' && $_SESSION['tipo'] == 2)) { + if ( !isset($_SESSION['taller']) ) { $_SESSION['taller'] = $_POST['taller']; } + if ( isset($_POST['user']) ) { $_SESSION['user'] = $_POST['user']; } + if ($_GET['o'] == 'a' && $_SESSION['tipo'] == 2) { $_SESSION['taller'] = ""; } + HORARIO_registrar_instructor(); +// + return; +} + +/* Se nos pide ir a la pantalla de ingresar o registrar usuario */ +if ( isset($_GET['d']) && isset($_GET['p'])&& isset($_GET['o'])) { + /* Necesitamos saber el día y la posición en la que lo quieren registrar */ $_SESSION['dia'] = $_GET['d']; - $_SESSION['posicion'] = $_GET['h']; + $_SESSION['posicion'] = $_GET['p']; + $link = @mysql_connect($motor, $usuario, $clave) or die('Por favor revise sus datos, puesto que se produjo el siguiente error:
' . mysql_error() . '
'); mysql_select_db($base, $link) or die('!->La base de datos seleccionada "'.$base.'" no existe'); echo '

Visor de Horarios - Filtro de instructores


'; - //Agregar + + // ¿Quieren agregar? if ($_GET['o'] == 'a') { - if ( isset($_SESSION['nombre']) ) { HORARIO_registrar_instructor($_SESSION['nombre'], $_SESSION['taller'], $_SESSION['dia'], $_SESSION['posicion'] ); return;} - // ¿Hay alguien(es) en ese departamente y con ese cargo? + if ( !isset($_SESSION['taller']) ) { + // Si entro por nombre, entonces no tiene taller preseleccionado: mandar a seleccion de Taller + MOSTRAR_SELECCION_TALLER(); + return; + } + + //Sino busquemos al elegido: ¿Hay alguien(es) en ese departamente y con ese cargo? $q = "SELECT username, nombre FROM users WHERE departamento='".$_SESSION['dpto'] ."' AND tipo='" . $_SESSION['tipo'] . "'"; $resultados = @mysql_query($q, $link); $num_rows = mysql_numrows($resultados); + + //Si hay personal entonces mostrar. if($num_rows > 0){ echo '
Instructores disponibles para el filtro actual: - '; @@ -224,22 +339,25 @@ if ( '; - } else { - echo '

Error


'; - echo 'No se encontró ningún instructor que cumpliera con su criterio
'; - } + } else { + echo '

Error


'; + echo 'No se encontró ningún instructor que cumpliera con su criterio
'; + } + //Quieren eliminar } else { - if ($session->isAdmin()) { + $req_user_info = $database->getUserInfo($_GET['user']); //eliminar - $q = "DELETE FROM horarios WHERE username LIKE '%".$_GET['u']."%' AND taller LIKE '%".$_GET['t']."%' AND dia = ".$_GET['d']." AND posicion = ".$_GET['h'].";"; - //echo "
CONSULTA: '$q'"; + if ( $req_user_info['tipo'] == 2 ) { + $q = "DELETE FROM horarios WHERE username LIKE '%".$_GET['user']."%' AND dia = ".$_GET['d']." AND posicion = ".$_GET['p'].";"; + } else { + $q = "DELETE FROM horarios WHERE username LIKE '%".$_GET['user']."%' AND taller LIKE '%".$_GET['t']."%' AND dia = ".$_GET['d']." AND posicion = ".$_GET['p'].";"; + } + //echo $q; $resultado = mysql_query($q, $link) or die('!->La operación de eliminación no pudo ser completada'); - //echo "
RESULTADO: $resultado
My:".mysql_error($link)."
"; - echo "

Operación de eliminación completada


".$_GET['u']." ha sido removido del horario.
"; + echo "

Operación de eliminación completada


".$_GET['user']." ha sido removido del horario.
"; echo CONTINUAR; } - } return; } @@ -256,7 +374,7 @@ $_POST['tipo'] $_POST['taller'] */ //¿alguien tiene cuello y nos han pedido que lo asignemos de una vez sin pasar por licitación de Instructores XD?: -if (isset($_GET['nombre'])) { $_SESSION['nombre'] = $_GET['nombre']; } else { unset ($_SESSION['nombre']); } +if (isset($_GET['user'])) { $_SESSION['user'] = $_GET['user']; } else { unset ($_SESSION['user']); } echo '

Visor de Horarios


'; switch ($paso) { case 0: @@ -309,11 +427,13 @@ case 1: } break; } else { - $_SESSION['tipo'] = $_GET['tipo']; + $_POST['tipo'] = $_GET['tipo']; } case 2: $_SESSION['tipo'] = $_POST['tipo']; - if ( isset($_GET['nombre'] ) ) { $ChinearGet = "&nombre=".$_GET['nombre']; } else { $ChinearGet = ""; } + //Si es encargado de Taller nos saltamos la seleccion. + if ($_SESSION['tipo'] != 2) { + if ( isset($_GET['user'] ) ) { $ChinearGet = "&user=".$_GET['user']; } else { $ChinearGet = ""; } echo '
@@ -362,7 +482,9 @@ case 2: case 3: echo TI_3; break; } break; - + } else { + $_POST['taller'] = ""; + } case 3: $_SESSION['taller'] = $_POST['taller']; MOSTRAR_HORARIOS(); -- 2.11.4.GIT