public int AgregarHabilidadCandidato(HabCandidatoE pHabilidadCandidato, int id, ref string oerro)
        {
            int resultado = 0;
            using (SqlConnection _conn = CommonDb.ObtenerConnSql())
            {
                if (!(_conn == null))
                {
                    SqlCommand comado = new SqlCommand();
                    comado.Connection = _conn;
                    comado.CommandType = System.Data.CommandType.StoredProcedure;
                    comado.CommandText = "SP_insertar_HabilidadCandidatoConId";
                    comado.Parameters.AddWithValue("@id", id);
                    comado.Parameters.AddWithValue("@id_habilidadCandidato", pHabilidadCandidato.id_habilidadCandidato);
                    comado.Parameters.AddWithValue("@id_habilidadTecnica", pHabilidadCandidato.idhabilidadTecnica);
                    comado.Parameters.AddWithValue("@id_nivel", pHabilidadCandidato.id_nivel);
                    comado.Parameters.AddWithValue("@id_habilidadAplicacion", pHabilidadCandidato.id_habilidadAplicacion);

                    resultado =(int) comado.ExecuteScalar();
                }
                else
                    resultado = 0;
                oerro = "";
            }
            return resultado;
        }
        private void BTOagregarHabTec_Click(object sender, RoutedEventArgs e)
        {
            //falta arreglar de que no elimine la ROW cuando encuentre una coincidencia
            if (!(string.IsNullOrEmpty(cb_habtecnica.Text) | string.IsNullOrEmpty(cb_nivelhabapp.Text) | string.IsNullOrEmpty(cb_habilidadApp.Text)))
            {

                if (nuevoHabi == false)
                {

                    if (string.IsNullOrEmpty(cb_nivelhabapp.Text))
                    {
                        MessageBox.Show("SELECCIONE EL NIVEL DE SU HABILIDAD TECNICA");
                    }
                    else if (string.IsNullOrEmpty(cb_habtecnica.Text))
                    {
                        MessageBox.Show("EL CAMPO DE HABILIDADA TECNICA NO PUEDE QUEDAR VACIO");
                    }

                    else
                    {
                        string HabilidadTecnica, Nivel, HabilidadAplicacion;
                        int id_habilidadTecnica, id_nivel, id_habilidadAplicacion;

                        id_habilidadTecnica = Convert.ToInt32(cb_habtecnica.SelectedValue);
                        HabilidadTecnica = cb_habtecnica.Text.ToString();
                        id_nivel = Convert.ToInt32(cb_nivelhabapp.SelectedValue);
                        Nivel = cb_nivelhabapp.Text.ToString();
                        id_habilidadAplicacion = Convert.ToInt32(cb_habilidadApp.SelectedValue);
                        HabilidadAplicacion = cb_habilidadApp.Text.ToString();

                        HabCandidatoE habObj = new HabCandidatoE();
                        habObj.id_candidato = int.Parse(idCandidato);
                        habObj.id_habilidadAplicacion = id_habilidadAplicacion;
                        habObj.id_habilidadCandidato = int.Parse(idUpdateHabi);
                        habObj.id_nivel = id_nivel;
                        habObj.idhabilidadTecnica = id_habilidadTecnica;

                        bool agregar = true;
                        foreach (DataRowView dr in DataG_Habilidades.Items)
                        {
                            if (dr.Row.ItemArray[1].ToString() == id_habilidadTecnica.ToString() && dr.Row.ItemArray[2].ToString().ToLower() == HabilidadTecnica.ToLower() &&
                              dr.Row.ItemArray[3].ToString().ToLower() == id_nivel.ToString().ToLower() && dr.Row.ItemArray[4].ToString().ToLower() == Nivel.ToLower() &&
                              dr.Row.ItemArray[5].ToString().ToLower() == id_habilidadAplicacion.ToString().ToLower() && dr.Row.ItemArray[6].ToString().ToLower() == HabilidadAplicacion.ToString().ToLower())
                            {
                                agregar = false;
                            }
                        }
                        if (agregar)
                        {
                            //este codigo borra la fila y luego inserta la nueva, estaba justo despues del if para comprobar si era actualizacion o una nuevo
                            tablaHabilidades.Rows.Remove(RowPivotInfoAca);

                            RowPivotInfoAca = null;
                            //****************

                            HabilidadCandidatoBLL habiBll = new HabilidadCandidatoBLL();
                            habiBll.ActualizarHabilidadCandidato(habObj, habObj.id_candidato, ref oerro);

                            tablaHabilidades.Rows.Add(habObj.id_habilidadCandidato, id_habilidadTecnica, HabilidadTecnica, id_nivel, Nivel, id_habilidadAplicacion, HabilidadAplicacion);
                        }
                        else
                        {
                            MessageBox.Show("Esa informacion ya ha sido ingresada, por favor revisar los datos.");
                            agregar = true;
                        }

                        cb_habtecnica.Text = string.Empty;
                        cb_nivelhabapp.Text = string.Empty;
                        cb_habilidadApp.Text = string.Empty;
                        nuevoHabi = true;
                    }
                }
                else
                {
                    agregarHabilidad();
                }
            }
            else
            {
                MessageBox.Show("Inserte todos los datos solicitados");
            }
        }
        //**************************//**************************//**************************
        protected void agregarHabilidad()
        {
            if (string.IsNullOrEmpty(cb_nivelhabapp.Text))
            {
                MessageBox.Show("SELECCIONE EL NIVEL DE SU HABILIDAD TECNICA");
            }
            else if (string.IsNullOrEmpty(cb_habtecnica.Text))
            {
                MessageBox.Show("EL CAMPO DE HABILIDADA TECNICA NO PUEDE QUEDAR VACIO");
            }

            else
            {
                string HabilidadTecnica, Nivel, HabilidadAplicacion;
                int id_habilidadTecnica, id_nivel, id_habilidadAplicacion;

                id_habilidadTecnica = Convert.ToInt32(cb_habtecnica.SelectedValue);
                HabilidadTecnica = cb_habtecnica.Text.ToString();
                id_nivel = Convert.ToInt32(cb_nivelhabapp.SelectedValue);
                Nivel = cb_nivelhabapp.Text.ToString();
                id_habilidadAplicacion = Convert.ToInt32(cb_habilidadApp.SelectedValue);
                HabilidadAplicacion = cb_habilidadApp.Text.ToString();

                //Procedimiento para agregar las habilidades a la base

                HabCandidatoE refHabCandidato = new HabCandidatoE();
                int returnHabilidades = 0;

                refHabCandidato.idhabilidadTecnica = id_habilidadTecnica;
                refHabCandidato.id_nivel = id_nivel;
                refHabCandidato.id_habilidadAplicacion = id_habilidadAplicacion;

                bool agregar = true;
                foreach (DataRowView dr in DataG_Habilidades.Items)
                {
                    if (dr.Row.ItemArray[1].ToString() == id_habilidadTecnica.ToString() && dr.Row.ItemArray[2].ToString().ToLower() == HabilidadTecnica.ToString().ToLower() &&
                      dr.Row.ItemArray[3].ToString().ToLower() == id_nivel.ToString().ToLower() && dr.Row.ItemArray[4].ToString().ToLower() == Nivel.ToLower() &&
                      dr.Row.ItemArray[5].ToString().ToLower() == id_habilidadAplicacion.ToString().ToLower() &&
                      dr.Row.ItemArray[6].ToString().ToLower() == HabilidadAplicacion.ToLower())
                    {
                        agregar = false;
                    }
                }
                if (agregar)
                {
                    returnHabilidades = _habilidadCandidatoBL.AgregarHabilidadCandidato(refHabCandidato, int.Parse(idCandidato), ref oerro);
                    tablaHabilidades.Rows.Add(returnHabilidades, id_habilidadTecnica, HabilidadTecnica, id_nivel, Nivel, id_habilidadAplicacion, HabilidadAplicacion);
                }
                else
                {
                    MessageBox.Show("Esa informacion ya ha sido ingresada, por favor revisar los datos.");
                    agregar = true;
                }
                //********************************************************

                //********************************************************

                DataG_Habilidades.ItemsSource = tablaHabilidades.DefaultView;

                cb_habtecnica.Text = string.Empty;
                cb_nivelhabapp.Text = string.Empty;
                cb_habilidadApp.Text = string.Empty;
            }
        }
        private void btn_Habilidades_Click(object sender, RoutedEventArgs e)
        {
            // VARIABLE PARA MESAJE DE GUARDAR DATOS DE HABILIDAD
            int returVariable1 = 0;

            // BOTON PARA GUARDARRR LOS DATOS HABILIDADES  (METODOS)

            string oerror = "";
            HabCandidatoE refHabCandidato = new HabCandidatoE();
            foreach (DataRowView row in DataG_Habilidades.Items)
            {

                refHabCandidato.idhabilidadTecnica = Convert.ToInt32(row[0]);
                refHabCandidato.id_nivel = Convert.ToInt32(row[2]);
                refHabCandidato.id_habilidadAplicacion = Convert.ToInt32(row[4]);

                returVariable1 = _habilidadCandidatoBL.GuardarHabilidadCandidato(refHabCandidato, ref oerror);

            }
            if (returVariable1 > 0)
            {
                MessageBox.Show("Registro fue guardado con exito..", "Informacion", MessageBoxButton.OK, MessageBoxImage.Information);
                tcPrincipal.SelectedIndex = 4;
                tab4.IsEnabled = false;

            }
        }
        public int GuardarHabilidadCandidato(HabCandidatoE pHabilidadCandidato, ref string oError)
        {
            int resultado = 0;
            using (SqlConnection _conn = CommonDb.ObtenerConnSql())
            {
                if (!(_conn == null))
                {
                    SqlCommand comado = new SqlCommand();
                    comado.Connection = _conn;
                    comado.CommandType = System.Data.CommandType.StoredProcedure;
                    comado.CommandText = "SP_insertar_HabilidadCandidato";
                    comado.Parameters.AddWithValue("@id_habilidadCandidato", pHabilidadCandidato.id_habilidadCandidato);
                    comado.Parameters.AddWithValue("@id_habilidadTecnica", pHabilidadCandidato.idhabilidadTecnica);
                    comado.Parameters.AddWithValue("@id_nivel", pHabilidadCandidato.id_nivel);
                    comado.Parameters.AddWithValue("@id_habilidadAplicacion", pHabilidadCandidato.id_habilidadAplicacion);

                    resultado = comado.ExecuteNonQuery();
                }
                else
                    resultado = 0;
                oError = "";
            }
            return resultado;
        }
        //***BOTON PARA GUARDAR TODA LA INFORMACION DE UN NUEVO PERFIL***///
        private void GuardarTodo_Click(object sender, RoutedEventArgs e)
        {
            //VARIABLE DE MENSAJE AL GUARDAR INFORMACION ACADEMICA

            int returVariable3 = 0;
            int variable1 = 2;
            int variable2 = 0;
            if (variable1 != returVariable3 && variable2 != returVariable3)
            { }
            else if (variable1 != returVariable3 || variable2 != returVariable3) { }
            string cadenaFaltanDatos = "";

            ///////////////////////////////***FIN DEL IF*** //////////////////////////////
            //VALIDA LOS CAMPOS OBLIGATORIOS DEL TAB 1
            if (string.IsNullOrEmpty(txtNombreInfBasica.Text) || string.IsNullOrEmpty(DateFechNacInfoBasica.Text) || string.IsNullOrEmpty(txtNombreInfBasica.Text) || (string.IsNullOrEmpty(cbDeptos.Text)) ||
                (string.IsNullOrEmpty(cbMunic.Text)) || (string.IsNullOrEmpty(cb_profesionesIB.Text)) || (string.IsNullOrEmpty(cbSitLab.Text)) || (string.IsNullOrEmpty(txtTeNocelularInfBasica.Text)) ||
                (string.IsNullOrEmpty(txtCorreoInfBasica.Text)) || (string.IsNullOrEmpty(txtNoduiInfBasica.Text)) || (string.IsNullOrEmpty(txtNnitInfBasica.Text))
                )
            {
                MessageBox.Show("Este fomulario tiene campos obligatorios '*' ", "Informacion", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else
            {

                if (DateTime.Compare(DateTime.Now.Date, DateFechNacInfoBasica.SelectedDate.Value.Date) > 0)
                {
                    //SE VALIDAN QUE LOS DEMAS GRID CONTENGAN DATOS, SE RECOMIENDA AGREGAR AQUELLOS GRID QUE CONSIDEREN SEAN NECESARIOS.
                    if (DataG_Habilidades.Items.Count == 0 || DataGrid_InfAcademica.Items.Count == 0)
                    {
                        cadenaFaltanDatos = ", YA QUE NO A INGRESADO TODA LA INFORMACION NECESARIA.";
                        MessageBox.Show("Ingrese informacion acdemica y habilidades ya que son formularios requeridos", "Infomacion", MessageBoxButton.OK, MessageBoxImage.Information);

                    }
                    else
                    {
                        //PARAMETROS QUE INGRESARAN A LA BASE TAB INFOMACION BASICA
                        InfoBasicaE _InfoBasicaE = new InfoBasicaE();
                        DateTime edad = DateFechNacInfoBasica.SelectedDate.Value;
                        _InfoBasicaE.nombre = txtNombreInfBasica.Text.ToUpper();
                        _InfoBasicaE.nacionalidad = txtNacionalidadInfBasica.Text.ToUpper();
                        _InfoBasicaE.telefono_celular = txtTeNocelularInfBasica.Text.ToUpper();
                        _InfoBasicaE.telefono_fijo = txtTelefonoCasaInfBasica.Text.ToUpper();
                        //_InfoBasicaE.profesiones = cb_profesionesIB.Text.ToUpper();
                        _InfoBasicaE.id_profesiones = Convert.ToInt32(cb_profesionesIB.SelectedValue);
                        _InfoBasicaE.correo = txtCorreoInfBasica.Text;
                        _InfoBasicaE.fecha_nacimiento = DateFechNacInfoBasica.SelectedDate.Value;
                        _InfoBasicaE.direccion = txtLugarResidenciaInfBasica.Text.ToUpper();
                        //_Imagen = ControlImagen.ObtenerImagenEnObjecto(_Imagen.RutaImagen);
                        _InfoBasicaE.FotoCandidato = _Imagen.OnlyName;
                        if (rbsexoM.IsChecked == true)
                        {
                            _InfoBasicaE.id_genero = 1;
                        }
                        else if (rbsexoF.IsChecked == true)
                        {
                            _InfoBasicaE.id_genero = 2;
                        }

                        _InfoBasicaE.DUI = txtNoduiInfBasica.Text;
                        _InfoBasicaE.NIT = txtNnitInfBasica.Text;
                        _InfoBasicaE.AFP = txtNafpInfBasica.Text;
                        _InfoBasicaE.ISSS = txtNiss.Text;
                        _InfoBasicaE.id_municipio = Convert.ToInt32(cbMunic.SelectedValue);
                        _InfoBasicaE.id_situacionProfesional = Convert.ToInt32(cbSitLab.SelectedValue);
                        string oerro = "";

                        int returinfobasica = 0;
                        returinfobasica = _InfobasicaBL.GudarInfBasica(_InfoBasicaE, ref oerro);

                        // BOTON PARA GUARDAR INFORMACION ACADEMICA (EVENTO)

                        InformacionAcademicaE refinfoAcademica = new InformacionAcademicaE();
                        int returinfoacademica = 0;
                        foreach (DataRowView row in DataGrid_InfAcademica.Items)
                        {
                            refinfoAcademica.id_tipoEducacion = Convert.ToInt32(row[0]);
                            refinfoAcademica.titulo = Convert.ToString(row[2]);
                            refinfoAcademica.institucion = Convert.ToString(row[3]);
                            refinfoAcademica.anio_de_finalizacion = Convert.ToInt32(row[4]);
                            refinfoAcademica.id_statusAcademico = Convert.ToInt32(row[6]);

                            returinfoacademica = _informacionAcademicaBL.GuardarInfomacionAcademica(refinfoAcademica, ref oerro);
                        }

                        //BOTON PARA GUARDAR INFORMACION LABORAL

                        ExpLaboralE refExpL = new ExpLaboralE();
                        int returinfoLaboral = 0;
                        foreach (DataRowView row1 in DataGrid_Inf_Laboral.Items)
                        {
                            refExpL.nombreEmpresa = Convert.ToString(row1[0]);
                            refExpL.cargoDesp = Convert.ToString(row1[1]);
                            refExpL.descripPuesto = Convert.ToString(row1[2]);
                            refExpL.fechaInicio = Convert.ToString(row1[3]);
                            refExpL.fechaFin = Convert.ToString(row1[4]);

                            returinfoLaboral = _experienciaLabBL.GuardarexperienciaLab(refExpL, ref oerro);

                        }

                        // BOTON PARA GUARDARRR LOS DATOS HABILIDADES  (METODOS)

                        HabCandidatoE refHabCandidato = new HabCandidatoE();
                        int returnHabilidades = 0;
                        foreach (DataRowView row3 in DataG_Habilidades.Items)
                        {

                            refHabCandidato.idhabilidadTecnica = Convert.ToInt32(row3[0]);
                            refHabCandidato.id_nivel = Convert.ToInt32(row3[2]);
                            refHabCandidato.id_habilidadAplicacion = Convert.ToInt32(row3[4]);

                            returnHabilidades = _habilidadCandidatoBL.GuardarHabilidadCandidato(refHabCandidato, ref oerro);

                        }

                        //BOTON PARA GUARDAR CERTIFICACIONES EN LA BASE (METODOS)

                        CertificacionesE certifi = new CertificacionesE();
                        int returnCertificaciones = 0;

                        foreach (DataRowView row2 in DataGrid_Certificaciones.Items)
                        {
                            certifi.nombre = Convert.ToString(row2[0]);
                            certifi.institucion = Convert.ToString(row2[1]);
                            certifi.anio = Convert.ToInt16(row2[2]);

                            returnCertificaciones = _certificanesBL.GuardarCertificacionesLAB(certifi, ref oerro);

                        }

                        //BOTON PARA INGRESAR REFERENCIAS A
                        RefecenciasE refE = new RefecenciasE();
                        int returReferencias = 0;
                        foreach (DataRowView row5 in DataGrid_Referencias.Items)
                        {
                            refE.id_tipoReferencias = Convert.ToInt32(row5[0]);
                            refE.nombre = Convert.ToString(row5[2]);
                            refE.telefono = Convert.ToString(row5[3]);
                            refE.descripcion = Convert.ToString(row5[4]);

                            returReferencias = _referenciasBL.GuardarReferencias(refE, ref oerro);

                        }
                        if (oerro == "")
                        {
                            #region Capturar imgen por genero
                            string pMensaje = "", pURL = "";
                            switch (_InfoBasicaE.id_genero)
                            {
                                case 1:
                                    pMensaje = "candidato";
                                    pURL = string.IsNullOrEmpty(_Imagen.RutaImagen) ? @"C:\Imagenes\Fotos\User_default\Userman.png" : _Imagen.RutaImagen;
                                    break;
                                case 2:
                                    pMensaje = "candidata";
                                    pURL = string.IsNullOrEmpty(_Imagen.RutaImagen) ? @"C:\Imagenes\Fotos\User_default\userwoman.png" : _Imagen.RutaImagen;
                                    break;
                            }
                            #endregion

                            if (Elijiomagen)
                                ControlImagen.GuardarImagenEnRuta(_Imagen);

                            #region Mostrar mensaje personalizado

                            SimpleAlert simpleAlert = new SimpleAlert();
                            simpleAlert.Title = "Nuevo Registro";
                            simpleAlert.NamePeople = txtNombreInfBasica.Text;
                            simpleAlert.Url = pURL;

                            simpleAlert.Message = "Se ha creado el nuevo " + pMensaje;
                            simpleAlert.ShowDialog();

                            #region Redireccionamiento
                            Busqueda _menusBusqueda = new Busqueda();
                            _menusBusqueda.InitializeComponent();
                            this.Close();
                            _menusBusqueda.Show();
                            #endregion
                            #endregion

                        }

                        else
                        {
                            MessageBoxResult mbr = MessageBox.Show("OCURRIO UN ERROR AL GUARDAR SUS DATOS... ERROR: " + oerro, "Infomacion", MessageBoxButton.OK, MessageBoxImage.Information);

                        }
                    }
                }
                else
                {
                    MessageBox.Show("La fecha de nacimiento debe ser menor a la fecha actual.","Error", MessageBoxButton.OK, MessageBoxImage.Information);
                }
            }
        }