Public Class SMS
Private _numberLength As Integer
Private _ListOfNumbers As New Dictionary(Of String, String)
Private _ListOfProviders As New Dictionary(Of String, String)
Private _phonenumber As String
Private _FilePath As String
Private __defaultprovider As String
#Region "Properties"
Private Property PhoneNumber() As String
Get
Return _phonenumber
End Get
Set(ByVal value As String)
_phonenumber = value
End Set
End Property
Private Property Length() As Integer
Get
Return _numberLength
End Get
Set(ByVal value As Integer)
_numberLength = value
End Set
End Property
Private Property ListOfProviders() As Dictionary(Of String, String)
Get
Return _ListOfProviders
End Get
Set(ByVal value As Dictionary(Of String, String))
_ListOfProviders = value
End Set
End Property
Private Property ListOfNumbers() As Dictionary(Of String, String)
Get
Return _ListOfNumbers
End Get
Set(ByVal value As Dictionary(Of String, String))
_ListOfNumbers = value
End Set
End Property
Private Property DefaultProvidor() As String
Get
Return __defaultprovider
End Get
Set(ByVal value As String)
__defaultprovider = value
End Set
End Property
Public Property FilePath() As String
Get
Return _FilePath
End Get
Set(ByVal value As String)
_FilePath = value
End Set
End Property
#End Region
#Region "Constructors"
Public Sub New(ByVal df As String)
Try
If Not String.IsNullOrEmpty(df) Then
DefaultProvidor = df
Length = 10
LoadProviders()
Else
Throw New Exception
End If
Catch ex As Exception
'log your error
Console.WriteLine(ex.Message)
End Try
End Sub
Public Sub New(ByVal df As String, ByVal l As Integer)
Try
If Not String.IsNullOrEmpty(df) Or Integer.Parse(l) Then
DefaultProvidor = df
Length = l
LoadProviders()
Else
Throw New Exception("Default Provider must be a string")
End If
Catch ex As Exception
'handle your exception here.
Console.WriteLine(ex.Message)
End Try
End Sub
Public Sub New(ByVal df As String, ByVal fp As String)
If Not String.IsNullOrEmpty(fp) Or Not String.IsNullOrEmpty(fp) Then
DefaultProvidor = df
Length = 10
FilePath = fp
Else
Throw New Exception("Your filepath/Defaultprovider is invalid")
End If
End Sub
#End Region
#Region "Public Functions"
'public functions.
Public Sub AddSingle(ByVal number As String, ByVal provider As String)
PhoneNumber = number
If CheckNumber() Then
If DoesProviderExist(provider) Then
ListOfNumbers.Add(PhoneNumber, provider)
End If
End If
End Sub
Public Sub AddSingle(ByVal number As String) 'uses the default provider
PhoneNumber = number
If CheckNumber() Then
ListOfNumbers.Add(PhoneNumber, DefaultProvidor)
End If
End Sub
Public Sub Delete(ByVal number As String)
ListOfNumbers.Remove(number)
End Sub
Public Sub SendAll()
Dim fullEmail As String = String.Empty
For Each num In ListOfNumbers
Dim pro As String = String.Empty
If ListOfProviders.TryGetValue(num.Value, pro) Then
Dim temp As String = pro.Replace("number", num.Key)
SendEmail(temp)
Else
Console.WriteLine("Sendall failed")
End If
Next
End Sub
#End Region
#Region "Private functions"
Private Sub SendEmail(ByVal email As String)
'send your email here.
Console.WriteLine(email)
End Sub
Private Sub LoadProviders()
Dim reader As New IO.StreamReader(FilePath) ' create new streamreader
Do Until reader.EndOfStream
Dim line As String = reader.ReadLine 'read single line
Dim proArray() As String = line.Split(",") 'split the line
ListOfProviders.Add(proArray(0).Trim, proArray(1).Trim) 'store both parts into dictionary
Loop
reader.Close()
End Sub
'this method parses the number, and removes any dashses.
Private Function CheckNumber() As Boolean
Dim ph As String = PhoneNumber
'remove one or zero.
If ph.StartsWith(0) Or ph.StartsWith(1) Then
ph = ph.Remove(0, 1)
End If
'remove all dashes and check for length
ph = ph.Replace("-", String.Empty)
If ph.Length <> Length Or ph.Length + 1 <> Length + 1 Then
Console.WriteLine("Length didnt match")
Return False
End If
' Check a (USA style) telephone number
'1-800-201-1929 (true)
'800-201-1929 (true)
'201-1929 (false)
Dim myRegex As New Regex( _
"^1?\s*-?\s*(\d{3}|\(\s*\d{3}\s*\))\s*-?\s*\d{3}\s*-?\s*\d{4}$")
If Not myRegex.IsMatch(ph) Then
Console.WriteLine("not in right format")
Return False
End If
PhoneNumber = ph
Console.WriteLine(PhoneNumber)
Return True
End Function
Private Function DoesProviderExist(ByVal name As String) As Boolean
If ListOfProviders.ContainsKey(name.Trim) Then
Console.WriteLine("provider exists: " & name)
Return True
Else
Console.WriteLine("provider don't exist")
Return False
End If
End Function
#End Region
End Class