/// <summary>
        /// Obtiene la lista de funciones que puede ejercer un funcionario en su organismo de adscripción
        /// </summary>
        /// <param name="tipoFuncion">Tipo de función que se esta solicitando</param>
        /// <returns></returns>
        public ObservableCollection<CommonProperties> GetFunciones(int tipoFuncion)
        {
            ObservableCollection<CommonProperties> funciones = new ObservableCollection<CommonProperties>();

            SqlConnection oleConne = new SqlConnection(ConfigurationManager.ConnectionStrings["Directorio"].ToString());
            SqlCommand cmd = null;
            SqlDataReader reader = null;

            const String SqlQuery = "SELECT * FROM Funciones WHERE TipoFuncion = @TipoFuncion OR TipoFuncion = 0 ORDER BY IdFuncion";

            try
            {
                oleConne.Open();

                cmd = new SqlCommand(SqlQuery, oleConne);
                cmd.Parameters.AddWithValue("@TipoFuncion", tipoFuncion);
                reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        CommonProperties funcion = new CommonProperties()
                        {
                            IdElemento = Convert.ToInt32(reader["idFuncion"]),
                            Descripcion = reader["Funcion"].ToString()
                        };

                        funciones.Add(funcion);
                    }
                }
            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, FuncionesModel", 0);
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, FuncionesModel", 0);
            }
            finally
            {
                cmd.Dispose();
                reader.Close();
                oleConne.Close();
            }

            return funciones;
        }
        public List<CommonProperties> GetCircuitos()
        {
            List<CommonProperties> circuitos = new List<CommonProperties>();

            SqlConnection oleConne = new SqlConnection(ConfigurationManager.ConnectionStrings["Directorio"].ToString());
            SqlCommand cmd;
            SqlDataReader reader = null;

            try
            {
                oleConne.Open();

                cmd = new SqlCommand("SELECT * FROM Circuitos", oleConne);
                reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        CommonProperties circuito = new CommonProperties()
                        {
                            IdElemento = Convert.ToInt32(reader["idCircuito"]),
                            Descripcion = reader["Circuito"].ToString()
                        };

                        circuitos.Add(circuito);
                    }
                }
                reader.Close();
            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, CircuitosModel", 0);
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, CircuitosModel", 0);
            }
            finally
            {
                reader.Close();
                oleConne.Close();
            }

            return circuitos;
        }
        public ObservableCollection<CommonProperties> GetEstadoFuncionarios()
        {
            ObservableCollection<CommonProperties> estados = new ObservableCollection<CommonProperties>();

            SqlConnection oleConne = new SqlConnection(ConfigurationManager.ConnectionStrings["Directorio"].ToString());
            SqlCommand cmd = null;
            SqlDataReader reader = null;

            String sqlCadena = "SELECT * FROM EstadoFuncionarios ";

            try
            {
                oleConne.Open();

                cmd = new SqlCommand(sqlCadena, oleConne);
                reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    CommonProperties estado = new CommonProperties();
                    estado.IdElemento = reader["IdEstado"] as int? ?? 0;
                    estado.Descripcion = reader["Estado"].ToString();

                    estados.Add(estado);
                }
            }
            catch (SqlException ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, FuncionariosModel", 0);
            }
            catch (Exception ex)
            {
                string methodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                ErrorUtilities.SetNewErrorMessage(ex, methodName + " Exception, FuncionariosModel", 0);
            }
            finally
            {
                cmd.Dispose();
                reader.Close();
                oleConne.Close();
            }
            return estados;
        }
        private void RbtnAceptar_Click(object sender, RoutedEventArgs e)
        {
            //if (Convert.ToInt32(RcbCircuito.SelectedValue) < 1 || Convert.ToInt32(RcbOrdinal.SelectedValue) < 1)
            //{
            //    MessageBox.Show("Debes seleccionar el circuito al que pertenece el tribunal, así como su respectivo ordinal", "ATENCIÓN",
            //                        MessageBoxButton.OK, MessageBoxImage.Information);
            //    return;
            //}

            organismo.TipoOrganismo = Convert.ToInt32(this.RcbOrganismo.SelectedValue);
            organismo.Circuito = Convert.ToInt32(this.RcbCircuito.SelectedValue);
            organismo.Ordinal = Convert.ToInt32(this.RcbOrdinal.SelectedValue);
            organismo.Ciudad = Convert.ToInt32(this.RcbCiudad.SelectedValue);

            //Update Organismo
            if (isUpdating)
            {
                new OrganismosModel(organismo).UpdateOrganismo();
            }
            else
            {
                new OrganismosModel(organismo).AddNuevoOrganismo();

                if (organismo.ListaFuncionarios == null)
                    organismo.ListaFuncionarios = new ObservableCollection<Funcionarios>();

            }

            //Agregamos las nuevas relaciones
            if (addFuncionarioToTribunal != null)
            {
                foreach (Funcionarios funcionario in addFuncionarioToTribunal)
                {
                    new FuncionariosModel().InsertaRelacionFuncionario(funcionario, organismo.IdOrganismo);
                }
            }

            

            if (organismo.DoPresidenteChange)
            {
                CommonProperties newPres = new CommonProperties();
                newPres.Descripcion = organismo.IdOrganismo.ToString();
                newPres.IdElemento = organismo.IdFuncionarioPresidente;
                CambiosSingleton.CambioPresidente.Add(newPres);
            }


            this.Close();
        }