Fate delle proposte diverse poi si decide assieme nome idem ma va bene basic4android Italia
#Event: CheckValidNewUsername(IsValid As Boolean)
#Event: UserRegistration(Success As Boolean, UserId As Long)
#Event: ServerError(ErrorCode As Int, ErrorMessage As String)
#Event: MandatoryError(Function As String, Field As String)
#Event: Login(Success As Boolean, UserId As Long)
#Event: UserData(UserData As B4AItaliaUserData, ErrorMessage As String)
#Event: EditUser(Success As Boolean, UserId As Long)
#Event: UserDeleted(Success As Boolean)
#Event: PasswordChanged(Success As Boolean)
#Event: UsersList(Users As List, ErrorMessage As String)
'Class module
Private Sub Class_Globals
Public ERR_SERVER_UNREACHABLE As Int = -100
End Sub
' Inizializza l'oggetto
' EventName è il prefisso da utilizzare per sollevare gli eventi
' Caller è l'oggetto all'interno del quale sollevare gli eventi
Public Sub Initialize(EventName As String, Caller As Object)
' Calcola l'hash della password in modo da non far mai transitare nè memorizzare
' la password in chiaro.
' E' utilizzata internamente da tutte le funzioni che utilizzano la password.
' All'occorrenza può essere utilizzata anche esternamente.
Public Sub GetPasswordHash(Password As String) As String
' Verifica se un dato username esiste già nel db.
' Necessita che sia valorizzato solo UserData.Username
' Viene sollevato l'evento CheckValidNewUsername passando true se lo username NON esiste e quindi può essere utilizzato, false se ESISTE e non deve essere utilizzato.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub CheckValidNewUser(Username As String)
' Registra un nuovo utente nel db.
' Necessita che siano valorizzati in UserData almeno i campi obbligatori:
' - Cognome
' - Nome
' - EMail
' - Username
' - Denominazione
' - Comune
' - Provincia
' - Nazione
' Anche la password è ovviamente obbligatoria
' Se uno dei campi obbligatori non è stato valorizzato viene sollevato l'evento MandatoryError specificando il nome della funzione andata in errore e il campo non valorizzato.
' Se lo username dell'utente che si sta registrando esiste già, viene sollevato l'evento CheckValidNewUsername con IsValid = false.
' Viene sollevato l'evento UserRegistration passando true se l'utente è stato registrato, false se NON è stato registrato e non deve essere utilizzato.
' Se in UserRegistration Success = true in UserId è presente l'id dell'utente registrato, altrimeni è presente -1 e non va utilizzato
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub RegisterNewUser(UserData As B4AItaliaUserData, Password As String)
' Effettua il login all'applicazione
' Viene sollevato l'evento Login passando true se l'utente è entrato (quindi username e password sono corretti), false se NON è entrato e non deve essere utilizzato.
' Se in Login Success = true in UserId è presente l'id dell'utente registrato, altrimeni è presente -1 e non va utilizzato
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub Login(Username As String, Password As String)
' Recupera tutte le informazioni di dettaglio di un utente
' Per recuperare le informazioni va indicato sia lo UserId recuperato in fase di login o di registrazione
' insieme allo username (doppio controllo per sicurezza - per evitare che un qualsiasi sistema automatico
' possa scaricare tutte le nostre informazioni)
' Se AllData = true vengono ritornate tutte le informazioni anche se l'utente ha richiesto il nascondimento
' dei dati sensibili (ad esempio per la modifica dei propri dati da parte del proprietario che deve
' comunque vederli), se AllData = false vengono ritornate le informazioni esattamente come deciso dal
' proprietario (per tutti gli altri utenti)
' Al ricevimento dei dati dal server viene sollevato l'evento UserData con l'oggetto contenente tutti i dati
' dell'utente.
' In caso di problemi nel recupero dei dati, nell'oggetto UserData ritornato nell'evento, il campo ID avrà
' valore -1 e nel campo Tag sarà possibile visualizzare il messaggio di errore del server.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub GetUser(UserId As Long, Username As String, AllData As Boolean)
' Modifica i dati di un utente
' E' necessario che all'interno dell'oggetto UserData passato siano valorizzati sia lo UserId (con il valore
' recuperato in fase di Login o di registrazione) che lo username (che deve essere quello effettivo
' dell'utente che non può essere diverso/modificato - doppio controllo per sicurezza - per evitare che un
' qualsiasi sistema automatico o terzo possa entrare e fare danni)
' Al termine della modifica viene sollevato l'evento EditUser in cui Success = true se la modifica è riuscita,
' false altrimenti.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub EditUser(UserData As B4AItaliaUserData)
' Elimina un utente
' Per eliminare l'utente va indicato sia lo UserId recuperato in fase di login o di registrazione
' insieme allo username (doppio controllo per sicurezza - per evitare che un qualsiasi sistema automatico
' o terzo possa eliminare gli utenti - Attenzione: solo all'utente loggato deve essere data la possibilità
' di eliminare SOLO se stesso)
' Al termine della modifica viene sollevato l'evento UserDeleter in cui Success = true se l'eliminazione
' è riuscita, false altrimenti.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub DeleteUser(UserId As Long, Username As String)
' Cambia la password dell'utente loggato
' Il cambio password deve essere consentito solo per l'utente loggato!
' I parametri sono autoesplicativi
' Al termine dell'operazione viene sollevato l'evento PasswordChanged con l'indicazione del
' successo (Success = True) o fallimento (Success = False) dell'operazione.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub ChangePassword(UserId As Long, Username As String, OldPassword As String, NewPassword As String)
' Richiede al server l'elenco degli utenti presenti nel db
' Viene restituita, nell'evento UsersList, una lista in cui gli item sono di tipo B4AItaliaUserData
' In caso di errori la lista restituita sarà vuota e in ErrorMessage sarà presente il messaggio di errore.
' In caso di db vuoto, la lista restituita sarà vuota e ErrorMessage sarà valorizzato a "".
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
' Nota: nella lista di ritorno non vengono restituiti tutti i campi dell'utente ma solo:
' ID, EMail, Sito, Username, Denominazione, Comune, Provincia, Nazione, Telefono, Consenti(dati sensibili),
' Lat, Lon e GoogleMaps (tutti compatibilmente con la disponibilità data dal proprietario dei dati)
Public Sub GetUsersList
#Region Project Attributes
#ApplicationLabel: B4AItalia
#VersionCode: 1
#VersionName:
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Dim IDUtente As Long
Dim btnLogin As Button
Dim B As B4AItaliaData
Dim btnRegister1 As Button
Dim btnRegister2 As Button
Dim btnGet1 As Button
Dim btnGet2 As Button
Dim lstData As ListView
Dim btnEdit As Button
Dim btnDelete As Button
Dim btnChangePassword As Button
Dim btnReloadList As Button
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'B.Initialize("B4AItalia", Me)
Activity.LoadLayout("1")
B.Initialize("B4AItalia", Me)
End Sub
Sub Activity_Resume
B.GetUsersList
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub btnLogin_Click
' Mostrare la finestrella per inserire username e password
' io qui per praticità li passo fissi
B.Login("UtenteProva", "PasswordProva")
End Sub
Sub B4AItalia_Login(Success As Boolean, UserId As Long)
btnLogin.Enabled = Not(Success)
IDUtente = UserId
If Success Then
ToastMessageShow("Login effettuato correttamente", True)
btnEdit.Enabled = True
btnGet1.Enabled = True
btnGet2.Enabled = True
btnRegister1.Enabled = False
btnRegister2.Enabled = False
btnDelete.Enabled = True
btnChangePassword.Enabled = True
Else
ToastMessageShow("Login fallito", True)
End If
End Sub
Sub B4AItalia_ServerError(ErrorCode As Int, ErrorMessage As String)
Select ErrorCode
Case B.ERR_SERVER_UNREACHABLE:
ToastMessageShow("Server non raggiungibile. Riprova più tardi. (Messaggio : " & ErrorMessage & ")", True)
End Select
End Sub
Sub B4AItalia_CheckValidNewUsername(IsValid As Boolean)
If IsValid Then
ToastMessageShow("Il nome utente passato è valido", True)
Else
ToastMessageShow("Il nome utente è già in uso e pertanto non può essere utilizzato", True)
End If
End Sub
Sub B4AItalia_UserRegistration(Success As Boolean, UserId As Long)
If Success Then
ToastMessageShow("Registrazione nuovo utente avvenuta correttamente. ID assegnato: " & UserId, True)
Else
ToastMessageShow("Si sono verificati problemi durante la registrazione.", True)
End If
End Sub
Sub B4AItalia_MandatoryError(Function As String, Field As String)
ToastMessageShow("Almeno uno dei parametri obbligatori non è stato valorizzato nella chiamata alla funzione. Funzione: " & Function & " - Parametro: " & Field, True)
End Sub
Sub B4AItalia_EditUser(Success As Boolean, UserId As Long)
If Success Then
IDUtente = UserId
ToastMessageShow("Modifica dei dati dell'utente avvenuta correttamente", True)
Else
ToastMessageShow("Non è stato possibile modificare i dati dell'utente. Riprova più tardi.", True)
End If
End Sub
Sub B4AItalia_UserDeleted(Success As Boolean)
If Success Then
btnLogin.Enabled = True
btnEdit.Enabled = False
btnGet1.Enabled = False
btnGet2.Enabled = False
btnRegister1.Enabled = True
btnRegister2.Enabled = True
btnDelete.Enabled = False
btnChangePassword.Enabled = False
ToastMessageShow("Eliminazione dell'utente avvenuta correttamente", True)
Else
ToastMessageShow("Non è stato possibile eliminare l'utente. Riprova più tardi.", True)
End If
End Sub
Sub B4AItalia_PasswordChanged(Success As Boolean)
If Success Then
ToastMessageShow("Il cambio della password è avvenuto correttamente", True)
Else
ToastMessageShow("Non è stato possibile cambiare la password. Riprova più tardi.", True)
End If
End Sub
Sub B4AItalia_UserData(UserData As B4AItaliaUserData, ErrorMessage As String)
lstData.Clear
If ErrorMessage <> "" Then
ToastMessageShow(ErrorMessage, True)
Else
lstData.AddSingleLine("ID = " & UserData.ID)
lstData.AddSingleLine("Cognome = " & UserData.Cognome)
lstData.AddSingleLine("Nome = " & UserData.Nome)
lstData.AddSingleLine("EMail = " & UserData.EMail)
lstData.AddSingleLine("Sito = " & UserData.Sito)
lstData.AddSingleLine("Username = " & UserData.Username)
lstData.AddSingleLine("Altro = " & UserData.Altro)
lstData.AddSingleLine("Denominazione = " & UserData.Denominazione)
lstData.AddSingleLine("Indirizzo = " & UserData.Indirizzo)
lstData.AddSingleLine("CAP = " & UserData.CAP)
lstData.AddSingleLine("Comune = " & UserData.Comune)
lstData.AddSingleLine("Provincia = " & UserData.Provincia)
lstData.AddSingleLine("Nazione = " & UserData.Nazione)
lstData.AddSingleLine("Telefono = " & UserData.Telefono)
lstData.AddSingleLine("Consenti = " & UserData.Consenti)
lstData.AddSingleLine("Lat = " & UserData.Lat)
lstData.AddSingleLine("Lon = " & UserData.Lon)
lstData.AddSingleLine("GoogleMaps = " & UserData.GoogleMaps)
lstData.AddSingleLine("Curriculum = " & UserData.Curriculum)
lstData.AddSingleLine("UrlPortfolio = " & UserData.UrlPortfolio)
End If
End Sub
Sub B4AItalia_UsersList(Users As List, ErrorMessage As String)
If Users.Size = 0 Then
If ErrorMessage <> "" AND ErrorMessage <> "null" Then
ToastMessageShow("Si è verificato un errore sul server: " & ErrorMessage, True)
Else
ToastMessageShow("Al momento non ci sono utenti registrati", True)
End If
Else
lstData.Clear
For Each U As B4AItaliaUserData In Users
lstData.AddTwoLines2(U.Username, U.Comune & "(" & U.Provincia & ")", U.ID)
Next
End If
End Sub
Sub btnRegister2_Click
Dim U As B4AItaliaUserData
U.Cognome = "Pasticcio"
U.Nome = "Ciccio"
U.EMail = "[email protected]"
U.Sito = "http://www.blahblahblah.com"
U.Username = "Ciccio"
U.Altro = "Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo"
U.Denominazione = "Denominazione di origine controllata"
U.Indirizzo = "Indirizzo di prova"
U.CAP = "12345"
U.Comune = "Comune di prova"
U.Provincia = "Provincia di prova"
U.Nazione = "Nazione di prova"
U.Telefono = "326 457 84 12"
U.Consenti = False
U.Lat = 39.1234567
U.Lon = 12.4324322
U.GoogleMaps = "A caso"
U.Curriculum = "Secondo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo"
U.UrlPortfolio = "http://smiles.forall.it/"
B.RegisterNewUser(U, "Pasticcio")
End Sub
Sub btnRegister1_Click
Dim U As B4AItaliaUserData
U.Cognome = "Di Prova"
U.Nome = "Utente"
U.EMail = "[email protected]"
U.Sito = "http://www.blahblahblah.com"
U.Username = "UtenteProva"
U.Altro = "Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo"
U.Denominazione = "Denominazione di origine protetta"
U.Indirizzo = "Indirizzo di prova"
U.CAP = "12345"
U.Comune = "Comune di prova"
U.Provincia = "Provincia di prova"
U.Nazione = "Nazione di prova"
U.Telefono = "326 457 84 12"
U.Consenti = True
U.Lat = 39.1234567
U.Lon = 12.4324322
U.GoogleMaps = "A caso"
U.Curriculum = "Secondo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo Testo Lungo"
U.UrlPortfolio = "http://smiles.forall.it/"
B.RegisterNewUser(U, "PasswordProva")
End Sub
Sub btnGet2_Click
B.GetUser(IDUtente, "UtenteProva", True)
End Sub
Sub btnGet1_Click
B.GetUser(IDUtente, "UtenteProva", False)
End Sub
Sub lstData_ItemClick (Position As Int, Value As Object)
End Sub
Sub btnEdit_Click
Dim U As B4AItaliaUserData
U.ID = IDUtente ' IMPORTANTE!
U.Cognome = "Di Prova 2"
U.Nome = "Utente 2"
U.EMail = "[email protected]"
U.Sito = "http://www.blahblahblah2.com"
U.Username = "UtenteProva" ' IMPORTANTE!
U.Altro = "Testo Corto"
U.Denominazione = "Denominazione di origine protetta 2"
U.Indirizzo = "Indirizzo di prova 2"
U.CAP = "67890"
U.Comune = "Comune di prova 2"
U.Provincia = "Provincia di prova 2"
U.Nazione = "Nazione di prova 2"
U.Telefono = "+39 345 457 84 12"
U.Consenti = True
U.Lat = 41.1234567
U.Lon = 14.4324322
U.GoogleMaps = "A caso 2"
U.Curriculum = "Secondo Testo Corto"
U.UrlPortfolio = "http://smiles.forall2.it/"
B.EditUser(U)
End Sub
Sub btnDelete_Click
B.DeleteUser(IDUtente, "UtenteProva")
End Sub
Sub btnChangePassword_Click
B.ChangePassword(IDUtente, "UtenteProva", "PasswordProva", "NuovaPassword")
End Sub
Sub btnReloadList_Click
B.GetUsersList
End Sub
#Event: CheckValidNewUsername(IsValid As Boolean)
#Event: UserRegistration(Success As Boolean, UserId As Long)
#Event: ServerError(ErrorCode As Int, ErrorMessage As String)
#Event: MandatoryError(Function As String, Field As String)
#Event: Login(Success As Boolean, UserId As Long)
#Event: UserData(UserData As B4AItaliaUserData, ErrorMessage As String)
#Event: EditUser(Success As Boolean, UserId As Long)
#Event: UserDeleted(Success As Boolean)
#Event: PasswordChanged(Success As Boolean)
#Event: UsersList(Users As List, ErrorMessage As String)
#Event: PictureSent(Success As Boolean)
#Event: PictureTaken(Picture As Bitmap, Thumb As Boolean)
'Class module
Private Sub Class_Globals
Public ERR_SERVER_UNREACHABLE As Int = -100
End Sub
' Inizializza l'oggetto
' EventName è il prefisso da utilizzare per sollevare gli eventi
' Caller è l'oggetto all'interno del quale sollevare gli eventi
Public Sub Initialize(EventName As String, Caller As Object)
' Calcola l'hash della password in modo da non far mai transitare nè memorizzare
' la password in chiaro.
' E' utilizzata internamente da tutte le funzioni che utilizzano la password.
' All'occorrenza può essere utilizzata anche esternamente.
Public Sub GetPasswordHash(Password As String) As String
' Verifica se un dato username esiste già nel db.
' Necessita che sia valorizzato solo UserData.Username
' Viene sollevato l'evento CheckValidNewUsername passando true se lo username NON esiste e quindi può essere utilizzato, false se ESISTE e non deve essere utilizzato.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub CheckValidNewUser(Username As String)
' Registra un nuovo utente nel db.
' Necessita che siano valorizzati in UserData almeno i campi obbligatori:
' - Cognome
' - Nome
' - EMail
' - Username
' - Denominazione
' - Comune
' - Provincia
' - Nazione
' Anche la password è ovviamente obbligatoria
' Se uno dei campi obbligatori non è stato valorizzato viene sollevato l'evento MandatoryError specificando il nome della funzione andata in errore e il campo non valorizzato.
' Se lo username dell'utente che si sta registrando esiste già, viene sollevato l'evento CheckValidNewUsername con IsValid = false.
' Viene sollevato l'evento UserRegistration passando true se l'utente è stato registrato, false se NON è stato registrato e non deve essere utilizzato.
' Se in UserRegistration Success = true in UserId è presente l'id dell'utente registrato, altrimeni è presente -1 e non va utilizzato
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub RegisterNewUser(UserData As B4AItaliaUserData, Password As String)
' Effettua il login all'applicazione
' Viene sollevato l'evento Login passando true se l'utente è entrato (quindi username e password sono corretti), false se NON è entrato e non deve essere utilizzato.
' Se in Login Success = true in UserId è presente l'id dell'utente registrato, altrimeni è presente -1 e non va utilizzato
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo codice di errore.
Public Sub Login(Username As String, Password As String)
' Recupera tutte le informazioni di dettaglio di un utente
' Per recuperare le informazioni va indicato sia lo UserId recuperato in fase di login o di registrazione
' insieme allo username (doppio controllo per sicurezza - per evitare che un qualsiasi sistema automatico
' possa scaricare tutte le nostre informazioni)
' Se AllData = true vengono ritornate tutte le informazioni anche se l'utente ha richiesto il nascondimento
' dei dati sensibili (ad esempio per la modifica dei propri dati da parte del proprietario che deve
' comunque vederli), se AllData = false vengono ritornate le informazioni esattamente come deciso dal
' proprietario (per tutti gli altri utenti)
' Al ricevimento dei dati dal server viene sollevato l'evento UserData con l'oggetto contenente tutti i dati
' dell'utente.
' In caso di problemi nel recupero dei dati, nell'oggetto UserData ritornato nell'evento, il campo ID avrà
' valore -1 e nel campo Tag sarà possibile visualizzare il messaggio di errore del server.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub GetUser(UserId As Long, Username As String, AllData As Boolean)
' Modifica i dati di un utente
' E' necessario che all'interno dell'oggetto UserData passato siano valorizzati sia lo UserId (con il valore
' recuperato in fase di Login o di registrazione) che lo username (che deve essere quello effettivo
' dell'utente che non può essere diverso/modificato - doppio controllo per sicurezza - per evitare che un
' qualsiasi sistema automatico o terzo possa entrare e fare danni)
' Al termine della modifica viene sollevato l'evento EditUser in cui Success = true se la modifica è riuscita,
' false altrimenti.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub EditUser(UserData As B4AItaliaUserData)
' Elimina un utente
' Per eliminare l'utente va indicato sia lo UserId recuperato in fase di login o di registrazione
' insieme allo username (doppio controllo per sicurezza - per evitare che un qualsiasi sistema automatico
' o terzo possa eliminare gli utenti - Attenzione: solo all'utente loggato deve essere data la possibilità
' di eliminare SOLO se stesso)
' Al termine della modifica viene sollevato l'evento UserDeleter in cui Success = true se l'eliminazione
' è riuscita, false altrimenti.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub DeleteUser(UserId As Long, Username As String)
' Cambia la password dell'utente loggato
' Il cambio password deve essere consentito solo per l'utente loggato!
' I parametri sono autoesplicativi
' Al termine dell'operazione viene sollevato l'evento PasswordChanged con l'indicazione del
' successo (Success = True) o fallimento (Success = False) dell'operazione.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub ChangePassword(UserId As Long, Username As String, OldPassword As String, NewPassword As String)
' Richiede al server l'elenco degli utenti presenti nel db
' Viene restituita, nell'evento UsersList, una lista in cui gli item sono di tipo B4AItaliaUserData
' In caso di errori la lista restituita sarà vuota e in ErrorMessage sarà presente il messaggio di errore.
' In caso di db vuoto, la lista restituita sarà vuota e ErrorMessage sarà valorizzato a "".
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
' Nota: nella lista di ritorno non vengono restituiti tutti i campi dell'utente ma solo:
' ID, EMail, Sito, Username, Denominazione, Comune, Provincia, Nazione, Telefono, Consenti(dati sensibili),
' Lat, Lon e GoogleMaps (tutti compatibilmente con la disponibilità data dal proprietario dei dati)
Public Sub GetUsersList
' Invia una immagine per l'utente indicato.
' Al termine dell'operazione viene sollevato l'evento PictureSent con l'indicazione del
' successo (Success = True) o fallimento (Success = False) dell'operazione.
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub SendPicture(UserID As Long, Username As String, Bmp As Bitmap)
' Recupera dal server l'immagine per l'utente indicato.
' Se thumb = true verrà ritornata una miniatura dell'immagine, altrimenti verrà ritornata l'immagine originale.
' Al termine dell'operazione viene sollevato l'evento PictureTaken con l'immagine ritornata e il valore passato in Thumb
' (per sapere se è stata restituita una miniatura (true) o l'immagine originale (false))
' In caso di problemi di connessione col server, viene sollevato l'evento ServerError passando il relativo
' codice di errore.
Public Sub GetPicture(UserId As Long, Username As String, Thumb As Boolean)