Beispiel #1
0
        /// <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);
            }
        }