/* manutenzione.c */
#include "macro.h"
#include "funzioniServer.h"
#include "manutenzione.h"
void stampaMenuManutenzione(){
/* Stampo il sottomenù "Manutenzione" */
printf("\n\033[01;33m---------------------------------\n");fflush
(stdout
);
printf("--------MENU MANUTENZIONE--------\n");fflush
(stdout
);
printf("---------------------------------\n\n");fflush
(stdout
);
printf(" 1. Aggiungi Record\n");fflush
(stdout
);
printf(" 2. Cancella Record\n");fflush
(stdout
);
printf(" 3. Cerca Record\n");fflush
(stdout
);
printf(" 4. Stampa elenco telefonico\n");fflush
(stdout
);
printf(" 5. Aggiungi Utente\n");fflush
(stdout
);
printf(" 6. Cancella Utente\n");fflush
(stdout
);
printf(" 7. Cerca Utente\n");fflush
(stdout
);
printf(" 8. Stampa elenco utenti\n");fflush
(stdout
);
printf(" 9. INDIETRO\n");fflush
(stdout
);
printf("\n---------------------------------\n");fflush
(stdout
);
printf("---------------------------------\033[00m\n");fflush
(stdout
);
}
int manutenzione(){
int modalita;
int testscanf;
/* Stampo il sottomenù "Manutenzione" */
stampaMenuManutenzione();
printf("Selezionare l'opzione...\n");fflush
(stdout
);
/* Seleziono l'opzione desiderata scartando quelle "illegali" */
do{
testscanf = scanf("%d", &modalita);
while(-1 == testscanf){
if(errno != EINTR){
chiusuraServer();
}
else{
testscanf = scanf("%d", &modalita);
}
}
if(testscanf == 0 || modalita>9 || modalita<1){ // Ho scelto un'opzione "illegale"
scanf("%*[^\n]"); // Svuoto l'input buffer
printf("Opzione non valida...\n");fflush
(stdout
);
printf("Selezionare l'opzione...\n\n");fflush
(stdout
);
stampaMenuManutenzione();
}
} while(testscanf == 0 || modalita>9 || modalita<1);
/* Ritorno il valore dell'opzione selezionata*/
return modalita;
}
void manutenzioneMain(){
int opzione;
while(1){
/* Seleziono l'opzione del sottomenù "Manutenzione" */
opzione = manutenzione();
/* Chiamo la funzione specifica per l'opzione selezionata */
if(opzione==1) {
Record record;
/* Resetto i valori della struct record */
memset(record.nome, 0, sizeof(record.nome));
memset(record.cognome, 0, sizeof(record.cognome));
memset(record.numeroTelefono, 0, sizeof(record.numeroTelefono));
/* Memorizzo nella struct record i valori digitati */
printf("\nInserisci nome e premi INVIO ");fflush
(stdout
);
while(scanf("%s", record.nome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
printf("\nInserisci cognome e premi INVIO ");fflush
(stdout
);
while(scanf("%s", record.cognome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio il record "record" e lo memorizzo in recordTemp */
Record recordTemp = cercaRecord(record);
if((strcmp(record.nome, recordTemp.nome) != 0 ) && (strcmp(record.cognome, recordTemp.cognome) != 0 )){
printf("\nInserisci N.telefono e premi INVIO ");fflush
(stdout
);
while(scanf("%s", record.numeroTelefono) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Aggiungo il record all'archivio */
if(-1 == aggiungiRecord(record)){
printf("\nOperazione fallita, riprovare...\n");fflush
(stdout
);
premiInvio();
}
else{
printf("\nOperazione conclusa con successo!\n");fflush
(stdout
);
premiInvio();
}
}
else{
printf("\n%s %s è già presente nell'elenco!\n", record.
nome, record.
cognome);fflush
(stdout
);
premiInvio();
}
}
if(opzione==2) {
Record record;
/* Resetto i valori della struct record */
memset(record.nome, 0, sizeof(record.nome));
memset(record.cognome, 0, sizeof(record.cognome));
memset(record.numeroTelefono, 0, sizeof(record.numeroTelefono));
/* Memorizzo nella struct record i valori digitati */
printf("\nInserisci nome e premi INVIO ");fflush
(stdout
);
while(scanf("%s", record.nome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
printf("\nInserisci cognome e premi INVIO ");fflush
(stdout
);
while(scanf("%s", record.cognome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio il record "record" e lo memorizzo in recordTemp */
Record recordTemp = cercaRecord(record);
if(strcmp(recordTemp.nome, "NULL") != 0){
/* Cancello il record dall'archivio */
if(-1 == cancellaRecord(record)){
printf("\nOperazione fallita, riprovare...\n");fflush
(stdout
);
premiInvio();
}
else{
printf("\nOperazione conclusa con successo!\n");fflush
(stdout
);
premiInvio();
}
}
else{
printf("\nOperazione impossibile, %s %s non è presente nell'elenco!\n", record.
nome, record.
cognome);fflush
(stdout
);
premiInvio();
}
}
if(opzione==3) {
Record record, recordTemp;
/* Resetto i valori della struct record */
memset(record.nome, 0, sizeof(record.nome));
memset(record.cognome, 0, sizeof(record.cognome));
memset(record.numeroTelefono, 0, sizeof(record.numeroTelefono));
/* Resetto i valori della struct recordTemp */
memset(recordTemp.nome, 0, sizeof(recordTemp.nome));
memset(recordTemp.cognome, 0, sizeof(recordTemp.cognome));
memset(recordTemp.numeroTelefono, 0, sizeof(recordTemp.numeroTelefono));
/* Memorizzo nella struct record i valori digitati */
printf("\nInserire il cognome e premere INVIO ");fflush
(stdout
);
while(scanf("%s", record.cognome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
printf("\nInserire il nome e premere INVIO ");fflush
(stdout
);
while(scanf("%s", record.nome) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio il record "record" e lo memorizzo in recordTemp */
recordTemp = cercaRecord(record);
if(strcmp(recordTemp.nome, "NULL") == 0){
printf("\nRecord inesistente!\n");fflush
(stdout
);
premiInvio();
}
else{
/* Stampo il record trovato */
printf("\n%-13s %-13s %s\n", "NOME", "COGNOME", "N. TEL");fflush
(stdout
);
printf("\n%-13s %-13s %s\n\n", recordTemp.
nome, recordTemp.
cognome, recordTemp.
numeroTelefono);fflush
(stdout
);
premiInvio();
}
}
/* Stampo l'intero elenco telefonico */
if(opzione==4) stampaElencoTelefonico();
if(opzione==5) {
Utente utente, utenteTemp;
/* Resetto i valori della struct utente */
memset(utente.nickname, 0, sizeof(utente.nickname));
memset(utente.password, 0, sizeof(utente.password));
/* Resetto i valori della struct utenteTemp */
memset(utenteTemp.nickname, 0, sizeof(utenteTemp.nickname));
memset(utenteTemp.password, 0, sizeof(utenteTemp.password));
/* Memorizzo nella struct utente i valori digitati */
printf("\nInserisci nickname e premi INVIO ");fflush
(stdout
);
while(scanf("%s", utente.nickname) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio l'utente "utente" e lo memorizzo in utenteTemp */
utenteTemp = cercaUtente(utente);
if( strcmp(utente.nickname, utenteTemp.nickname) != 0 ){
/* Memorizzo nella struct utente i valori digitati */
printf("\nInserisci password e premi INVIO ");fflush
(stdout
);
while(scanf("%s", utente.password) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
printf("\nInserisci tipo permesso (1.Read only, 2.R/W) e premi INVIO ");fflush
(stdout
);
while(scanf("%d", &utente.permessi) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Aggiungo l'utente "utente" all'archivio */
if(-1 == aggiungiUtente(utente)){
printf("\nOperazione fallita, riprovare...\n");fflush
(stdout
);
premiInvio();
}
else{
printf("\nOperazione conclusa con successo!\n");fflush
(stdout
);
premiInvio();
}
}
else{
printf("\n%s è già presente nell'elenco!\n", utente.
nickname);fflush
(stdout
);
premiInvio();
}
}
if(opzione==6) {
Utente utente, utenteTemp;
/* Resetto i valori della struct utente */
memset(utente.nickname, 0, sizeof(utente.nickname));
memset(utente.password, 0, sizeof(utente.password));
/* Resetto i valori della struct utenteTemp */
memset(utenteTemp.nickname, 0, sizeof(utenteTemp.nickname));
memset(utenteTemp.password, 0, sizeof(utenteTemp.password));
/* Memorizzo nella struct utente i valori digitati */
printf("\nInserisci nickname e premi INVIO ");fflush
(stdout
);
while(scanf("%s", utente.nickname) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio l'utente "utente" e lo memorizzo in utenteTemp */
utenteTemp = cercaUtente(utente);
if( strcmp(utente.nickname, utenteTemp.nickname) == 0 ){
/* Cancello l'utente "utente" dall'archivio */
if(-1 == cancellaUtente(utente)){
printf("\nOperazione fallita, riprovare...\n");fflush
(stdout
);
premiInvio();
}
else{
printf("\nOperazione conclusa con successo!\n");fflush
(stdout
);
premiInvio();
}
}
else{
printf("\nOperazione impossibile, %s non è presente nell'elenco!\n", utente.
nickname);fflush
(stdout
);
premiInvio();
}
}
if(opzione==7) {
Utente utente, utenteTemp;
/* Resetto i valori della struct utente */
memset(utente.nickname, 0, sizeof(utente.nickname));
memset(utente.password, 0, sizeof(utente.password));
/* Resetto i valori della struct utenteTemp */
memset(utenteTemp.nickname, 0, sizeof(utenteTemp.nickname));
memset(utenteTemp.password, 0, sizeof(utenteTemp.password));
/* Memorizzo nella struct utente i valori digitati */
printf("\nInserire nickname e premere INVIO ");fflush
(stdout
);
while(scanf("%s", utente.nickname) == -1){
if(errno != EINTR){
chiusuraServer();
}
}
/* Cerco nell'archivio l'utente "utente" e lo memorizzo in utenteTemp */
utenteTemp = cercaUtente(utente);
if( strcmp(utenteTemp.nickname, "NULL") == 0 ){
printf("\nUtente inesistente!\n");fflush
(stdout
);
premiInvio();
}
else{
/* Stampo l'utente trovato */
printf("\n%-13s %-13s %s\n", "NICKNAME", "PASSWORD", "TIPO PERMESSI");fflush
(stdout
);
printf("\n%-13s %-13s %d\n\n", utenteTemp.
nickname, utenteTemp.
password, utenteTemp.
permessi);
premiInvio();
}
}
/* Stampo l'intero elenco utenti */
if(opzione==8) stampaElencoUtenti();
/* Esco dal sottomenù "Manutenzione" */
if(opzione==9) break;
}
}