예제 #1
0
        private void btnAgregar_Click(object sender, EventArgs e)//evento que te activa al dar clic al boton agregar
        {
            try
            {
                if (txtNombre.Text != "" && txtApellidos.Text != "" && txtTelefono.MaskFull && cboTipo.Text != "" && txtCedula.MaskFull && txtContrasena.TextLength >= 6 && txtContrasena.Text == txtReContrasena.Text)
                {
                    //Quita todos los label de error
                    UsuarioTableAdapter adapter = new UsuarioTableAdapter();                                                                                                                                                   //objeto para utilizar los querys de tblUsuario
                    UsuarioDataTable    data;                                                                                                                                                                                  //objeto que almacena data proveniente de tblUsuario

                    string Cedula = metodos.Filtrar(txtCedula);                                                                                                                                                                //quita los guiones de la cedula

                    string telefono = metodos.Filtrar(txtTelefono);                                                                                                                                                            //quita los guiones del telefono

                    data = adapter.BuscarPorCedulaU(Cedula);                                                                                                                                                                   //busca si hay un usuario en tblUsuario con la cedula ingresada

                    if (data.Count == 0)                                                                                                                                                                                       //si no hay ninguna fila significa que noy un usuario con la cedula ingresada
                    {
                        if (txtContrasena.Text == txtReContrasena.Text)                                                                                                                                                        //verifica que las contraseñas ingresadas sean la misma
                        {
                            if (MessageBox.Show($"¿Está seguro que desea añadir al usuario {txtNombre.Text} {txtApellidos.Text} al sistema?", "Añadir", MessageBoxButtons.YesNo) == DialogResult.Yes)                          //pregunta si de verdad desea añadir este usuario, si es si ocurre lo siguiente
                            {
                                string contrasena = null;                                                                                                                                                                      //string para guardar la contraseña del usuario que usa el sistema
                                contrasena = metodos.InputBox("Reingresar contraseña", $"Reescriba su contraseña {usuario.Nombre}", ref contrasena);                                                                           //muestra una ventana donde el usuario que esta agregando a otro usuario ingrese su contraseña para verificar que de verdad es el

                                if (contrasena == usuario.Contra)                                                                                                                                                              //si la contraseña corresponde al usuario que usa el sistema
                                {
                                    int tipoUsuario = cboTipo.Text == "Administrador" ? 1 : 2;                                                                                                                                 //determina que tipo de usuario se registro
                                    adapter.InsertarU(tipoUsuario, telefono, txtContrasena.Text, Cedula, txtNombre.Text.Trim(), txtApellidos.Text.Trim(), txtDireccion.Text.Trim(), true);                                     //se inserta el usuario con la informacion que se ingresó
                                    log.Info($"Se agregó al sistema el usuario {txtNombre.Text} {txtApellidos.Text} de cédula {Cedula} como {cboTipo.Text} por el administrador {usuario.Nombre} {usuario.Apellidos}");        // se registra que se ingresó un usuario nuevo y su cedula
                                    MessageBox.Show($"{txtNombre.Text} {txtApellidos.Text} ha sido añadido al sistema como {cboTipo.Text} exitosamente", "Agregar usuario", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //le notifica al usuario que se agregó el nuevo usuario
                                    this.Limpiar();                                                                                                                                                                            //se limpia toda la ventana
                                }
                                else//si la contraseña no es igual a la del usuario que usa el sistema
                                {
                                    log.Warn($"Se intentó agregar al sistema el usuario {txtNombre.Text} {txtApellidos.Text} de cédula {Cedula} como {cboTipo.Text}, " +
                                             $"pero no se pudo confirmar la identidad del administrador {usuario.Nombre} {usuario.Apellidos} ingresando la siguiente contraseña incorrecta: {txtContrasena.Text}"); //notifica que se intentó agregar un usuario pero fracasó la autenticacion
                                    MessageBox.Show("La contraseña ingresada no coincide con su usuario, vuelva a intentarlo", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);                              //notifica al usuario que La contraseña ingresada no coincide con su usuario
                                }
                            }
                            else//si se responde que no
                            {
                                this.Limpiar();//se limpia toda la ventana
                            }
                        }
                        else//si las contraseñas ingresadas no coinciden
                        {
                            MessageBox.Show("Las contraseñas ingresadas no coinciden, favor verificar", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            txtContrasena.Text   = ""; //limpia el textbox de la contraseña
                            txtReContrasena.Text = ""; //limpia el textbox para verificar la contraseña
                        }
                    }
                    else//si ya hay un usuario con la cedula ingresa
                    {
                        log.Warn($"Se intentó agregar al sistema el usuario {txtNombre.Text} {txtApellidos.Text} de cédula {Cedula} como {cboTipo.Text}, pero ya hay un usuario con esta cédula con anterioridad " +
                                 $"por el administrador {usuario.Nombre} {usuario.Apellidos}");                                                                                                  //notifica que se intentó ingresar un usuario con una cedula que ya pertenece a otro usuario
                        MessageBox.Show("Ya se encuentra un usuario ingresado con esta cedula.\n\nFavor ingresar otra cedula y/o usuario", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); //le notifica al usuario mediante un mensaje que ya hay un usuario ingresado con esta cedula
                    }
                }
                else//si no se ingresó toda la informacion necesaria
                {
                    cboTipo.SelectedItem = 0;
                    this.ErrorAgregar();//no permite que algun campo obligatorio esté vacío
                }
            }
            catch (Exception error)
            {
                log.Error($"Error: {error.Message}", error);
                MessageBox.Show($"Error: {error.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }