/// <summary> /// Este método inserta por cada encuesta creada, los diferentes elementos de esa encuesta. /// Los elementos son todas las preguntas que componen esa encuesta. /// Recibe por parámetro el id de la Encuesta y una Encuesta de tipo EncuestaSurvey. /// </summary> /// <param name="idEncuesta">ID (int) de la encuesta insertada. Por ejemplo: 27</param> /// <param name="encuestaSurvey">Objeto que posee los siguentes atributos: (title, List PaginaSurvey). /// La lista PaginaSurvey tiene ElementSurvey, los cuales poseen los siguientes atributos: (isRequired, name, title, choices, columns, rows, html)</param> public static void insertarDefinicionDesglozado(int idEncuesta, EncuestaSurvey encuestaSurvey) { foreach (PaginaSurvey p in encuestaSurvey.pages) { foreach (ElementSurvey e in p.elements) { TipoPregunta tipo = DAOTipoPregunta.ObtenerTipoPregunta(e.type); Pregunta pregunta = new Pregunta(); pregunta.name = e.name; pregunta.descripcion = e.title; pregunta.idCategoria = 1; pregunta.idTipoPregunta = tipo.idTipoPregunta; pregunta.idEncuesta = idEncuesta; DAOPreguntas.InsertarPregunta(pregunta); } } }
/// <summary> /// Este método inserta una respuesta y el encuestado al que corresponde esa respuesta en la base de datos. /// Recibe una lista de respuestas y un encuestado. /// </summary> /// <param name="listaRespuestas">Lista de respuestas. Cada objeto respuesta posee los siguientes atributos: idRespuesta, idPregunta, idEncuesta, idEncuestado, codigoPregunta, descripcionRespuesta</param> /// <param name="encuestado">Objeto que posee los siguientes atributos: (idEncuestado, tiempoRespuesta, ubicacion)</param> public static void InsertarRespuestas(List <Respuestas> listaRespuestas, Encuestado encuestado) { SqlConnection cn = new SqlConnection(CadenaConexion.cadenaConexion); cn.Open(); SqlTransaction transaction; SqlCommand cmd = new SqlCommand(); cmd.Connection = cn; transaction = cn.BeginTransaction(); cmd.Transaction = transaction; try { int idEncuestado = 0; int idRespuesta = 1; bool primeraVez = true; foreach (var respuesta in listaRespuestas) { if (primeraVez) { cmd.CommandText = @"Insert into Encuestados (tiempoRespuesta, ubicacion) values (@tiempoRespuesta, @ubicacion) SELECT SCOPE_IDENTITY();"; cmd.Parameters.AddWithValue("@tiempoRespuesta", encuestado.tiempoRespuesta); cmd.Parameters.AddWithValue("@ubicacion", encuestado.ubicacion); idEncuestado = int.Parse(cmd.ExecuteScalar().ToString()); primeraVez = false; } Pregunta pregunta = DAOPreguntas.ObtenerPreguntaPorCodigoYEncuesta(respuesta.idEncuesta, respuesta.codigoPregunta); cmd.CommandText = @"Insert into Respuestas (idRespuesta, idPregunta, idEncuesta, idEncuestado, descripcionRespuesta, fechaRespuesta) values (@idRespuesta, @idPregunta, @idEncuesta, @idEncuestado, @descripcionRespuesta, @fechaRespuesta)"; cmd.Parameters.Clear(); cmd.Parameters.AddWithValue("@idRespuesta", idRespuesta); cmd.Parameters.AddWithValue("@idPregunta", pregunta.idPregunta); cmd.Parameters.AddWithValue("@idEncuesta", respuesta.idEncuesta); cmd.Parameters.AddWithValue("@idEncuestado", idEncuestado); cmd.Parameters.AddWithValue("@descripcionRespuesta", respuesta.descripcionRespuesta); cmd.Parameters.AddWithValue("@fechaRespuesta", DateTime.Now); cmd.ExecuteNonQuery(); idRespuesta = idRespuesta + 1; Encuesta encuesta = DAOEncuesta.ObtenerEncuesta(respuesta.idEncuesta); if (encuesta.estadoEncuesta == "creada") { try { SqlConnection cn2 = new SqlConnection(CadenaConexion.cadenaConexion); cn2.Open(); SqlCommand cmd2 = new SqlCommand(); cmd2.Connection = cn2; cmd2.CommandText = @"Update Encuestas set estadoEncuesta='respondida' where idEncuesta=@idEncuesta"; cmd2.Parameters.AddWithValue("@idEncuesta", respuesta.idEncuesta); cmd2.ExecuteNonQuery(); cn2.Close(); } catch (Exception ex) { string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } } } transaction.Commit(); cn.Close(); } catch (Exception ex) { transaction.Rollback(); string mensaje = string.Empty; mensaje = ex.ToString(); Console.WriteLine(mensaje); } }