/*
         * Actualizar codificacion, devuelve 1 si actualizó, 0 en caso contrario
         */
        public int UpdateCodificacion(Codificacion c)
        {
            try
            {
                DataAccess.DataBase bd = new DataBase();
                bd.Connect(); //método conectar
                string sql = "codificacionActualizar";
                bd.CreateCommandSP(sql);
                bd.CreateParameter("@id_codificacion", DbType.Int32, c.Id_codificacion);
                bd.CreateParameter("@codigo_individuo", DbType.String, c.Codigo_individuo);

                int          existe_codificacion;
                DbDataReader resultado = bd.Query();//disponible resultado
                resultado.Read();
                existe_codificacion = resultado.GetInt32(0);
                resultado.Close();

                bd.Close();
                return(existe_codificacion);
            }
            catch (Exception e)
            {
                throw new Exception(e.ToString());
            }
        }
        /*
         * Devuelve los hijos codificados
         */
        public List <Codificacion> GetCodificacion(string codigo_variedad, string pad_codigo_variedad, int año)
        {
            try
            {
                DataAccess.DataBase bd = new DataBase();
                bd.Connect();                          //método conectar
                List <Codificacion> codificaciones = new List <Codificacion>();
                string salida = "codificacionObtener"; //comando sql
                bd.CreateCommandSP(salida);
                bd.CreateParameter("@codigo_variedad", DbType.String, codigo_variedad);
                bd.CreateParameter("@pad_codigo_variedad", DbType.String, pad_codigo_variedad);
                bd.CreateParameter("@ano_codificacion", DbType.Int32, año);

                DbDataReader resultado = bd.Query();//disponible resultado

                while (resultado.Read())
                {
                    Codificacion cod = new Codificacion(resultado.GetInt32(0), resultado.GetString(1));
                    codificaciones.Add(cod);
                }
                resultado.Close();
                bd.Close();

                return(codificaciones);
            }
            catch (Exception e)
            {
                throw new Exception(e.ToString());
            }
        }
        protected void CodigoIndividuosGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
        {
            CatalogCodificacion cc = new CatalogCodificacion();

            try
            {
                this.lblCodificacionError.Visible = true;
                string id_codificacion  = HttpUtility.HtmlDecode((string)this.gdvCodigoIndividuos.Rows[e.RowIndex].Cells[1].Text);
                string codigo_individuo = e.NewValues[0].ToString().ToLower();

                //azul
                string c = codigo_individuo.Substring(0, 1);
                string b = codigo_individuo.Substring(1, 1);
                //roja
                string r = codigo_individuo.Substring(1, 1);
                //amarilla
                string t = codigo_individuo.Substring(0, 1);
                string y = codigo_individuo.Substring(1, 1);
                //bicolor
                string bi = codigo_individuo.Substring(0, 1);
                string ci = codigo_individuo.Substring(1, 1);
                //año
                bool año = EsNumero(codigo_individuo.Substring(2, 4));
                //guion
                string guion = codigo_individuo.Substring(6, 1);
                //número de color
                bool num_color1 = EsNumero(codigo_individuo.Substring(7));

                bool error = false;
                //if código azul
                if ((!codigo_individuo.Equals("") && c.Equals("c") && b.Equals("b")) &&
                    (año != true || !guion.Equals("-") || num_color1 != true))
                {
                    this.lblCodificacionError.Text += "Código color azul incorrecto, Ejemplo: 'cb2016-001'. ";
                    error = true;
                }
                //if código rojo
                if ((!codigo_individuo.Equals("") && c.Equals("c") && r.Equals("r")) &&
                    (año != true || !guion.Equals("-") || num_color1 != true))
                {
                    this.lblCodificacionError.Text += "Código color rojo incorrecto, Ejemplo: 'cr2016-001'. ";
                    error = true;
                }
                //if código amarilla
                if ((!codigo_individuo.Equals("") && t.Equals("t") && y.Equals("y")) &&
                    (año != true || !guion.Equals("-") || num_color1 != true))
                {
                    this.lblCodificacionError.Text += "Código color amarillo incorrecto, Ejemplo: 'ty2016-001'. ";
                    error = true;
                }
                //if código bicolor
                if ((!codigo_individuo.Equals("") && bi.Equals("b") && ci.Equals("c")) &&
                    (año != true || !guion.Equals("-") || num_color1 != true))
                {
                    this.lblCodificacionError.Text += "Código bicolor incorrecto, Ejemplo: 'bc2016-001'. ";
                    error = true;
                }
                //if otro código
                if (!codigo_individuo.Equals("") &&
                    (!c.Equals("c") || !b.Equals("b")) &&
                    (!c.Equals("c") || !r.Equals("r")) &&
                    (!t.Equals("t") || !y.Equals("y")) &&
                    (!bi.Equals("b") || !ci.Equals("c")))
                {
                    this.lblCodificacionError.Text += "Código incorrecto. ";
                    error = true;
                }

                if (error == false)
                {
                    string año1           = codigo_individuo.Substring(2, 1);
                    string año2           = codigo_individuo.Substring(3, 1);
                    string año3           = codigo_individuo.Substring(4, 1);
                    string año4           = codigo_individuo.Substring(5, 1);
                    string añoConcatenado = año1 + año2 + año3 + año4;
                    //pregunta si el año seleccionado es el mismo al año del codigo
                    if (!añoConcatenado.Equals(valorAñoString))
                    {
                        this.lblCodificacionError.Text += "Año incorrecto, debe ser el mismo seleccionado. ";
                    }
                    else
                    {
                        Project.BusinessRules.Codificacion cod = new Project.BusinessRules.Codificacion(Int32.Parse(id_codificacion), codigo_individuo);
                        int valor = cc.UpdateCodificacion(cod);

                        if (valor == 0)
                        {
                            Page.ClientScript.RegisterStartupScript(GetType(), "Script", "<script>alert('¡No se pudo modificar debido a que el código escrito ya existe en el año!')</script>");
                        }
                    }
                }
                this.gdvCodigoIndividuos.EditIndex = -1;
                PoblarGrilla();
            }
            catch (Exception ex)
            {
                Page.ClientScript.RegisterStartupScript(GetType(), "Script", "<script>alert('" + ex.ToString() + "')</script>");
            }
        }