/// <summary> /// Este método obtiene todos los usuarios filtrados por nombre de usuario. /// Recibe por parámetro el filtro de nombre de usuario y devuelve una lista de usuarios flitrados. /// </summary> /// <param name="filtro">String para filtrar por nombre de usuario. Por ejemplo: Juan</param> /// <returns>Lista de objetos Usuario. El objeto Usuario posee los siguientes atributos: (idUsuario, nombreUsuario, emailUsuario, passwordUsuario)</returns> public static Usuario[] ObtenerUsuarios(string filtro) { List <Usuario> listaUsuarios = new List <Usuario>(); try { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; string consulta = "Select u.idUsuario, u.nombreUsuario, u.emailUsuario, u.passwordUsuario,u.fechaAlta,max(e.fechaEncuesta) as ultimaEncuesta, count(*) as encuestasCreadas From Usuario u " + " left join Encuestas e ON u.idUsuario = e.idUsuario "; if (!string.IsNullOrEmpty(filtro)) { consulta += " WHERE (u.nombreUsuario like @filtro OR u.emailUsuario like @filtro)"; cmd.Parameters.AddWithValue("@filtro", "%" + filtro + "%"); } consulta += " GROUP BY u.idUsuario, u.nombreUsuario, u.emailUsuario, u.passwordUsuario,u.fechaAlta "; cmd.CommandText = consulta; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Usuario usuario = new Usuario(); usuario.idUsuario = int.Parse(dr["idUsuario"].ToString()); usuario.nombreUsuario = dr["nombreUsuario"].ToString(); usuario.emailUsuario = dr["emailUsuario"].ToString(); usuario.passwordUsuario = dr["passwordUsuario"].ToString(); usuario.fechaAlta = DAOMetodosUtiles.ParsearFecha(dr["fechaAlta"].ToString()); if (dr["ultimaEncuesta"] == DBNull.Value) { usuario.ultimaEncuesta = DateTime.MinValue; usuario.encuestasCreadas = 0; } else { usuario.ultimaEncuesta = DAOMetodosUtiles.ParsearFecha(dr["ultimaEncuesta"].ToString()); usuario.encuestasCreadas = int.Parse(dr["encuestasCreadas"].ToString()); } listaUsuarios.Add(usuario); } cn.Close(); dr.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } return(listaUsuarios.ToArray <Usuario>()); }
/// <summary> /// Este método obtiene un usuario almacenado en la base de datos. /// Recibe por parámetro el id del usuario a consultar y devuelve el usuario que se corresponde con ese id. /// </summary> /// <param name="idUsuario">ID (int) del usuario a consultar. Por ejemplo: 27</param> /// <returns>Objeto que posee los siguientes atributos: (idUsuario, nombreUsuario, emailUsuario, passwordUsuario)</returns> public static Usuario ObtenerUsuario(int idUsuario) { Usuario usuario = new Usuario(); try { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText = "Select u.idUsuario, u.nombreUsuario, u.emailUsuario, u.passwordUsuario,u.fechaAlta," + "max(e.fechaEncuesta) as ultimaEncuesta, count(*) as encuestasCreadas " + "From Usuario u left join Encuestas e on u.idUsuario = e.idUsuario " + "where u.idUsuario = @idUsuario " + "GROUP BY u.idUsuario, u.nombreUsuario, u.emailUsuario, u.passwordUsuario,u.fechaAlta"; cmd.Parameters.AddWithValue("@idUsuario", idUsuario); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { usuario.idUsuario = int.Parse(dr["idUsuario"].ToString()); usuario.nombreUsuario = dr["nombreUsuario"].ToString(); usuario.emailUsuario = dr["emailUsuario"].ToString(); usuario.passwordUsuario = dr["passwordUsuario"].ToString(); usuario.fechaAlta = DAOMetodosUtiles.ParsearFecha(dr["fechaAlta"].ToString()); if (dr["ultimaEncuesta"] == DBNull.Value) { usuario.ultimaEncuesta = DateTime.MinValue; usuario.encuestasCreadas = 0; } else { usuario.ultimaEncuesta = DAOMetodosUtiles.ParsearFecha(dr["ultimaEncuesta"].ToString()); usuario.encuestasCreadas = int.Parse(dr["encuestasCreadas"].ToString()); } } cn.Close(); dr.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } return(usuario); }
/// <summary> /// Este método obtiene los datos de los resultados de una pregunta de una encuesta. /// Recibe por parámetro el id de la encuesta y el id de la pregunta a consultar y devuelve un objeto Resultados Graficos. /// </summary> /// <param name="idEncuesta">ID (int) de la encuesta a consultar. Por ejemplo: 59</param> /// <param name="idPregunta">ID (int) de la pregunta a consultar. Por ejemplo: 1</param> /// <returns>Objeto ResultadosGraficos que posee los siguientes atributos: (labels (lista de strings, series (lista de doubles))</returns> public static ResultadosGraficos ObtenerDatos(int idEncuesta, int idPregunta) { ResultadosGraficos rs = new ResultadosGraficos(); try { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT R.idPregunta, R.descripcionRespuesta as descripcion, COUNT(*) as cantidad, MAX(r.fechaRespuesta) as ultimaRespuesta FROM Respuestas R, Preguntas P WHERE P.idPregunta = R.idPregunta AND P.idEncuesta=R.idEncuesta AND P.idPregunta = @idPregunta and p.IdEncuesta=@idEncuesta GROUP BY R.idPregunta, R.descripcionRespuesta"; cmd.Parameters.AddWithValue("@idPregunta", idPregunta); cmd.Parameters.AddWithValue("@idEncuesta", idEncuesta); SqlDataReader dr = cmd.ExecuteReader(); int cantidadTotal = ObtenerCantidadTotalDeRespuestas(idEncuesta, idPregunta); DateTime maximaFecha = DateTime.MinValue; while (dr.Read()) { rs.labels.Add(dr["descripcion"].ToString()); rs.series.Add(Math.Round((double.Parse(dr["cantidad"].ToString()) / cantidadTotal * 100), 2)); rs.cantidadTotalRespuestas = cantidadTotal; DateTime d = DAOMetodosUtiles.ParsearFecha(dr["ultimaRespuesta"].ToString()); if (d.CompareTo(maximaFecha) > 0) { maximaFecha = d; } } rs.ultimaActualizacion = maximaFecha; cn.Close(); dr.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } return(rs); }
/// <summary> /// Este método obtiene todas las respuestas almacenadas en la base de datos. /// No recibe ningún parámetro y devuelve una lista de todas las respuestas. /// </summary> /// <returns>Lista de respuestas. Cada objeto respuesta posee los siguientes atributos: idRespuesta, idPregunta, idEncuesta, idEncuestado, codigoPregunta, descripcionRespuesta</returns> public static Respuestas[] ObtenerRespuestas() { List <Respuestas> listaRespuestas = new List <Respuestas>(); try { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText = "Select * from Respuestas"; SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Respuestas respuestas = new Respuestas(); respuestas.idRespuesta = int.Parse(dr["idRespuesta"].ToString()); respuestas.idPregunta = int.Parse(dr["idPregunta"].ToString()); respuestas.idEncuesta = int.Parse(dr["idEncuesta"].ToString()); respuestas.idEncuestado = int.Parse(dr["idEncuestado"].ToString()); respuestas.descripcionRespuesta = dr["descripcionRespuesta"].ToString(); respuestas.fechaRespuesta = DAOMetodosUtiles.ParsearFecha((dr["fechaRespuesta"].ToString())); listaRespuestas.Add(respuestas); } cn.Close(); dr.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } return(listaRespuestas.ToArray <Respuestas>()); }