public bool Registrar(ClienteIndividual cliente, int ID)
        {
            try
            {
                using (SqlConnection conexion = new SqlConnection(Properties.Settings.Default.cadenaConexion))
                {
                    string cadena_sql = "insert into ClienteIndividual values (@id, @nombre, @ap, @am, @sexo) ";

                    SqlCommand comando = new SqlCommand(cadena_sql, conexion);
                    comando.Parameters.AddWithValue("@id", ID);
                    comando.Parameters.AddWithValue("@nombre", cliente.Nombre);
                    comando.Parameters.AddWithValue("@ap", cliente.Apaterno);
                    comando.Parameters.AddWithValue("@am", cliente.Amaterno);
                    comando.Parameters.AddWithValue("@sexo", cliente.Sexo_char);
                    conexion.Open();
                    int rows = comando.ExecuteNonQuery();
                    if (rows != 0)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            catch (SqlException ex)
            {
                throw new Exception("Error relacionado con la BD. [ClienteIndividualDAO] \n Anota este error y contacta al administrador.\n" + ex.Message);
            }
        }
        public List <ClienteIndividual> ConsultaGeneral(string sql_where, List <string> parametros, List <object> valores)
        {
            List <ClienteIndividual> clientesInd = new List <ClienteIndividual>();

            try
            {
                using (SqlConnection conexion = new SqlConnection(Properties.Settings.Default.cadenaConexion))
                {
                    string cadena_sql = "select * from ClienteIndividual " + sql_where;
                    //idCliente	nombre	apaterno	amaterno	sexo

                    SqlCommand comando = new SqlCommand(cadena_sql, conexion);

                    conexion.Open();
                    for (int i = 0; i < parametros.Count; i++)
                    {
                        comando.Parameters.AddWithValue(parametros[i], valores[i]);
                    }

                    SqlDataReader lector = comando.ExecuteReader();
                    if (lector.HasRows)
                    {
                        while (lector.Read())
                        {
                            ClienteIndividual cliente = new ClienteIndividual(
                                (int)lector["idCliente"],
                                (string)lector["nombre"],
                                (string)lector["apaterno"],
                                (string)lector["amaterno"],
                                ((string)lector["sexo"])[0]
                                );
                            clientesInd.Add(cliente);
                        }
                        lector.Close();
                        conexion.Close();
                    }
                    else
                    {
                        lector.Close();
                        conexion.Close();
                    }
                }
            }
            catch (SqlException ex)
            {
                throw new Exception("Error relacionado con la BD. [ClienteIndividualDAO] \n Anota este error y contacta al administrador.\n" + ex.Message);
            }
            return(clientesInd);
        }
        private bool Validar(int tipo, int ID, ClienteIndividual cte)
        {
            // tipo 0 -> insert ; 1 -> update

            try
            {
                using (SqlConnection conexion = new SqlConnection(Properties.Settings.Default.cadenaConexion))
                {
                    string cadena_sql = "";
                    if (tipo == 0)
                    {
                        cadena_sql = "select idcliente from ClienteIndividual where nombre=@nombre and apaterno=@apaterno and amaterno=@amaterno";
                    }

                    else
                    {
                        cadena_sql = "select idcliente from ClienteIndividual where nombre=@nombre and apaterno=@apaterno and amaterno=@amaterno and idcliente!=@id";
                    }

                    SqlCommand comando = new SqlCommand(cadena_sql, conexion);
                    comando.Parameters.AddWithValue("@nombre", cte.Nombre);
                    comando.Parameters.AddWithValue("@apaterno", cte.Apaterno);
                    comando.Parameters.AddWithValue("@amaterno", cte.Amaterno);
                    if (tipo == 1)
                    {
                        comando.Parameters.AddWithValue("@id", ID);
                    }
                    conexion.Open();

                    SqlDataReader lector = comando.ExecuteReader();

                    if (lector.HasRows)
                    {
                        conexion.Close();
                        return(false);
                    }
                    else
                    {
                        conexion.Close();
                        return(true);
                    }
                }
            }
            catch (SqlException ex)
            {
                throw new Exception("Error relacionado con la BD. [ClienteIndividualDAOs.V] \n Anota este error y contacta al administrador.\n" + ex.Message);
            }
        }
        internal object Editar(ClienteIndividual cte, int ID)
        {
            object resultado = new object();

            try
            {
                if (Validar(1, ID, cte))
                {
                    using (SqlConnection conexion = new SqlConnection(Properties.Settings.Default.cadenaConexion))
                    {
                        string cadena_sql = "update ClienteIndividual set nombre= @nombre, apaterno= @ap, amaterno= @am, sexo=@sexo where idCliente=@id";

                        SqlCommand comando = new SqlCommand(cadena_sql, conexion);
                        comando.Parameters.AddWithValue("@id", ID);
                        comando.Parameters.AddWithValue("@nombre", cte.Nombre);
                        comando.Parameters.AddWithValue("@ap", cte.Apaterno);
                        comando.Parameters.AddWithValue("@am", cte.Amaterno);
                        comando.Parameters.AddWithValue("@sexo", cte.Sexo_char);
                        conexion.Open();

                        int cant_registros = (int)comando.ExecuteNonQuery();
                        conexion.Close();
                        if (cant_registros == 1)
                        {
                            resultado = true;
                        }
                        else
                        {
                            resultado = "Se ha generado un error no especificado";
                        }
                    }
                }
                else
                {
                    resultado = "Error: Ya existe un cliente de tienda con datos en común";
                }
            }
            catch (SqlException ex)
            {
                throw new Exception("Error relacionado con la BD. [ClienteIndividualDAOs.R] \n Anota este error y contacta al administrador.\n" + ex.Message);
            }
            return(resultado);
        }
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            if (validarCampos())
            {
                char sexo;
                if (rdtMasculino.Checked)
                {
                    sexo = 'M';
                }
                else
                {
                    sexo = 'F';
                }

                ClienteIndividual cte = new ClienteIndividual(0, txtNombre.Text, txtAPaterno.Text, txtAMaterno.Text, sexo, 'A');
                try
                {
                    if (individualDAO.ValidarRegistro(cte))
                    {
                        if (individualDAO.Registrar(cte))
                        {
                            Mensajes.Info("Registro exitoso");
                        }
                        else
                        {
                            Mensajes.Error("Error al registrar el cliente");
                        }
                    }
                    else
                    {
                        Mensajes.Error("El cliente ya existe");
                    }
                }
                catch (Exception ex)
                {
                    Mensajes.Error(ex.Message);
                }
            }
        }
        private void validarEntradas()
        {
            String mensaje = "";

            String nombre   = txtNombre.Text;
            String aPaterno = txtAPaterno.Text;
            String aMaterno = txtAMaterno.Text;

            String rfc          = txtRFC.Text;
            String telefono     = txtTelefono.Text;
            String codigoPostal = txtCodigoPostal.Text;

            if (nombre == "")
            {
                mensaje += "\n Rellena el campo de nombre";
            }

            if (aPaterno == "")
            {
                mensaje += "\n Rellena el campo de Apellido Paterno";
            }

            if (aMaterno == "")
            {
                mensaje += "\n Rellena el campo de Apellido Materno";
            }

            bool soloLetras = Regex.IsMatch(rfc, @"^[a-zA-Z][a-z A-Z]+$");

            //RFC Valido

            /*
             * Morales: Se compone de 3 letras seguidas por 6 dígitos y 3 caracteres alfanumericos =12
             * Físicas: consta de 4 letras seguida por 6 dígitos y 3 caracteres alfanuméricos =13 */
            if (Regex.IsMatch(rfc, @"^[a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9][0-9][0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]$") |
                Regex.IsMatch(rfc, @"^[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z][0-9][0-9][0-9][0-9][0-9][0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]$"))
            {
                //Es valido
            }
            else
            {
                mensaje += "\n RFC Invalido";
            }


            //Telefono

            /* Validar que este completo
             */
            if (Regex.IsMatch(telefono, @"^[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$"))
            {
                //Es valido
            }
            else
            {
                mensaje += "\n Telefono Invalido";
            }


            //Código postal

            /* Validar que este completo
             */
            if (Regex.IsMatch(codigoPostal, @"^[0-9][0-9][0-9][0-9][0-9]$"))
            {
                //Es valido
            }
            else
            {
                mensaje += "\n Codigo postal Invalido, completar.";
            }

            //email

            /* Validar que este completo
             */
            if (Regex.IsMatch(txtEmail.Text, @"[^@ \t\r\n]+@[^@ \t\r\n]+\.[^@ \t\r\n]+"))
            {
                //Es valido
            }
            else
            {
                mensaje += "\n Email Invalido, completar.";
            }

            if (txtDireccion.Text == "")
            {
                mensaje += "\n Completar dirección.";
            }

            Ciudad validarCd = (Ciudad)comboBoxCiudad.SelectedItem;

            if (validarCd == null)
            {
                mensaje += "\n Selecciona una ciudad.";
            }

            /*Verificar si existe algun mensaje de error*/
            if (mensaje.Equals(""))
            {
                try
                {
                    char sexo;
                    if (rbSexo.Checked)
                    {
                        sexo = 'M';
                    }
                    else
                    {
                        sexo = 'F';
                    }

                    Ciudad            cdd      = (Ciudad)comboBoxCiudad.SelectedItem;
                    ClienteIndividual ctetinds = new ClienteIndividual(txtNombre.Text, txtAPaterno.Text, txtAMaterno.Text, sexo);
                    Cliente           cte      = new Cliente(0, txtDireccion.Text, txtCodigoPostal.Text, txtRFC.Text, txtTelefono.Text, txtEmail.Text, 'I', 'A', cdd.ID);
                    cte.InfoCliente = ctetinds;
                    if (cliente != null)
                    {
                        cte.ID = cliente.ID;
                        var  resultado      = new ClienteDAO().Editar(cte);
                        Type resultado_tipo = resultado.GetType();

                        if (resultado_tipo.Equals(typeof(string)))
                        {
                            Mensajes.Error(resultado.ToString());
                        }
                        else
                        {
                            Mensajes.Info("Actualización exitosa.");
                            Close();
                        }
                    }
                    else
                    {
                        var  resultado      = new ClienteDAO().Registrar(cte);
                        Type resultado_tipo = resultado.GetType();
                        if (resultado_tipo.Equals(typeof(string)))
                        {
                            Mensajes.Error(resultado.ToString());
                        }
                        else
                        {
                            Mensajes.Info("Registro exitoso.");
                            Close();
                        }
                    }
                }
                catch (Exception ex)
                {
                    Mensajes.Error(ex.Message);
                }
            }
            if (mensaje.Length > 0)
            {
                MessageBox.Show(mensaje);
            }
        }