﻿Imports System.Data.SqlClient

Public Class LoginCliente
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Session("Autenticato") Then
            disconnettiASPxButton.Text = "Disconnetti utente " & Session("sUtente_UserName")
            disconnettiASPxButton.Visible = True
        Else
            disconnettiASPxButton.Text = "Disconnetti utente"
            disconnettiASPxButton.Visible = False
        End If

    End Sub

    Protected Sub loginASPxButton_Click(sender As Object, e As EventArgs) Handles loginASPxButton.Click
        '--- controllo validità dei dati inseriti -----------------------------------------------------
        If UserTextBox.Text.Trim.Contains(" ") Or PwTextBox.Text.Trim.Contains(" ") Then
            Response.Redirect("LoginCliente.aspx")
            Exit Sub
        End If
        '----------------------------------------------------------------------------------------------

        Dim nome_ut
        Dim pass
        Dim autenticato As Boolean = False

        nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
        pass = Replace(Request.Form("password"), "'", "''")

        Dim connection = New SqlConnection(ConfigurationManager.ConnectionStrings("pa_systemConnectionString").ConnectionString)
        Try
            connection.Open()
            Dim tmpSQL = "SELECT * FROM utentiClienti WHERE UserName = '" & UserTextBox.Text.Trim & "' AND UserPassword = '" & PwTextBox.Text.Trim & "'"

            '--- esegue il comando ---
            Dim SqlCommand = New SqlCommand(tmpSQL, connection)
            Dim dr = SqlCommand.ExecuteReader()

            If dr.HasRows Then
                dr.Read()

                '---------------------------------------------------------------------------------
                '--- imposta le variabili di sessioni utilizzate poi da tutto il progetto
                '---------------------------------------------------------------------------------
                Session("sUtenteCliente_ID") = dr.Item("IDUtente").ToString
                Session("sUtenteCliente_UserName") = dr.Item("UserName")
                Session("sUtenteCliente_Cognome") = dr.Item("Cognome")
                Session("sUtentClientee_Nome") = dr.Item("Nome")
                'Session("sUtente_AdminLicenza") = dr.Item("AmministratoreLicenzaUtente")
                Session("sUtenteCliente_Livello") = dr.Item("LivelloAutorizzazione")
                Session("sUtente_Cliente") = True

                '-- legge la licenza collegata per confermare l'autenticazione
                If dr.Item("Attivo") = True Then
                    autenticato = True
                Else
                    autenticato = False
                End If
                'autenticato = LeggiLicenza(dr.Item("IDLicenza"))
            Else
                '--- non esiste l'utente
                autenticato = False
            End If

            connection.Close()

        Catch ex As Exception
            connection.Close()
            Response.Write("Errore: " & ex.Message)
            autenticato = False
        End Try

        '--- Verifica finale e reindirizzamento utente
        If autenticato Then
            Session("Autenticato") = True
            Response.Redirect("DefaultCliente.aspx")
        Else
            Session("Autenticato") = False
            disconnettiUtente()
            Response.Redirect("LoginCliente.aspx")
        End If
    End Sub
    Function LeggiLicenza(pIDLicenza)
        '=============================================================================================
        '--- Legge la licenza collegata all'utente
        '=============================================================================================
        'Dim autenticato As Boolean = False

        'If IsDBNull(pIDLicenza) Then Exit Function

        'Dim connection = New SqlConnection(ConfigurationManager.ConnectionStrings("pa_systemConnectionString").ConnectionString)
        'Try
        '    connection.Open()
        '    Dim tmpSQL = "SELECT * FROM licenza WHERE IDLicenza = " & pIDLicenza.ToString

        '    '--- esegue il comando ---
        '    Dim SqlCommand = New SqlCommand(tmpSQL, connection)
        '    Dim dr = SqlCommand.ExecuteReader()

        '    If dr.HasRows Then
        '        dr.Read()

        '        If dr.Item("Attivo") = True Then
        '            autenticato = True
        '            '---------------------------------------------------------------------------------
        '            '--- imposta le variabili di sessioni utilizzate poi da tutto il progetto
        '            '---------------------------------------------------------------------------------
        '            Session("sLicenza_ID") = dr.Item("IDLicenza")
        '            Session("sLicenza_Descrizione") = dr.Item("Descrizione")

        '            '---------------------------------------------------------------------------------
        '            '--- crea la stringa di connessione e la mette in una variabile di sessione
        '            '---------------------------------------------------------------------------------
        '            Dim connString = "Data Source=" & dr.Item("DataSourceIP").ToString.Trim & ";"
        '            connString += "Initial Catalog=" & dr.Item("NomeDatabase").ToString.Trim & ";"
        '            connString += "Persist Security Info=True;"
        '            connString += "User ID=" & dr.Item("UserID").ToString.Trim & ";"
        '            connString += "Password=" & dr.Item("Password").ToString.Trim & ""

        '            Session("sConnectionString") = connString
        '        Else
        '            '--- la licenza non è attiva
        '            autenticato = False
        '        End If

        '    Else
        '        '--- non esiste la licenza o non è valida
        '        autenticato = False
        '    End If

        '    connection.Close()

        'Catch ex As Exception
        '    connection.Close()
        '    Response.Write("Errore: " & ex.Message)
        '    autenticato = False
        'End Try

        ''--- ritorna TRUE se la licenza è ok e quindi è autenticato correttamente
        'Return autenticato

    End Function
    Protected Sub disconnettiASPxButton_Click(sender As Object, e As EventArgs) Handles disconnettiASPxButton.Click
        disconnettiUtente()
    End Sub

    Sub disconnettiUtente()

        '--- Disconnette l'utente azzerando le variabili di sessione
        Session("Autenticato") = False
        Session("sUtenteCliente_ID") = ""
        Session("sUtenteCliente_UserName") = ""
        Session("sUtenteCliente_Cognome") = ""
        Session("sUtenteCliente_Nome") = ""
        'Session("sUtente_AdminLicenza") = ""
        Session("sUtenteCliente_Livello") = ""
        Session("sUtente_Cliente") = ""

        '--- variabili Licenza
        Session("sLicenza_ID") = ""
        Session("sLicenza_Descrizione") = ""

        '--- stringa di connessione
        Session("sConnectionString") = ""

        Response.Redirect("LoginCliente.aspx")

    End Sub
End Class