/// <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 los datos de los resultados de una pregunta de una encuesta. /// Recibe por parámetro el id del usuario y devuelve un objeto Resultados Graficos. /// </summary> /// <param name="idUsuario">ID (int) de la encuesta a consultar. Por ejemplo: 59</param> /// <returns>Objeto ResultadosGraficos que posee los siguientes atributos: (labels (lista de strings, series (lista de doubles))</returns> public static ResultadosGraficos ObtenerDatosEncuestasXUsuario(int idUsuario) { ResultadosGraficos rs = new ResultadosGraficos(); try { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; cmd.CommandText = "SELECT YEAR(fechaEncuesta) as anio,MONTH(fechaEncuesta) as mes,count(*) as cantidad " + " FROM Encuestas " + " WHERE idUsuario = @idUsuario" + " GROUP BY YEAR(fechaEncuesta),MONTH(fechaEncuesta)"; cmd.Parameters.AddWithValue("@idUsuario", idUsuario); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { rs.labels.Add(dr["anio"].ToString() + " - " + dr["mes"].ToString()); rs.series.Add(int.Parse(dr["cantidad"].ToString())); } cn.Close(); dr.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } return(rs); }