Italian App ListaItaliani

ivanomonti

Expert
Licensed User
Longtime User
Fate delle proposte diverse poi si decide assieme nome idem ma va bene basic4android Italia
 

ivanomonti

Expert
Licensed User
Longtime User
Si va bene e l'ho già inserita... trovi tutto nel sorgente, inoltre e possibile inviare i dati da aggiungere nell'app stessa.

Nel menu esiste voce nuovo developer, inserite i vostri dati completi e poi fate invia, verrà crata un email dove inviare i dati da associare all xml.
 

Attachments

  • B4ALItalia.zip
    446.9 KB · Views: 230

fiaful

Member
Licensed User
Longtime User
Ecco la libreria per utilizzare il db e i services sul mio server...

questa è l'interfaccia:

B4X:
#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

La libreria dipende a sua volta da queste librerie: ByteConverter (1.10), Core (2.46), Encryption (1.10), HTTP (1.23), StringUtils (1.02)
 

Attachments

  • B4AItaliaData.zip
    18.3 KB · Views: 212

fiaful

Member
Licensed User
Longtime User
E qui c'è un piccolo esempio di utilizzo (per adesso... domani pomeriggio inserisco un progetto funzionante... ma intanto per dare l'idea):

B4X:
#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
 

ivanomonti

Expert
Licensed User
Longtime User
Bella classe, ma perchè non fai tu il form di registrazione e porti avanti quel pezzo mancante che nella mia non ho fatto. così si va avanti, cmq i miei complimenti.
 

fiaful

Member
Licensed User
Longtime User
Grazie Ivano... purtroppo in questo periodo non ho molto tempo da dedicare... qui c'è la libreria completa con anche le funzioni per salvare e recuperare l'immagine dell'utente sul/dal server... a voi... ma ovviamente resto a disposizione in caso ci fossero problemi o richieste

B4X:
#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)
 

Attachments

  • B4AItaliaData.zip
    20 KB · Views: 206
Top