Exemplo n.º 1
0
        private void Button1_Click(object sender, EventArgs e)
        {
            if (verificarUsuarioContraseñaValido())
            {
                var creador = new AbmCliente.Form3();

                creador.Closed += (s, arg) =>
                {
                    //hago un query para verificar que el cliente/proveedor fue efectivamente creado.
                    //podria mirar si la form3 termino con exito tambien, pero como necesito hacer el query
                    //de todas formas para conseguir el id hago todo con el query y listo
                    if (!creador.finished)
                    {
                        Show();
                        return;
                    }
                    //@@IDENTITY me da el valor del ultimo insert de esta conexion, lo que esta bueno porque me ahorra
                    //hacer algun query raro aca para conseguir el id del cliente/proveedor que acabo de insertar
                    //si hay un insert en un trigger se romperia
                    var id = util.tableQuery("SELECT @@IDENTITY").Rows[0].ItemArray[0].ToString();

                    util.execCommand("INSERT INTO Usuario (nombre,contraseña,rol,cliente,proveedor)" +
                                     "VALUES (@no,@co," +
                                     "(SELECT id FROM Rol WHERE nombre='Cliente')," + id + ",null)",
                                     "@no", nombre.Text,
                                     "@co", contraseña.Text);
                    Close();
                };
                creador.Show();
                Hide();
            }
        }
Exemplo n.º 2
0
        private void Button1_Click(object sender, EventArgs e)
        {
            if (verificarUsuarioContraseñaValido())
            {
                var creador = new AbmCliente.Form3();

                creador.Closed += (s, arg) =>
                {
                    //hago un query para verificar que el cliente/proveedor fue efectivamente creado.
                    //podria mirar si la form3 termino con exito tambien, pero como necesito hacer el query
                    //de todas formas para conseguir el id hago todo con el query y listo
                    if (!creador.finished)
                    {
                        Show();
                        return;
                    }
                    //@@IDENTITY me da el valor del ultimo insert de esta conexion, lo que esta bueno porque me ahorra
                    //hacer algun query raro aca para conseguir el id del cliente/proveedor que acabo de insertar
                    //si hay un insert en un trigger se romperia
                    var id = util.tableQuery("SELECT @@IDENTITY").Rows[0].ItemArray[0].ToString();



                    //no uso util porque necesito pasar contraseña sanatizado Y en UTF8, y no puedo hacer las 2 cosas con
                    //esa capa de abstraccion
                    var command = new SqlCommand("INSERT INTO LOS_SIN_VOZ.Usuario (nombre,contraseña,rol,cliente,proveedor)" +
                                                 "VALUES (@no,HASHBYTES('SHA2_256',@co)," +
                                                 "(SELECT id FROM LOS_SIN_VOZ.Rol WHERE nombre='Cliente')," + id + ",null)", Program.con);

                    command.Parameters.AddWithValue("@no", nombre.Text);
                    command.Parameters.Add(new SqlParameter {
                        SqlDbType     = SqlDbType.VarChar, //c# pasa por default unicode, osea nvarchar
                        ParameterName = "@co",
                        Value         = contraseña.Text
                    });

                    command.ExecuteNonQuery();

                    Close();
                };
                creador.Show();
                Hide();
            }
        }