private ControladorHorario _controlador; //Controlador de la Interfaz #endregion protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controlador = new ControladorHorario(); string grupoUsuario = _sesion.obtenerGrupoUsuario(Request.Cookies["PS"]); if ((grupoUsuario.Equals("prof")) || (grupoUsuario.Equals("users")) || (grupoUsuario.Equals("ests")) || (grupoUsuario.Equals("soporte")) || (grupoUsuario.Equals("jefeti"))) { _controlador.insertarBitacoraError("Se ha intentado realizar un acceso no permitido por parte del usuario " + _sesion.obtenerLoginUsuario(Request.Cookies["PS"]) + " a la página de RegistroUsoLaboratorio.aspx", ""); Response.Redirect("../Compartido/AccesoDenegado.aspx"); } ViewState["FE"] = -1; //ultima fila editada en el grid ViewState["CE"] = -1; //ultima columna editada en el grid ViewState["IH"] = _controlador.consultarHorarioDisponibilidad(); //Id del horario de disponibilidad, guardado en el viewState _gridHorario.DataSource = cargarHorarioDisponibilidad((int)ViewState["IH"]); _gridHorario.DataBind(); } }
/// <summary> /// Método que se encarga de cargar el horario de disponibiliadad /// </summary> /// <returns>Un datatable con el horario</returns> public DataTable cargarHorarioDisponibilidad(int idHorario) { DataTable resultado = new DataTable(); try { if (idHorario == 0) { _imgMensaje.ImageUrl = "~/Imagenes/Advertencia.png"; _lblMensaje.Text = "Por el momento no hay horarios de disponibilidad habilitados."; _imgMensaje.Visible = true; _lblMensaje.Visible = true; _btnHorario.Visible = false; _btnGuardar.Visible = false; } else { _controlador = new ControladorHorario(); //Crear las columnas de la tabla resultado.Columns.Add(new DataColumn("Turno")); resultado.Columns.Add(new DataColumn("Lunes")); resultado.Columns.Add(new DataColumn("Martes")); resultado.Columns.Add(new DataColumn("Miércoles")); resultado.Columns.Add(new DataColumn("Jueves")); resultado.Columns.Add(new DataColumn("Viernes")); resultado.Columns.Add(new DataColumn("Sábado")); //Llenar la tabla, solo con la columna de turno con valor resultado.Rows.Add("7:30 a.m - 11:30 a.m", "", "", "", "", "", ""); resultado.Rows.Add("11:30 a.m - 3:30 p.m", "", "", "", "", "", ""); resultado.Rows.Add("3:30 p.m - 7:30 p.m", "", "", "", "", "", ""); resultado.Rows.Add("7:30 p.m - 10:30 p.m", "", "", "", "", "", ""); List<List<object>> turnos = _controlador.obtenerTurnosDisponibilidad(idHorario); if (turnos.Count > 0) { ordenarTurnos(resultado, turnos); } } } catch (Exception ex) { _controlador = new ControladorHorario(); _controlador.insertarBitacoraError(ex.ToString(), ""); } return resultado; }
protected void _btnGuardar_Click(object sender, EventArgs e) { try { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); Control controlEditable; //Textbox que se enceuntra en cada celda del grid, se utiliza para poder editar la celda List<List<object>> turnos = new List<List<object>>(); List<object> turno; for (int k = 0; k < _gridHorario.Rows.Count; k++) { for (int i = 2; i < _gridHorario.Rows[k].Cells.Count; i++) { controlEditable = _gridHorario.Rows[k].Cells[i].Controls[3]; if (!((TextBox)controlEditable).Text.Equals("")) { turno = new List<object>(); turno.Add((int)ViewState["IH"]); //Obtener el PK del horario // Obtener el día switch (i) { case 2: turno.Add('L'); break; case 3: turno.Add('K'); break; case 4: turno.Add('M'); break; case 5: turno.Add('J'); break; case 6: turno.Add('V'); break; case 7: turno.Add('S'); break; } //Obtener las hora switch (k) { case 0: turno.Add("7:30"); turno.Add("11:30"); break; case 1: turno.Add("11:30"); turno.Add("15:30"); break; case 2: turno.Add("15:30"); turno.Add("19:30"); break; case 3: turno.Add("19:30"); turno.Add("22:30"); break; } turno.Add(((TextBox)controlEditable).Text); //Obtener el nombre turno.Add(_sesion.obtenerLoginUsuario(Request.Cookies["PS"])); //Obtener el login turnos.Add(turno); //Agregar el turno a la lista de turnos } } } // Se revisa que haya al menos un turno en el horario if (turnos.Count > 0) { _controlador = new ControladorHorario(); bool completado = _controlador.insertarTurnosDisponibilidad(turnos); if (completado) { _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Text = "Se ha guardado su horario con exito."; _imgMensaje.Visible = true; _lblMensaje.Visible = true; } else { _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Text = "No se pudo guardar su horario. Por favor buelva a intentar más tarde."; _imgMensaje.Visible = true; _lblMensaje.Visible = true; } Session["turnosUsuari"] = new List<List<object>>(); //Limpiar los turnos para que no los buelva a cargar _gridHorario.DataSource = cargarHorarioDisponibilidad((int)ViewState["IH"]); _gridHorario.DataBind(); _btnHorario.Enabled = true; _btnGuardar.Enabled = false; } } catch (Exception ex) // Si algo falla se reporta el error en la Bitácora de Errores del sistema { _controlador = new ControladorHorario(); _controlador.insertarBitacoraError(ex.ToString(), ""); } }
protected void _btnHorario_Click(object sender, EventArgs e) { try { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _gridHorario.Enabled = true; _imgMensaje.Visible = false; _lblMensaje.Visible = false; DataTable limpia = new DataTable(); // Tabla en limpio para que el usuario ingrese sus turnos //Crear las columnas de la tabla limpia.Columns.Add(new DataColumn("Turno")); limpia.Columns.Add(new DataColumn("Lunes")); limpia.Columns.Add(new DataColumn("Martes")); limpia.Columns.Add(new DataColumn("Miércoles")); limpia.Columns.Add(new DataColumn("Jueves")); limpia.Columns.Add(new DataColumn("Viernes")); limpia.Columns.Add(new DataColumn("Sábado")); //Llenar la tabla, solo con la columna de turno con valor limpia.Rows.Add("7:30 a.m - 11:30 a.m", "", "", "", "", "", ""); limpia.Rows.Add("11:30 a.m - 3:30 p.m", "", "", "", "", "", ""); limpia.Rows.Add("3:30 p.m - 7:30 p.m", "", "", "", "", "", ""); limpia.Rows.Add("7:30 p.m - 10:30 p.m", "", "", "", "", "", ""); ordenarTurnos(limpia, ((List<List<object>>)Session["turnosUsuari"])); _gridHorario.DataSource = limpia; _gridHorario.DataBind(); _btnGuardar.Enabled = true; //Habilitar boton guardar _btnHorario.Enabled = false;//Deshabilitar boton ingresar horario disponibilidad // Habilitar el click en los campos del gridview foreach (GridViewRow fila in _gridHorario.Rows) { // Obtener el LinkButton de la primera celda LinkButton boton = (LinkButton)fila.Cells[0].Controls[0]; // Obtner el javascript que utiliza el LinkButton string jsBoton = ClientScript.GetPostBackClientHyperlink(boton, ""); // Añadir los eventos a todas las celdas que se pueden editar int primeraCeldaEditar = 2; //desde cual celda se va a empesar a añadir los eventos for (int i = primeraCeldaEditar; i < fila.Cells.Count; i++) { // Verificar que no se pueda poner un turno el sabado en la noche if ((((Label)fila.Cells[1].Controls[1]).Text.Equals("7:30 p.m - 10:30 p.m")) && (i == 7)) continue; else { // Añadir el indice de la columna como parametro para el evento string js = jsBoton.Insert(jsBoton.Length - 2, i.ToString()); // Añadir el script anterior al atributo onclick de la celda fila.Cells[i].Attributes["onclick"] = js; // Añadir el estilo del cursor a la celda fila.Cells[i].Attributes["style"] += "cursor:pointer;cursor:hand;"; } } } } catch (Exception ex) { _controlador = new ControladorHorario(); _controlador.insertarBitacoraError(ex.ToString(), ""); } }
/// <summary> /// Método que se encarga de llenar el horario con los turnos que ya se han realizado /// </summary> /// <param name="horario">DataTable que contendra el horario</param> /// <param name="turnos">Lista de listas de objetos que contiene los turnos, la lista contienen (Dia, HoraInicio, Nombre, Login)</param> public void ordenarTurnos(DataTable horario, List<List<object>> turnos) { try { _sesion = new Sesion(); string loginUsuario = _sesion.obtenerLoginUsuario(Request.Cookies["PS"]); List<List<object>> turnoUsuario = new List<List<object>>(); int columna = 0; //Para saber en cual columna (dia) se encuentra el turno foreach (List<object> turno in turnos) { //Se busca primero el día en el que se encuentra el turno switch (Convert.ToChar(turno[0])) { case 'L': //Lunes columna = 1; break; case 'K': //Martes columna = 2; break; case 'M': //Miercoles columna = 3; break; case 'J': //Jueves columna = 4; break; case 'V': //Viernes columna = 5; break; case 'S': //Sabado columna = 6; break; } //Se revisa la hora de inicio del turno y se agrega el nombre al horario if (turno[1].ToString().Equals("07:30:00")) { horario.Rows[0][columna] = horario.Rows[0][columna].ToString() + turno[2].ToString() + "<br/>"; // Verificar si el turno pertence al usuario if (turno[3].ToString().Equals(loginUsuario)) { // Si pertenece lo agrega a la lista que contiene los turnos que el usuario posee turnoUsuario.Add(turno); } } else if (turno[1].ToString().Equals("11:30:00")) { horario.Rows[1][columna] = horario.Rows[1][columna].ToString() + turno[2].ToString() + "<br/>"; // Verificar si el turno pertence al usuario if (turno[3].ToString().Equals(loginUsuario)) { // Si pertenece lo agrega a la lista que contiene los turnos que el usuario posee turnoUsuario.Add(turno); } } else if (turno[1].ToString().Equals("15:30:00")) { horario.Rows[2][columna] = horario.Rows[2][columna].ToString() + turno[2].ToString() + "<br/>"; // Verificar si el turno pertence al usuario if (turno[3].ToString().Equals(loginUsuario)) { // Si pertenece lo agrega a la lista que contiene los turnos que el usuario posee turnoUsuario.Add(turno); } } else if (turno[1].ToString().Equals("19:30:00")) { horario.Rows[3][columna] = horario.Rows[3][columna].ToString() + turno[2].ToString() + "<br/>"; // Verificar si el turno pertence al usuario if (turno[3].ToString().Equals(loginUsuario)) { // Si pertenece lo agrega a la lista que contiene los turnos que el usuario posee turnoUsuario.Add(turno); } } } Session["turnosUsuari"] = turnoUsuario; //Turnos que el usuario haya ingresado previamente, se guardan en un session } catch (Exception ex) { _controlador = new ControladorHorario(); _controlador.insertarBitacoraError(ex.ToString(), ""); } }
protected void _gridHorario_RowCommand(object sender, GridViewCommandEventArgs e) { try { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); Control controlDesplegable; //Label que se encuentra en cada celda del grid, se utiliza para lo que se va a desplegar en la celda Control controlEditable; //Textbox que se enceuntra en cada celda del grid, se utiliza para poder editar la celda //Verificar si hay alguna celda editada para guardar lo que hay en esta if ((int)ViewState["FE"] > -1) { controlDesplegable = _gridHorario.Rows[(int)ViewState["FE"]].Cells[(int)ViewState["CE"]].Controls[1]; controlEditable = _gridHorario.Rows[(int)ViewState["FE"]].Cells[(int)ViewState["CE"]].Controls[3]; ((Label)controlDesplegable).Text = ((TextBox)controlEditable).Text; //Copiar lo que hay en el controlEditable controlDesplegable.Visible = true; //Mostrar el controlDesplegable controlEditable.Visible = false; //Ocultar el controlEditable } // Obtener la fila y columna de la celda int fila = int.Parse(e.CommandArgument.ToString()); int columna = int.Parse(Request.Form["__EVENTARGUMENT"]); // Obtener el label de la celda (control desplegable) y ocultarlo controlDesplegable = _gridHorario.Rows[fila].Cells[columna].Controls[1]; controlDesplegable.Visible = false; // Obtener el textbox de la celda (control editable) y hacelo visible, para que se pueda utilizar controlEditable = _gridHorario.Rows[fila].Cells[columna].Controls[3]; ((TextBox)controlEditable).Text = ((TextBox)controlEditable).Text.Replace("<br/>", " "); controlEditable.Visible = true; // Setear el foco al control editable ClientScript.RegisterStartupScript(GetType(), "SetFocus", "<script>document.getElementById('" + controlEditable.ClientID + "').focus();</script>"); // Seleccionar el texto del control desplegable, esto para que este en foco ((TextBox)controlEditable).Attributes.Add("onfocus", "this.select()"); ViewState["FE"] = fila; // Guardas la fila de la celda que se edito ViewState["CE"] = columna; //Guardar la columna de la celda que se edito } catch (Exception ex) { _controlador = new ControladorHorario(); _controlador.insertarBitacoraError(ex.ToString(), ""); } }
protected void _gridHorario_RowCommand(object sender, GridViewCommandEventArgs e) { Control controlDesplegable; // Label que se encuentra en cada celda del grid, se utiliza para lo que se va a desplegar en la celda Control controlEditable; // Textbox que se enceuntra en cada celda del grid, se utiliza para poder editar la celda _btnGuardarHorario.Enabled = true; _controladorHorario = new ControladorHorario(); if ((int)ViewState["filaEditada"] > -1) // Verificar si hay alguna celda editada para guardar lo que hay en esta { String textoTurnoViejo = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text; String textoTurnoNuevo = ((TextBox)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3]).Text; int idTurno = -1; if ((textoTurnoViejo.Equals("")) && (!textoTurnoNuevo.Equals(""))) // Un turno nuevo { char dia = ' '; switch ((int)ViewState["columnaEditada"]) { case 2: // Lunes dia = 'L'; break; case 3: // Martes dia = 'K'; break; case 4: // Miércoles dia = 'M'; break; case 5: // Jueves dia = 'J'; break; case 6: // Viernes dia = 'V'; break; case 7: // Sábado dia = 'S'; break; case 8: // Domingo dia = 'D'; break; } String hora = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[1].Controls[1]).Text; String[] horas = hora.Split(' '); _realizoCambio = _controladorHorario.insertarTurno(dia, horas[0], horas[2], textoTurnoNuevo, (int)ViewState["idHorario"]); if (_realizoCambio) { _lblMensaje.Text = "Se ha insertado con éxito el turno"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al crear el nuevo turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoNuevo.Equals(textoTurnoViejo)) && (!textoTurnoNuevo.Equals(""))) // Si cambio el dato del turno { String hola = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text; idTurno = Convert.ToInt32(hola); _realizoCambio = _controladorHorario.modificarTurno(idTurno, textoTurnoNuevo); if (_realizoCambio) { _lblMensaje.Text = "Se ha cambiado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al modificar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoViejo.Equals("")) && (textoTurnoNuevo.Equals(""))) // Si elminó el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.borrarTurno(idTurno); if (_realizoCambio) { _lblMensaje.Text = "Se ha borrado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al intentar borrar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text = textoTurnoNuevo; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1].Visible = true; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3].Visible = false; } // Obtener la fila y columna de la celda int fila = int.Parse(e.CommandArgument.ToString()); int columna = int.Parse(Request.Form["__EVENTARGUMENT"]); // Obtener el label de la celda (control desplegable) y ocultarlo controlDesplegable = _gridHorario.Rows[fila].Cells[columna].Controls[1]; controlDesplegable.Visible = false; // Obtener el textbox de la celda (control editable) y hacelo visible, para que se pueda utilizar controlEditable = _gridHorario.Rows[fila].Cells[columna].Controls[3]; ((TextBox)controlEditable).Text = ((Label)controlDesplegable).Text.Replace("<br/>", " "); controlEditable.Visible = true; // Setear el foco al control editable ClientScript.RegisterStartupScript(GetType(), "SetFocus", "<script>document.getElementById('" + controlEditable.ClientID + "').focus();</script>"); // Seleccionar el texto del control desplegable, esto para que este en foco if (controlEditable is TextBox) { ((TextBox)controlEditable).Attributes.Add("onfocus", "this.select()"); } ViewState["filaEditada"] = fila; // Guardas la fila de la celda que se editó ViewState["columnaEditada"] = columna; // Guardar la columna de la celda que se editó }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controladorHorario = new ControladorHorario(); String grupoUsuario = _sesion.obtenerGrupoUsuario(_cookieActual); if ((grupoUsuario.Equals("prof")) || (grupoUsuario.Equals("users")) || (grupoUsuario.Equals("ests")) || (grupoUsuario.Equals("operadores"))) // Reportar si un usuario autenticado intenta hacer ingreso a una página que no tiene permiso { Notificacion notificacion = new Notificacion(); // Enviar correo informando de la intrusión notificacion.enviarCorreo("Se ha intentado realizar un acceso no permitido por parte del usuario " + _sesion.obtenerLoginUsuario(_cookieActual) + " a la página de CrearHorario.aspx", "*****@*****.**", "Violación de Seguridad"); Response.Redirect("../Compartido/AccesoDenegado.aspx"); } ViewState["filaEditada"] = -1; ViewState["columnaEditada"] = -1; ViewState["idHorario"] = -1; _tablaTurnos = new DataTable(); _listaLugares = _controladorHorario.consultarLugares(); // Obtener los lugares if (_listaLugares != null) { if (_listaLugares.Count == 0) { _lblMensaje.Text = "No hay lugares registrados en el sistema"; _imgMensaje.ImageUrl = "~/Imagenes/Advertencia.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _ddlLugar.Items.Add("Seleccionar"); for (int i = 0; i < _listaLugares.Count; i++) // Cargar los lugares _ddlLugar.Items.Add(_listaLugares.ElementAt(i).ElementAt(1)); } } else { _lblMensaje.Text = "Se ha presentado un error al cargar la información de los lugares"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } _listaSemestres = _controladorHorario.consultarSemestres(); // Obtener los semestres if (_listaSemestres != null) { if (_listaSemestres.Count == 0) { _lblMensaje.Text = "No hay semestres registrados en el sistema"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _ddlSemestre.Items.Add("Seleccionar"); for (int i = 0; i < _listaSemestres.Count; i++) // Cargar los semestres _ddlSemestre.Items.Add(_listaSemestres.ElementAt(i).ElementAt(1)); } } else { _lblMensaje.Text = "Se ha presentado un error al cargar la información de los semestres"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } int horarioHabilitado = _controladorHorario.consultarHorarioActivo(); if (horarioHabilitado != -1) { if (horarioHabilitado == 0) // No hay horarios habilitados { _btnHorarioDisponibilidad.Enabled = true; _btnDeshabilitarHorarioDisponibilidad.Enabled = false; } else // Hay horarios habilitados { _btnHorarioDisponibilidad.Enabled = false; _btnDeshabilitarHorarioDisponibilidad.Enabled = true; } } else // Si hubo un error al encontrar un horario de disponibilidad habilitado { _lblMensaje.Text = "Error al determinar si hay horarios de disponibilidad habilitados"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } }
/// <summary> /// Método para manejar el evento del botón _btnHorarioDisponibilidad /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void _btnHorarioDisponibilidad_Click(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controladorHorario = new ControladorHorario(); Boolean resultado = _controladorHorario.crearHorarioDisponibilidad(); // Enviar al controlador la petición if (resultado) { _lblMensaje.Text = "Se ha creado con éxito el horario"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; _btnHorarioDisponibilidad.Enabled = false; _btnDeshabilitarHorarioDisponibilidad.Enabled = true; } else { _lblMensaje.Text = "Se ha presentado un error al crear el horario"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } }
/// <summary> /// Método que se encarga de cargar el horario de acuerdo a un lugar escogido /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void _ddlLugar_SelectedIndexChanged(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); ViewState["filaEditada"] = -1; ViewState["columnaEditada"] = -1; _btnCrearHorario.Enabled = true; _controladorHorario = new ControladorHorario(); if (_ddlLugar.SelectedIndex != 0) { ViewState["idHorario"] = _controladorHorario.consultarHorario(Convert.ToInt32(_listaLugares[_ddlLugar.SelectedIndex - 1][0]), Convert.ToInt32(_listaSemestres[_ddlSemestre.SelectedIndex - 1][0])); if ((int)ViewState["idHorario"] != -1) { if ((int)ViewState["idHorario"] != 0) { _listaTurnos = _controladorHorario.consultarTurnosHorario(Convert.ToInt32(_listaLugares[_ddlLugar.SelectedIndex - 1][0]), Convert.ToInt32(_listaSemestres[_ddlSemestre.SelectedIndex - 1][0])); if (_listaTurnos == null) { _lblMensaje.Text = "Ha habido un error al obtener los turnos del horario"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else if (_listaTurnos.Count != 0) // Hay turno llenarTabla(1); // Llenar las tablas else // No hay turnos llenarTabla(0); // Llenar las tablas _btnCrearHorario.Enabled = false; _gridHorario.Visible = true; _lblMensaje.Visible = false; _imgMensaje.Visible = false; } else { _btnCrearHorario.Enabled = true; _gridHorario.Visible = false; } } else if ((int)ViewState["idHorario"] == -1) { _lblMensaje.Text = "Ha habido un error al obtener el horario"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else _btnCrearHorario.Enabled = false; }
protected void _btnGuardarHorario_Click(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controladorHorario = new ControladorHorario(); String textoTurnoViejo = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text; String textoTurnoNuevo = ((TextBox)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3]).Text; int idTurno = -1; if ((textoTurnoViejo.Equals("")) && (!textoTurnoNuevo.Equals(""))) // Un turno nuevo { char dia = ' '; switch ((int)ViewState["columnaEditada"]) { case 2: // Lunes dia = 'L'; break; case 3: // Martes dia = 'K'; break; case 4: // Miércoles dia = 'M'; break; case 5: // Jueves dia = 'J'; break; case 6: // Viernes dia = 'V'; break; case 7: // Sábado dia = 'S'; break; case 8: // Domingo dia = 'D'; break; } String hora = ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[1].Controls[1]).Text; String[] horas = hora.Split(' '); _realizoCambio = _controladorHorario.insertarTurno(dia, horas[0], horas[2], textoTurnoNuevo, (int)ViewState["idHorario"]); if (_realizoCambio) { _lblMensaje.Text = "Se ha insertado con éxito el turno"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al crear el nuevo turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoNuevo.Equals(textoTurnoViejo)) && (!textoTurnoNuevo.Equals(""))) // Si cambio el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.modificarTurno(idTurno, textoTurnoNuevo); if (_realizoCambio) { _lblMensaje.Text = "Se ha cambiado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al modificar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } else if ((!textoTurnoViejo.Equals("")) && (textoTurnoNuevo.Equals(""))) // Si elminó el dato del turno { idTurno = Convert.ToInt32(((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[5]).Text); _realizoCambio = _controladorHorario.borrarTurno(idTurno); if (_realizoCambio) { _lblMensaje.Text = "Se ha borrado el turno con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _lblMensaje.Text = "Error al intentar borrar el turno"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } ((Label)_gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1]).Text = textoTurnoNuevo; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[1].Visible = true; _gridHorario.Rows[(int)ViewState["filaEditada"]].Cells[(int)ViewState["columnaEditada"]].Controls[3].Visible = false; _btnGuardarHorario.Enabled = false; }
protected void _btnExportar_Click(object sender, EventArgs e) { _controladorHorario = new ControladorHorario(); int idHorario = _controladorHorario.consultarHorarioDisDeshabilitado(); if (idHorario != -1) { DataTable tabla = new DataTable(); // Crear las columnas de la tabla tabla.Columns.Add(new DataColumn("Turno")); tabla.Columns.Add(new DataColumn("Lunes")); tabla.Columns.Add(new DataColumn("Martes")); tabla.Columns.Add(new DataColumn("Miércoles")); tabla.Columns.Add(new DataColumn("Jueves")); tabla.Columns.Add(new DataColumn("Viernes")); tabla.Columns.Add(new DataColumn("Sábado")); tabla.Columns.Add(new DataColumn("Domingo")); // Llenar la tabla, solo con la columna de turno con valor tabla.Rows.Add("7:30 a.m - 11:30 a.m", "", "", "", "", "", ""); tabla.Rows.Add("11:30 a.m - 3:30 p.m", "", "", "", "", "", ""); tabla.Rows.Add("3:30 p.m - 7:30 p.m", "", "", "", "", "", ""); tabla.Rows.Add("7:30 p.m - 10:30 p.m", "", "", "", "", "", ""); List<List<object>> turnos = _controladorHorario.obtenerTurnosDisponibilidad(idHorario); if (turnos.Count > 0) ordenarTurnos(tabla, turnos); DataTable dtTemp = new DataTable(); // Crear una tabla temporal // Creando los encabezados de las filas dtTemp.Columns.Add("<b>Turno</b>"); dtTemp.Columns.Add("<b>Lunes</b>"); dtTemp.Columns.Add("<b>Martes</b>"); dtTemp.Columns.Add("<b>Miercoles</b>"); dtTemp.Columns.Add("<b>Jueves</b>"); dtTemp.Columns.Add("<b>Viernes</b>"); dtTemp.Columns.Add("<b>Sabado</b>"); dtTemp.Columns.Add("<b>Domingo</b>"); DataRow fila; for (int i = 0; i < tabla.Rows.Count; i++) { fila = dtTemp.NewRow(); fila[0] = tabla.Rows[i][0].ToString(); // Turno fila[1] = tabla.Rows[i][1].ToString(); // Lunes fila[2] = tabla.Rows[i][2].ToString(); // Martes fila[3] = tabla.Rows[i][3].ToString(); // Miércoles fila[4] = tabla.Rows[i][4].ToString(); // Jueves fila[5] = tabla.Rows[i][5].ToString(); // Viernes fila[6] = tabla.Rows[i][6].ToString(); // Sábado fila[7] = tabla.Rows[i][7].ToString(); // Domingo dtTemp.Rows.Add(fila); } // Grid temporal DataGrid dg = new DataGrid { DataSource = dtTemp }; dg.DataBind(); Boolean resultado = ExportToExcel("Horario Disponibilidad.xls", dg); // Exportar if (!resultado) { _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Text = "No se ha podido exportar el archivo"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } dg = null; dg.Dispose(); } else { _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Text = "No se ha podido obtener el horario de disponiblidad vigente"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } }
/// <summary> /// Método que se encarga de manejar el evento del botón _btnCrearHorario /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void _btnCrearHorario_Click(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); if ((_ddlSemestre.SelectedIndex != 0) && (_ddlLugar.SelectedIndex != 0)) { _controladorHorario = new ControladorHorario(); ViewState["idHorario"] = _controladorHorario.crearHorario(Convert.ToInt32(_listaLugares[_ddlLugar.SelectedIndex-1][0]), Convert.ToInt32(_listaSemestres[_ddlSemestre.SelectedIndex-1][0])); if ((int)ViewState["idHorario"] != -1) { _lblMensaje.Text = "Se ha creado el horario con éxito"; _imgMensaje.ImageUrl = "~/Imagenes/ok.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; _btnCrearHorario.Enabled = false; llenarTabla(0); _gridHorario.Visible = true; } else { _lblMensaje.Text = "Ha habido un error al crear el horario"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } } }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) return; _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); _controladorHorario = new ControladorHorario(); ViewState["SA"] = _controladorHorario.consultarSemestreActivo(); //Semestre que se encuentra activo, se guarda en un ViewState para mayor facilidad _listaLugares = _controladorHorario.consultarLugares(); // Obtener los lugares if (_listaLugares != null) { if (_listaLugares.Count == 0) { _lblMensaje.Text = "No hay lugares registrados en el sistema"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } else { _ddlLugar.Items.Add("Seleccionar"); for (int t = 0; t < _listaLugares.Count; t++ ) { var temp = new ListItem(_listaLugares[t][1].ToString(), _listaLugares[t][1].ToString()); _ddlLugar.Items.Add(temp); } } } else { _lblMensaje.Text = "Se ha presentado un error al cargar la información de los lugares"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; } }
/// <summary> /// Método que se encarga de exportar un DataTable a un documento de excel /// </summary> /// <param name="nombreArchivo"></param> /// <param name="dg"></param> /// <returns></returns> private Boolean ExportToExcel(string nombreArchivo, DataGrid dg) { try { Response.ClearContent(); Response.AddHeader("content-disposition", "attachment; filename=" + nombreArchivo); Response.ContentType = "application/excel"; var sw = new System.IO.StringWriter(); var htw = new HtmlTextWriter(sw); dg.RenderControl(htw); Response.Write(sw.ToString()); Response.End(); return true; } catch (Exception e) { _controladorHorario = new ControladorHorario(); _controladorHorario.insertarBitacoraError(e.ToString(), ""); return false; } }
protected void _btnConsultarHorario_Click(object sender, EventArgs e) { _sesion = new Sesion(); _cookieActual = _sesion.verificarValidez(Request.Cookies["PS"]); if (_cookieActual == null) // Si la cookie expira redirecciona a la pantalla de Login Response.Redirect("../Autentificacion/Login.aspx"); // else // Volver a crear la cookie en el cliente, con el nuevo tiempo de expiración Response.SetCookie(_cookieActual); if (_ddlLugar.SelectedIndex > 0) { if ((int)ViewState["SA"] > 0) { _controladorHorario = new ControladorHorario(); _listaTurnos = _controladorHorario.consultarTurnosHorario(Convert.ToInt32(_listaLugares[_ddlLugar.SelectedIndex - 1][0]), (int)ViewState["SA"]); if ((_listaTurnos != null) && (_listaTurnos.Count > 0)) { llenarTabla(1); // Llenar las tablas _lblMensaje.Visible = false; _imgMensaje.Visible = false; _gridHorario.Visible = true; _btnExportar.Enabled = true; } else if (_listaTurnos == null) { _lblMensaje.Text = "Ha habido un error al obtener el horario"; _imgMensaje.ImageUrl = "~/Imagenes/Error.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; _gridHorario.Visible = false; _btnExportar.Enabled = false; } else { _lblMensaje.Text = "No existe un horario para el lugar indicado"; _imgMensaje.ImageUrl = "~/Imagenes/Advertencia.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; _gridHorario.Visible = false; _btnExportar.Enabled = false; } } else { _lblMensaje.Text = "No hay semestres habilitados para consulta"; _imgMensaje.ImageUrl = "~/Imagenes/Advertencia.png"; _lblMensaje.Visible = true; _imgMensaje.Visible = true; _gridHorario.Visible = false; _btnExportar.Enabled = false; } } }
/// <summary> /// Método que se encarga de llenar el horario con los turnos que ya se han realizado /// </summary> /// <param name="horario">DataTable que contendra el horario</param> /// <param name="turnos">Lista de listas de objetos que contiene los turnos, la lista contienen (Dia, HoraInicio, Nombre, Login)</param> public void ordenarTurnos(DataTable horario, List<List<object>> turnos) { try { int columna = 0; // Para saber en cual columna (dia) se encuentra el turno foreach (List<object> turno in turnos) { switch (Convert.ToChar(turno[0])) // Se busca primero el día en el que se encuentra el turno { case 'L': // Lunes columna = 1; break; case 'K': // Martes columna = 2; break; case 'M': // Miercoles columna = 3; break; case 'J': // Jueves columna = 4; break; case 'V': // Viernes columna = 5; break; case 'S': // Sabado columna = 6; break; } if (turno[1].ToString().Equals("07:30:00")) // Se revisa la hora de inicio del turno y se agrega el nombre al horario horario.Rows[0][columna] = horario.Rows[0][columna].ToString() + turno[2].ToString() + "<br/>"; else if (turno[1].ToString().Equals("11:30:00")) horario.Rows[1][columna] = horario.Rows[1][columna].ToString() + turno[2].ToString() + "<br/>"; else if (turno[1].ToString().Equals("15:30:00")) horario.Rows[2][columna] = horario.Rows[2][columna].ToString() + turno[2].ToString() + "<br/>"; else if (turno[1].ToString().Equals("19:30:00")) horario.Rows[3][columna] = horario.Rows[3][columna].ToString() + turno[2].ToString() + "<br/>"; } } catch (Exception ex) { _controladorHorario = new ControladorHorario(); _controladorHorario.insertarBitacoraError(ex.ToString(), ""); } }