private void Materias_RecordUpdated(object sender, Infragistics.Windows.DataPresenter.Events.RecordUpdatedEventArgs e)
        {
            try
            {
                DataRecord myRecord = (DataRecord)e.Record;
                // Display the selected Records values in the appropriate
                // editor

                ClasificacionSga materia = new ClasificacionSga(myRecord.Cells[3].Value.ToString());

                materia.IdClasificacion = Convert.ToInt32(myRecord.Cells[0].Value);
                materia.Nivel = Convert.ToInt32(myRecord.Cells[1].Value);
                materia.Padre = Convert.ToInt32(myRecord.Cells[2].Value);
                materia.Descripcion = myRecord.Cells[3].Value.ToString();
                materia.SeccionPadre = Convert.ToInt32(myRecord.Cells[4].Value);
                materia.Historica = Convert.ToInt32(myRecord.Cells[5].Value);
                materia.Consec = Convert.ToInt32(myRecord.Cells[6].Value);
                materia.Hoja = Convert.ToInt32(myRecord.Cells[7].Value);
                materia.NvlImpresion = Convert.ToInt32(myRecord.Cells[8].Value);

                if (registroNuevo)
                    new ClasificacionSgaModel().InsertarRegistro(materia);
                else
                    new ClasificacionSgaModel().ActualizaRegistroMaterias(materia);

                registroNuevo = false;
            }
            catch (InvalidCastException)
            {
                e.Record.Visibility = System.Windows.Visibility.Collapsed;
                e.Record.CancelUpdate();
                MessageBox.Show("Debe completar todos los campos para poder ingresar un elemento", "Atención:", MessageBoxButton.OK, MessageBoxImage.Warning);

            }
        }
        private void MateriasTree_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (CbxFiltroVol.SelectedIndex > 1)
            {
                CbxFiltroVol.SelectedIndex = 0;
            }

            selectedClasif = MateriasTree.SelectedItem as ClasificacionSga;

            tesisRel = new RelacionesModel().GetTesisRelacionadas(selectedClasif.IdClasificacion);

            GTesisRel.DataContext = tesisRel;

            LblTotal.Content = GTesisRel.Items.Count + " tesis relacionadas";
        }
 private void MateriasTree_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     selectedClasificacion = MateriasTree.SelectedItem as ClasificacionSga;
 }
        private void GetMateriasTreeString(ClasificacionSga item)
        {
            textoDeLasMaterias = this.GetTabNumber(item.Nivel) + item.Descripcion + "\n" + textoDeLasMaterias;

            if (!item.Descripcion.Contains("Todas"))
                GetMateriasTreeString(item.GetParent());
        }
        /// <summary>
        /// Genera un nuevo registro para la clasificación de Materias SGA
        /// </summary>
        /// <param name="materia">Materia creada</param>
        public void InsertarRegistro(ClasificacionSga materia)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlDataAdapter dataAdapter = null;

            DataSet dataSet = new DataSet();
            DataRow dr;

            try
            {
                string sqlCadena = "SELECT * FROM cMateriasSGA WHERE id = 0";

                dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = new SqlCommand(sqlCadena, connection);

                dataAdapter.Fill(dataSet, "Materias");

                dr = dataSet.Tables["Materias"].NewRow();
                dr["Id"] = materia.IdClasificacion;
                dr["Nivel"] = materia.Nivel;
                dr["Padre"] = materia.Padre;
                dr["Descripcion"] = materia.Descripcion;
                dr["SeccionPadre"] = materia.SeccionPadre;
                dr["Historica"] = materia.Historica;
                dr["Consec"] = materia.Consec;
                dr["Hoja"] = materia.Hoja;
                dr["NvlImpresion"] = materia.NvlImpresion;

                dataSet.Tables["Materias"].Rows.Add(dr);

                dataAdapter.InsertCommand = connection.CreateCommand();
                dataAdapter.InsertCommand.CommandText = "INSERT INTO cMateriasSGA(Id,Nivel,Padre,Descripcion,SeccionPadre,Historica,Consec,Hoja,NvlImpresion)" +
                                                        " VALUES(@Id,@Nivel,@Padre,@Descripcion,@SeccionPadre,@Historica,@Consec,@Hoja,@NvlImpresion)";

                dataAdapter.InsertCommand.Parameters.Add("@Id", SqlDbType.BigInt, 0, "Id");
                dataAdapter.InsertCommand.Parameters.Add("@Nivel", SqlDbType.Int, 0, "Nivel");
                dataAdapter.InsertCommand.Parameters.Add("@Padre", SqlDbType.Int, 0, "Padre");
                dataAdapter.InsertCommand.Parameters.Add("@Descripcion", SqlDbType.VarChar, 0, "Descripcion");
                dataAdapter.InsertCommand.Parameters.Add("@SeccionPadre", SqlDbType.Int, 0, "SeccionPadre");
                dataAdapter.InsertCommand.Parameters.Add("@Historica", SqlDbType.Int, 0, "Historica");
                dataAdapter.InsertCommand.Parameters.Add("@Consec", SqlDbType.Int, 0, "Consec");
                dataAdapter.InsertCommand.Parameters.Add("@Hoja", SqlDbType.Int, 0, "Hoja");
                dataAdapter.InsertCommand.Parameters.Add("@NvlImpresion", SqlDbType.Int, 0, "NvlImpresion");

                dataAdapter.Update(dataSet, "Materias");
                dataSet.Dispose();
                dataAdapter.Dispose();
            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            finally
            {
                connection.Close();
            }
        }
        /// <summary>
        /// Actualiza la información de la Materia SGA que se esta editando
        /// </summary>
        /// <param name="materia">Materia SGA</param>
        public void ActualizaRegistroMaterias(ClasificacionSga materia)
        {
            SqlConnection connection = new SqlConnection(connectionString);
            SqlDataAdapter dataAdapter;
            SqlCommand cmd;
            cmd = connection.CreateCommand();
            cmd.Connection = connection;

            try
            {
                connection.Open();

                DataSet dataSet = new DataSet();
                DataRow dr;

                string sqlCadena = "SELECT * FROM cMateriasSGA WHERE id = " + materia.IdClasificacion;

                dataAdapter = new SqlDataAdapter();
                dataAdapter.SelectCommand = new SqlCommand(sqlCadena, connection);

                dataAdapter.Fill(dataSet, "Materia");

                dr = dataSet.Tables[0].Rows[0];
                dr.BeginEdit();
                dr["Id"] = materia.IdClasificacion;
                dr["Nivel"] = materia.Nivel;
                dr["Padre"] = materia.Padre;
                dr["Descripcion"] = materia.Descripcion;
                dr["SeccionPadre"] = materia.SeccionPadre;
                dr["Historica"] = materia.Historica;
                dr["Consec"] = materia.Consec;
                dr["Hoja"] = materia.Hoja;
                dr["NvlImpresion"] = materia.NvlImpresion;

                dr.EndEdit();

                dataAdapter.UpdateCommand = connection.CreateCommand();

                string sSql = "UPDATE cMateriasSGA " +
                              "SET Nivel = @Nivel, " +
                              " Padre = @Padre, Descripcion = @Descripcion, SeccionPadre = @SeccionPadre, Historica = @Historica," +
                              " Consec = @Consec, Hoja = @Hoja,NvlImpresion = @NvlImpresion" +
                              " WHERE Id = @Id";

                dataAdapter.UpdateCommand.CommandText = sSql;

                dataAdapter.UpdateCommand.Parameters.Add("@Nivel", SqlDbType.Int, 0, "Nivel");
                dataAdapter.UpdateCommand.Parameters.Add("@Padre", SqlDbType.Int, 0, "Padre");
                dataAdapter.UpdateCommand.Parameters.Add("@Descripcion", SqlDbType.VarChar, 0, "Descripcion");
                dataAdapter.UpdateCommand.Parameters.Add("@SeccionPadre", SqlDbType.Int, 0, "SeccionPadre");
                dataAdapter.UpdateCommand.Parameters.Add("@Historica", SqlDbType.Int, 0, "Historica");
                dataAdapter.UpdateCommand.Parameters.Add("@Consec", SqlDbType.Int, 0, "Consec");
                dataAdapter.UpdateCommand.Parameters.Add("@Hoja", SqlDbType.Int, 0, "Hoja");
                dataAdapter.UpdateCommand.Parameters.Add("@NvlImpresion", SqlDbType.Int, 0, "NvlImpresion");
                dataAdapter.UpdateCommand.Parameters.Add("@Id", SqlDbType.BigInt, 0, "Id");

                dataAdapter.Update(dataSet, "Materia");
                dataSet.Dispose();
                dataAdapter.Dispose();

            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            finally
            {
                connection.Close();
            }
        }
        public List<ClasificacionSga> GetEstructuraNivel(int padre, bool isReadOnly)
        {
            List<ClasificacionSga> listaMaterias = new List<ClasificacionSga>();

            SqlConnection connection = new SqlConnection(connectionString);// (SqlConnection)DbConnDac.GetConnectionIus();

            SqlCommand cmd;
            SqlDataReader dataReader;
            string miQry;

            try
            {
                connection.Open();
                miQry = "Select * FROM cMateriasSGA WHERE padre = " + padre + " ORDER BY Consec";
                cmd = new SqlCommand(miQry, connection);
                dataReader = cmd.ExecuteReader();

                while (dataReader.Read())
                {
                    ClasificacionSga materia = new ClasificacionSga(dataReader["Descripcion"].ToString(),
                        GetEstructuraNivel(Convert.ToInt32(dataReader["ID"].ToString()), isReadOnly), Convert.ToInt32(dataReader["ID"].ToString()));
                    materia.Nivel = Convert.ToInt32(dataReader["Nivel"]);
                    materia.IsReadOnly = isReadOnly;

                    listaMaterias.Add(materia);
                }
            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception,ClasificacionSgaModel", "SgaControl");
            }
            finally
            {
                connection.Close();
            }

            return listaMaterias;
        }
        public static List<ClasificacionSga> CreateMateriasTree(bool isReadOnly)
        {
            List<ClasificacionSga> listaMaterias = new ClasificacionSgaModel().GetEstructuraNivel(-1,isReadOnly);

            ClasificacionSga root = new ClasificacionSga("Todas")
            {
                IsInitiallySelected = true,
                SubClasificaciones = listaMaterias
            };

            root.Initialize();
            return new List<ClasificacionSga> { root };
        }