int main(int argc, char *argv[]) {
	
	int res1, res2, res3, cat; // Variables para el control de la selección de usuario
	
	char pass[15]; // Almacén para la contraseña
	
	printf("Conexión a la administración. Introduce la contraseña: ");
	scanf("%s",pass);
	
	while (strcmp(pass,PW)!=0){
		
		printf("Contraseña incorrecta.\n");
		printf("Introduce la contraseña: ");
		scanf("%s",pass);
	
	}

	/* Comprobar que los parámetros son correctos */
  	if (argc!=3){
	    printf("ERROR: no ha utilizado la sintaxis correcta\nUso: %s <direccion_ip> <puerto>\n", argv[0]);
	    exit(-1);
  	}

  	//Crear el socket
  	int sock=Socket_prepararCliente(argv[1],argv[2]);
	
	// Menú que lista todas las opciones de administrador de forma jerárquica
	do{
		printf("\n	1. Gestión de preguntas y categorías\n");
		printf("	2. Opciones de moderación\n");
		printf("	3. Apagar el servidor\n");
		printf("	0. Salir\n"),
		printf("Indica el número correspondiente a la opción deseada: ");
		scanf("%d",&res1);
		switch (res1){
			case 1: do{
						printf("\n	1. Añadir una pregunta\n");
						printf("	2. Listar categorías disponibles\n");
						printf("	3. Listar preguntas de una categoría\n");
						printf("	4. Eliminar una pregunta\n");
						printf("	0. Salir de la gestión de preguntas y categorías\n");
						scanf("%d",&res2);
					
						switch (res2){
							case 1: // Llamar a función para añadir pregunta
									Question pregunta;
                                    Connector fichero_preguntas;
                                    Questions *preguntas;
                                    printf("Introduceme la pregunta a insertar\n");
                                    fgets(pregunta.question,255,stdin);        
                                    printf("Introduceme la categoria de la pregunta\n");
                                    fgets(auxiliar,100,stdin);   
                                    sscanf(auxiliar,"%d",&pregunta.category);   
                                    printf("Introduceme la respuesta correcta\n");
                                    fgets(pregunta.valid,64,stdin);          
                                    printf("Introduceme una respuesta incorrecta\n");
                                    fgets(pregunta.invalid1,64,stdin);            
                                    printf("Introduceme una respuesta incorrecta\n");
                                    fgets(pregunta.invalid2,64,stdin);          
                                    printf("Introduceme una respuesta incorrecta\n");
                                    fgets(pregunta.invalid3,64,stdin);
                                    sprintf(fichero_preguntas.questionsFilename,"data/questions.db");
                                    preguntas = Questions_init();
                                    Questions_load(&fichero_preguntas, preguntas);
                                    Questions_add(&fichero_preguntas,&preguntas, &pregunta);
									break;
							case 2: // Llamar a función para listar categorías
									printf("Listando categorías disponibles...\n");
									pedirCategorias(sock);
									break;
							case 3: // Llamar a función para listar preguntas de cada categoría
									printf("\nIntroduce el número de la categoría a listar:\n\n");
									printf("	1. Entretenimiento\n");
									printf("	2. Geografía\n");
									printf("	3. Historia\n");
									printf("	4. Literatura\n");
									printf("	5. Ciencia\n");
									printf("	6. Deportes\n");
									printf("\n	Categoría: ");
									scanf("%d", &cat);
									lista_preguntas(cat, sock);
									break;
							case 4: // Llamar a función para eliminar pregunta
									printf("Eliminando pregunta...\n");
									break;
							default: printf("Introduce un número de acuerdo a las opciones listadas\n");
						}
					}while (res2!=0);
					
					break;
			case 2: do{
						printf("\n	1. Listar preguntas sin moderar\n");
						printf("	2. Aceptar pregunta en moderación\n");
						printf("	3. Denegar pregunta en moderación\n");
						printf("	0. Salir de la moderación\n");
						scanf("%d",&res3);
					
						switch (res3){
							case 1: // Llamar a función para listar preguntas sin moderar
									printf("Listando preguntas sin moderar...\n");
									break;
							case 2: printf("Selecciona el ID de pregunta a aceptar\n");
									// Llamar a función que acepte pregunta
									break;
							case 3: printf("Selecciona el ID de pregunta a denegar\n");
									// Llamar a función que deniegue pregunta
									break;
							default: printf("Introduce un número de acuerdo a las opciones listadas\n");
						}
					}while (res3!=0);
					
					break;
				
			case 3: // Llamar a función que apague el servidor
					printf("Apagando el servidor...\n");
					break;
				
			default: if (res1!=0) {
						printf("Introduce un número de acuerdo a las opciones listadas.\n");
					}
		}
		
	}while (res1!=0);
	
	return 0;
}
int main(int argc, char *argv[]) {
  char *datos;
  int numerousuarios;
  char registro;
  char nombre[20];
  int i = 0;

  sockets = (int*) malloc (MAX_USUARIOS*sizeof(int));
  for (i=0;i<MAX_USUARIOS;i++)
    sockets[i]=-1;
  
  usuarios = (char**) malloc (MAX_USUARIOS*sizeof(char*));
  for (i=0;i<MAX_USUARIOS;i++)
    usuarios[i]=0;			// VARIABLE GLOBAL¿??¿?¿?¿?¿?¿???????¿?¿??¿?¿?¿?¿?¿?¿?¿?¿?¿?
  
	// Indicamos al conector el fichero con las preguntas
	strcpy(connector.questionsFilename, "data/questions.db");

	// Cargamos todas las preguntas en memoria
	questions = Questions_init();
	Questions_load(&connector, questions);

	// Liberamos memoria
	Questions_free(questions);

	// TODO!!! Crear el socket, la siguiente línea tiene que ser sustituida
	int sock = 0;

  datos=Socket_leer(sock);
  if(datos[0]=='1'){
    
  }
  else if (datos[0] == '2'){
	// REGISTRO DE USUARIO
	datos=Socket_leer(sock); //Recibe en datos el "usuario clave"
	
	int o=0;
	while(sockets[o] != -1) { // Buscamos espacio para guardar el usuario
	  o++;
	}
	numerousuarios=o; //El usuario actual y su socket estan en la posicion numerousuarios
	
	sockets[numerousuarios]=sock; // Guardamos el socket del usuario en el array de sockets
	
	int p=0;
	while(datos[p] != ' ') {
	  nombre[p]=datos[p];
	  p++;
	}
	nombre[p]=0;	//Guardamos en nombre el nombre del usuario
	
	strcpy(usuarios[numerousuarios],nombre); // Guardamos el nombre del usuario en el array de usuarios
	
	registro=Registro_altausuario(sock, datos); // Llamo a registro alta usuario con el socket y "usuario clave"
	if (registro == '1') {
	  Socket_escribir(sock,"O"); // Comprobamos si ha ido todo
	}
	else {
	  Socket_escribir(sock,"E"); // correctamente en el alta.
	}
  }
	
  return 0;
}