package control;

import utiles.Archivo;

/**
 * Clase que se dedica a controlar los procesos en las ventanas de
 * administrador, crear y modificar
 */

public class ControlAdmin {

	Archivo archivo;

	/**
	 * Constructor que inicia la clase archivo para ser utilizada por
	 * ControlAdmin
	 */

	public ControlAdmin() {
		archivo = new Archivo("UserData");
	}

	/**
	 * Cantidad de filas que posee el archivo
	 * @return La cantidad de filas en el archivo
	 */

	public int getRowCount() {

		String[] arch = archivo.entregarProcesado();
		return arch.length;

	}

	/**
	 * Entrega la fila correspondiente al id que se le proporciona
	 * 
	 * @param id
	 *            Numero de la fila que se quiere
	 * @return la fila respecto al id
	 */

	public String[] getRow(int id) {

		String[] arch = archivo.entregarProcesado();
		return arch[id].split(";");

	}

	/**
	 * Aņade un usuario al archivo comprobando antes si cumple con las
	 * condiciones esperadas
	 * 
	 * @param user
	 *            Nombre de usuario
	 * @param pass
	 *            Contraseņa
	 * @return Un booleano indicando si el ingreso fue correcto
	 */

	public boolean aņadirUsuario(String user, String pass) {

		if (!isUser(user)) {
			if (user.length() > 4) {
				if (pass.length() > 6) {
					archivo.escribirArchivo(user + ";" + pass);
					return true;
				} else {

					javax.swing.JOptionPane.showMessageDialog(null, "La contraseņa es muy corta", null,
							javax.swing.JOptionPane.ERROR_MESSAGE);
					return false;
				}

			} else {

				javax.swing.JOptionPane.showMessageDialog(null, "El usuario es muy corto", null,
						javax.swing.JOptionPane.ERROR_MESSAGE);
				return false;
			}
		} else {

			javax.swing.JOptionPane.showMessageDialog(null, "El usuario ya existe ", null,
					javax.swing.JOptionPane.ERROR_MESSAGE);
			return false;
		}

	}

	/**
	 * Busca un usuario en el archivo e indica si existe o no
	 * 
	 * @param user
	 *            Usuario a buscar
	 * @return Un booleano que indica si existe o no el usuario
	 */

	public boolean isUser(String user) {

		String[] arch = archivo.entregarProcesado();
		for (int x = 0; x < arch.length; x++) {
			if (arch[x].split(";")[0].equals(user)) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Modifica los datos de un usuario
	 * 
	 * @param original
	 *            Linea que contiene el usuario y la contraseņa de la siguiente
	 *            manera "user;pass"
	 * @param user
	 *            Nombre de usuario nuevo
	 * @param pass
	 *            Contraseņa nueva para el usuario
	 * @return Un Booleano que indica si la operacion se realizo correctamente
	 */

	public boolean modificarUser(String original, String user, String pass) {

		if (user.length() > 4) {
			if (pass.length() > 6) {
				archivo.modificarLinea(original, user + ";" + pass);
				Archivo.changeName(user, original.split(";")[0]);
				return true;
			} else {

				javax.swing.JOptionPane.showMessageDialog(null, "La contraseņa es muy corta", null,
						javax.swing.JOptionPane.ERROR_MESSAGE);
				return false;
			}
		} else {

			javax.swing.JOptionPane.showMessageDialog(null, "El usuario es muy corto", null,
					javax.swing.JOptionPane.ERROR_MESSAGE);
			return false;
		}

	}
}
