//No guarda los cambios en el archivo, solo los aplica en el arreglo //Devuelve true si lo consiguio, o false si no private bool AplicarCambios() { activarEventosTextChanged = false; Random r = new Random(); //Se va a usar este numero aleatorio para añadirle al nombre string nombre = tNomCompleto.Text; string usuario = tNomUsuario.Text; string contrasenia = tContrasenia.Text; byte tipo = 3; //va a almacenar el tipo de docente en un dato numerico //0: Administrador //1: Coordinador - docente //2: Coordinador //3: Docente string nuevaLinea; //Es la linea que contiene la informacion del usuario y la que se añadira al archivo string[] docentesAux = new string[docentes.Length + 1]; //Se va a usar esta variable en caso que se un usuario cambie su tipo a docente bool continuar = true; bool guardar = true; string[] aux; if (pos != null) { //Añade un numero aleatorio al nombre para asegurarse que sea unico nombre += ";" + r.Next(0, 9) + "" + r.Next(10, 99) % 10; //Determina el dato numerico correspondiente al tipo if (rbDocente.Checked) { tipo = 3; } else if (rbCoordinador.Checked) { tipo = 2; } else if (rbDocCor.Checked) { tipo = 1; } else if (rbAdmin.Checked) { tipo = 0; } do { foreach (string linea in usuarios) { if (linea != "" && linea != usuarios[pos.Value]) { continuar = true; aux = linea.Split('░'); if (aux[0].Equals(usuario)) { labelInfo.Text = "Nombre de usuario no disponible, por favor intente con otro."; continuar = true; guardar = false; break; } else { labelInfo.Text = ""; } if (aux[2].Equals(nombre)) { nombre = nombre.Substring(0, nombre.Length - 3) + ";" + r.Next(0, 9) + "" + r.Next(10, 99) % 10; continuar = false; break; } } } } while (!continuar); nuevaLinea = usuario + "░"; nuevaLinea += StringCipher.Encrypt(contrasenia + tipo, nombre) + "░"; nuevaLinea += nombre; //Añadimos los cambios tambien al arreglo docentes con informacion correspondientes a datos\\docentes.txt //En caso de que haya una nuevo docente if (tipo == 3 || tipo == 1) { aux = usuarios[pos.Value].Split('░'); continuar = true; //vamos a reutilizar la variable continuar, ahora significara que si es verdadero, el //usuario especificado no existe en el arreglo docente y procedera a añadirlo //si es falso, significa que no existe y procedera a añadirlo for (int i = 0; i < docentes.Length; i++) { docentesAux[i] = docentes[i]; if (aux[2] == docentes[i]) { continuar = false; docentes[i] = nombre; //Añadimos un pendiente de cambiar nombre de carpeta foreach (string[] cambios in cambiosNombreCarpetas) { if (cambios[1] == aux[2]) { cambios[1] = nombre; } } break; } } if (continuar) { docentesAux[docentes.Length] = nombre; docentes = docentesAux; } } //En caso de que un docente deje de serlo if (tipo == 2 || tipo == 0) { aux = usuarios[pos.Value].Split('░'); for (int i = 0; i < docentes.Length; i++) { if (aux[2] == docentes[i]) { docentes[i] = ""; break; } } } usuarios[pos.Value] = nuevaLinea; } return(guardar); }
//Se encarga de llenar los campos de texto una vez se ha seleccionado //un elemento de listbox private void lbUsuario_SelectedIndexChanged(object sender, EventArgs e) { activarEventosTextChanged = false; string[] aux; string usuario; char tipo; try { usuario = lbUsuario.SelectedItem.ToString(); usuario = usuario.Substring(0, usuario.IndexOf(':')); for (int i = 0; i < usuarios.Length; i++) { if (usuarios[i] != "" && usuarios[i].Substring(0, usuario.Length).Equals(usuario)) { aux = usuarios[i].Split('░'); tNomUsuario.Text = aux[0]; tContrasenia.Text = StringCipher.Decrypt(aux[1], aux[2]); tipo = tContrasenia.Text[tContrasenia.Text.Length - 1]; tContrasenia.Text = tContrasenia.Text.Substring(0, tContrasenia.Text.Length - 1); tNomCompleto.Text = aux[2].Substring(0, aux[2].Length - 3); pos = i; posInfo[0] = tNomUsuario.Text; posInfo[1] = tContrasenia.Text; posInfo[2] = tipo.ToString(); posInfo[3] = tNomCompleto.Text; switch (tipo) { case '0': rbAdmin.Checked = true; break; case '1': rbDocCor.Checked = true; break; case '2': rbCoordinador.Checked = true; break; case '3': rbDocente.Checked = true; break; default: break; } bEliUsuario.Enabled = true; tNomCompleto.Enabled = true; tContrasenia.Enabled = true; tNomUsuario.Enabled = true; groupBox1.Enabled = true; if (aux[0] == "Admin" && aux[2].Substring(0, aux[2].Length - 3) == "Admin" && tipo == '0') { bEliUsuario.Enabled = false; tNomCompleto.Enabled = false; tNomUsuario.Enabled = false; groupBox1.Enabled = false; } break; } } activarEventosTextChanged = true; } catch { } }
private void bIngUsuario_Click(object sender, EventArgs e) { Random r = new Random(); //Se va a usar este numero aleatorio para añadirle al nombre string nombre = tNomCompleto.Text; string usuario = tNomUsuario.Text; string contrasenia = tContrasenia.Text; byte tipo = 3; //va a almacenar el tipo de docente en un dato numerico //0: Administrador //1: Coordinador - docente //2: Coordinador //3: Docente string nuevaLinea; //Es la linea que contiene la informacion del usuario y la que se añadira al archivo string[] archivo; //Arreglo correspondiente a las lineas del archivo que se va a leer para buscar que no haya conflicto en los nombres de usuario bool continuar = true; bool guardar = true; string[] aux; //Añade un numero aleatorio al nombre para asegurarse que sea unico nombre += ";" + r.Next(0, 9) + "" + r.Next(10, 99) % 10; //Determina el dato numerico correspondiente al tipo if (rbDocente.Checked) { tipo = 3; } else if (rbCoordinador.Checked) { tipo = 2; } else if (rbDocCor.Checked) { tipo = 1; } else if (rbAdmin.Checked) { tipo = 0; } ManejoDeArchivos.CrearArchivo("datos//usuarios.txt"); archivo = File.ReadAllLines("datos//usuarios.txt"); do { foreach (string linea in archivo) { continuar = true; aux = linea.Split('░'); if (aux[0].Equals(usuario)) { MessageBox.Show("Nombre de usuario no disponible, por favor intente con otro.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); continuar = true; guardar = false; break; } if (aux[2].Equals(nombre)) { nombre = nombre.Substring(0, nombre.Length - 3) + ";" + r.Next(0, 9) + "" + r.Next(10, 99) % 10; continuar = false; break; } } } while (!continuar); if (guardar) { //Se procede a modificar el archivo con la informacion de los usuarios nuevaLinea = usuario + "░"; nuevaLinea += StringCipher.Encrypt(contrasenia + tipo, nombre) + "░"; nuevaLinea += nombre; ManejoDeArchivos.AniadirLineaArchivo("datos//usuarios.txt", nuevaLinea); //Se procede a modificar el archivo con la informacion de los nombres de los docentes if (tipo == 3 || tipo == 1) { ManejoDeArchivos.AniadirLineaArchivo("datos//docentes.txt", nombre); } } }