' Module1.vb
' Test some Hashtable and ArrayList ideas
' RJM Programming
' December, 2014

Module Module1

    Dim contactlistHT As Hashtable
    Dim contactlistHTEmail As Hashtable
    Dim sortedName As ArrayList
    Dim sortedEmail As ArrayList
    Dim sortedNameEmail As ArrayList
    Dim sortedEmailName As ArrayList

    Private Function getmeNominatedName(ByVal n As Integer) As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Name " + (n + 1).ToString() + " of a sorted list (of " + sortedName.Count.ToString() + ") is: " + sortedName(n) + vbLf)
        Return sortedName(n)
    End Function

    Private Function getmeNominatedNameEmail(ByVal n As Integer) As String
        Dim ours As String = sortedNameEmail(n)
        System.IO.File.AppendAllText("c:\ContactList.csv", "Name " + (n + 1).ToString() + " of a sorted list (of " + sortedNameEmail.Count.ToString() + ") has the email: " + ours.Substring(ours.IndexOf(",")).Replace(",", "") + vbLf)
        Return ours
    End Function

    Private Function getmeNominatedEmail(ByVal n As Integer) As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Email " + (n + 1).ToString() + " of a sorted list (of " + sortedEmail.Count.ToString() + ")  is: " + sortedEmail(n) + vbLf)
        Return sortedEmail(n)
    End Function

    Private Function getmeNominatedEmailName(ByVal n As Integer) As String
        Dim ours As String = sortedEmailName(n)
        System.IO.File.AppendAllText("c:\ContactList.csv", "Email " + (n + 1).ToString() + " of a sorted list (of " + sortedEmailName.Count.ToString() + ")  has the name: " + ours.Substring(ours.IndexOf(",")).Replace(",", "") + vbLf)
        Return ours
    End Function

    Private Function getmeLastEmail() As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Last email of a sorted list (of " + sortedEmail.Count.ToString() + ")  is: " + sortedEmail(sortedEmail.Count - 1) + vbLf)
        Return sortedEmail(sortedEmail.Count - 1)
    End Function

    Private Function getmeLastEmailName() As String
        Dim ours As String = sortedEmailName(sortedEmailName.Count - 1)
        System.IO.File.AppendAllText("c:\ContactList.csv", "Last email of a sorted list (of " + sortedEmailName.Count.ToString() + ")  has the name: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf)
        Return ours
    End Function

    Private Function getmeFirstEmail() As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "First email of a sorted list (of " + sortedEmail.Count.ToString() + ")  is: " + sortedEmail(0) + vbLf)
        Return sortedEmail(0)
    End Function

    Private Function getmeFirstEmailName() As String
        Dim ours As String = sortedEmailName(0)
        System.IO.File.AppendAllText("c:\ContactList.csv", "First email of a sorted list (of " + sortedEmailName.Count.ToString() + ")  has the name: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf)
        Return ours
    End Function

    Private Function getmeEmailForName(ByVal ourn As String) As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Email for " + ourn + " is: " + contactlistHT(ourn) + vbLf)
        Return contactlistHT(ourn)
    End Function

    Private Function getmeNameForEmail(ByVal ourn As String) As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Name for " + ourn + " is: " + contactlistHTEmail(ourn) + vbLf)
        Return contactlistHTEmail(ourn)
    End Function


    Private Function getmeLastName() As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "Last name of a sorted list (of " + sortedName.Count.ToString() + ")  is: " + sortedName(sortedName.Count - 1) + vbLf)
        Return sortedName(sortedName.Count - 1)
    End Function

    Private Function getmeLastNameEmail() As String
        Dim ours As String = sortedNameEmail(sortedNameEmail.Count - 1)
        System.IO.File.AppendAllText("c:\ContactList.csv", "Last name of a sorted list (of " + sortedNameEmail.Count.ToString() + ")  has the email: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf)
        Return ours
    End Function

    Private Function getmeFirstName() As String
        System.IO.File.AppendAllText("c:\ContactList.csv", "First name of a sorted list (of " + sortedName.Count.ToString() + ")  is: " + sortedName(0) + vbLf)
        Return sortedName(0)
    End Function

    Private Function getmeFirstNameEmail() As String
        Dim ours As String = sortedNameEmail(0)
        System.IO.File.AppendAllText("c:\ContactList.csv", "First name of a sorted list (of " + sortedNameEmail.Count.ToString() + ")  has the email: " + ours.substring(ours.indexOf(",")).replace(",", "") + vbLf)
        Return ours
    End Function

    Sub Main()
        Dim stringNE As String = " "
        Dim stringN As String = ""
        Dim stringE As String = ""
        Dim spare As String
        Dim nameOfInterest As String = "Smith"

        Dim num As Integer = 0
        Dim i As Integer
       
        ' Initialize ...
        contactlistHT = New Hashtable()
        contactlistHTEmail = New Hashtable()
        sortedName = New ArrayList()
        sortedEmail = New ArrayList()
        sortedNameEmail = New ArrayList()
        sortedEmailName = New ArrayList()

        ' Gather data ...
        Do While (stringNE <> "")
            stringNE = InputBox("Please enter Name,Email " + (num + 1).ToString() + " <cr> exits: ", "Contact List", "")
            If (stringNE.Contains(",")) Then
                stringN = stringNE.Substring(0, stringNE.IndexOf(",")).Replace(",", "")
                stringE = stringNE.Replace(stringN + ",", "").TrimStart()
            ElseIf (stringNE <> "") Then
                stringN = stringNE
                stringE = InputBox("Please enter Email " + (num + 1).ToString() + " <cr> exits: ", "Contact List", "")
            End If
            If (stringN <> "" And stringE <> "") Then
                contactlistHT(stringN) = stringE
                contactlistHTEmail(stringE) = stringN
                sortedName.Add(stringN)
                sortedEmail.Add(stringE)
                spare = stringN + "," + stringE
                sortedNameEmail.Add(spare)
                spare = stringE + "," + stringN
                sortedEmailName.Add(spare)
                num = num + 1
            Else
                stringNE = ""
            End If
        Loop

        ' Sort ArrayList collections ...
        sortedName.Sort()
        sortedEmail.Sort()
        sortedNameEmail.Sort()
        sortedEmailName.Sort()

        If num > 0 Then
            spare = ""
            For i = 1 To sortedNameEmail.Count
                If (spare <> sortedNameEmail(i - 1).ToString()) Then
                    spare = sortedNameEmail(i - 1).ToString()
                    If (i > 1) Then
                        System.IO.File.AppendAllText("c:\\ContactList.csv", spare + vbLf)
                    Else
                        System.IO.File.WriteAllText("c:\\ContactList.csv", spare + vbLf)
                    End If
                End If
            Next
            Dim ans As String = InputBox(System.IO.File.ReadAllText("c:\\ContactList.csv"), "Your Sorted Contact List", "")
            If ((ans + "Y").substring(0, 1).ToUpper() <> "N") Then
                System.IO.File.AppendAllText("c:\\ContactList.csv", vbLf + vbLf)

                ' Report findings ...
                Dim smithsemail As String = getmeEmailForName(nameOfInterest)

                getmeFirstName()
                getmeFirstNameEmail()
                If (sortedName.Count >= 3) Then
                    getmeNominatedName(2)
                    getmeNominatedNameEmail(2)
                End If
                getmeLastName()
                getmeLastNameEmail()

                getmeFirstEmail()
                getmeFirstEmailName()
                If (sortedEmail.Count >= 3) Then
                    getmeNominatedEmail(2)
                    getmeNominatedEmailName(2)
                End If
                getmeLastEmail()
                getmeLastEmailName()

                If (1 = 2) Then

                    Dim smithsname As String = getmeNameForEmail(smithsemail)
                End If

                System.IO.File.AppendAllText("c:\\ContactList.csv", "Email for " + nameOfInterest + " is: " + smithsemail + vbLf)
                Dim answer As String = InputBox(System.IO.File.ReadAllText("c:\\ContactList.csv"), "Your Sorted Contact List and Report", "")
            End If
        End If
    End Sub

End Module