Imports Microsoft.VisualBasic

Namespace LYB.VB
    Public Class LybPassword
        Dim _data As New DataUtils
        Dim _emailAddress As String
        Dim _groupName As String
        Dim _password As String
        Dim _sessionID As String

        Public ReadOnly Property GroupName() As String
            Get
                GroupName = _groupName
            End Get
        End Property
        Public Sub New(ByVal sessionID As String, ByVal emailAddress As String, Optional ByVal log As Boolean = False)
            If emailAddress = "" Then
                Throw New System.Exception("AnvändarID saknas. <br>Backa tillbaka till föregående webbsida (med Bakåt-knappen) <br>och ange din E-postadress som användarID!")
            End If
            _emailAddress = emailAddress
            _sessionID = sessionID
            Try
                If log = True Then
                    _data.AddToErrorLog(emailAddress, 0, 0, "LybPassword constructor invoked", sessionID, 0)
                End If
                _password = _data.CreatePassword(emailAddress)
                If _password = "no unique hit" Or Left(_password, 5) = "ERROR" Then
                    Throw New System.Exception(_password)
                End If
                _data.AddToErrorLog(emailAddress, 0, 0, "New password: " & _password, sessionID, 0)
            Catch ex As Exception
                _data.AddToErrorLog(emailAddress, 0, 0, "Failed New password: " & _password, sessionID, 1)
                Throw New System.Exception(ex.Message)
            End Try

        End Sub

        Public Function Send(Optional ByVal log As Boolean = False) As Boolean

            Dim data As New DataUtils
            Dim emailAddress As String = _emailAddress
            Dim message As String = ""
            Try
                If log = True Then
                    data.AddToErrorLog(emailAddress, 0, 0, "LybPassword Send invoked", _sessionID, 0)
                End If
                Dim groupName As String
                groupName = data.VerifyUser(emailAddress)
                If groupName <> "" Then
                    If Left(groupName, 5) = "ERROR" Then
                        data.AddToErrorLog(emailAddress, 0, 0, groupName, _sessionID, 1)
                        message = "INFO4"
                    Else
                        _groupName = groupName
                        Dim password As String = Left(_password, InStr(_password, "\") - 1)
                        Dim result As String = data.MailPassword(password, emailAddress, groupName)
                        If result = "" Then
                            If log = True Then
                                data.AddToErrorLog(emailAddress, 0, 0, "Nytt lösenord skapat", _sessionID, 0)
                            End If
                            message = "INFO1"
                        Else
                            data.AddToErrorLog(emailAddress, 0, 0, result, _sessionID, 1)
                            message = "INFO2"
                        End If
                        End If
                Else
                    data.AddToErrorLog(emailAddress, 0, 0, "Epostadressen finns ej i databasen", _sessionID, 1)
                    message = "INFO3"
                End If
            Catch ex As System.Exception
                Throw New System.Exception(ex.Message)
            End Try
            If message <> "" Then
                Throw New System.Exception(message)
            End If
            Return True
        End Function

    End Class
End Namespace
