Imports System.Web
Imports CharterDotCom.CommonEntities.Library
Imports CharterDotCom.CommonEntities.Library.Enumerations
Imports CharterDotCom.CommonEntities.Library.EntityMemberServices
'Imports CharterDotCom.CommonEntities.Library.EntityEBSServices
Imports CharterDotCom.CommonEntities.Library.EntitySupport
Imports CharterDotCom.CommonEntities.Library.EntitySearch
Imports CharterDotCom.CommonEntities.Library.EntityWebConfig
'Imports CharterDotCom.CommonEntities.Library.EntityG2BServices
Imports System.Configuration
Imports System.Runtime.Remoting
'Imports CharterDotCom.Library

''' ----------------------------------------------------------------------------
''' <summary>
''' 
'''     Project:  CharterDotCom.WebSite.Library
'''       Class:  AccountManager
''' 
''' Description:  Proxy class for account information and functionality.
''' 
''' </summary>
''' <remarks></remarks>
''' <history>
''' 	[jnaes]		01/05/2011	Issue #10934.  Added SetBillingAddress().
''' </history>
''' ----------------------------------------------------------------------------
Public Class AccountManager

    Private _trackingID As String
    'Private _am As AccountClient
    Private _am As BLAccountManager

    Private Sub New()
        Dim cmSession As Object = HttpContext.Current.Session(Common.AccountManagerKey)
        If Not cmSession Is Nothing Then
            _am = New BLAccountManager(DirectCast(cmSession, Dictionary(Of String, Object)))
        Else
            _am = New BLAccountManager
        End If

        _trackingID = HttpContext.Current.Session.SessionID

        'Try

        '  Common.RegisterChannels()
        '  AccountManagerProxy = CType(Activator.GetObject(GetType(AccountClient), CStr(HttpContext.Current.Application("RemoteURL_AccountManager"))), AccountClient)
        '  If Not HttpContext.Current.Request.Cookies(CookieName.SessionID) Is Nothing Then
        '    _trackingID = AccountManagerProxy.Initialize(HttpContext.Current.Request.Cookies(CookieName.SessionID).Value)
        '  Else
        '    _trackingID = AccountManagerProxy.Initialize(Nothing)
        '    HttpContext.Current.Response.Cookies.Add(New HttpCookie(CookieName.SessionID, TrackingID))
        '  End If
        'Catch ex As Exception
        '  Throw ex
        'End Try
    End Sub

    Friend ReadOnly Property TrackingID() As String
        Get
            Return _trackingID
        End Get
    End Property

    Friend Property AccountManagerProxy() As BLAccountManager
        Get
            Return _am
        End Get
        Set(ByVal value As BLAccountManager)
            _am = value
        End Set
    End Property

    'Friend Property AccountManagerProxy() As AccountClient
    '  Get
    '    Return _am
    '  End Get
    '  Set(ByVal value As AccountClient)
    '    _am = value
    '  End Set
    'End Property

    ' returns an instance of Account Manager
    Public Shared Function Instance() As AccountManager
        Try
            'If Common.RetriveFromSession(Common.AccountManagerKey) Is Nothing Then
            '  'If user instance does not exist, create one
            '  Common.AddToSession((Common.AccountManagerKey), New AccountManager())
            '  Return CType(Common.RetriveFromSession(Common.AccountManagerKey), AccountManager)
            'Else
            '  'If user instance already exists, return that
            '  Return CType(Common.RetriveFromSession(Common.AccountManagerKey), AccountManager)
            'End If
            Return New AccountManager()
        Catch ex As Exception
            Throw ex
        End Try
    End Function

#Region "Basic Account Functions"

    Public Sub SetVisitorID(ByVal value As String)
        Try
            'Common.RegisterChannels()
            AccountManagerProxy.SetVisitorID(TrackingID, value)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    '###########################################################################
    'PROJECT BIG SKY, JULY 2009     ROD COPELAND    ISSUE ID 6724
    '###########################################################################
    'CONVERT THE ICOMS ACCOUNT NUMBER AND PASS THE DATA INTO THE PROVISIONING 
    'SYSTEM AS A CSG CUSTOMER THAT HAS BEEN CONVERTED FROM ICOMS.
    '###########################################################################
    Public Function FindCSGAccountNumber(ByVal accountnumber As String) As String
        Try
            Return AccountManagerProxy.FindCSGAccountNumber(TrackingID, accountnumber)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function RegisterUser(ByVal username As String, ByVal accountnumber As String, ByVal password As String, ByVal securityquestion As String, ByVal securityanswer As String, ByVal contactemailaddress As String) As Boolean
        Try
            Return AccountManagerProxy.RegisterUser(TrackingID, username, accountnumber, password, securityquestion, securityanswer, contactemailaddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function


    Public Function SignIn(ByVal userName As String, ByVal password As String, ByVal AffiliateID As Integer) As Boolean
        Try
            Return AccountManagerProxy.SignIn(TrackingID, userName, password, AffiliateID)
        Catch ex As Exception
            Throw ex
        End Try

    End Function
    Public Function SignIn(ByVal userName As String, ByVal password As String, Optional ByVal IsContentAuthor As Boolean = False) As Boolean
        Try
            Return AccountManagerProxy.SignIn(TrackingID, userName, password, IsContentAuthor)
        Catch ex As Exception
            Throw ex
        End Try

    End Function
    '###########################################################################
    'MODIFICATION   ROD COPELAND    ISSUE ID 4376   OCT 22
    '########################################################################### 
    Public Function SignIn(ByVal userName As String, ByVal password As String, ByVal zipCode As String, Optional ByVal IsContentAuthor As Boolean = False) As Boolean
        Try
            Return AccountManagerProxy.SignIn(TrackingID, userName, password, zipCode, IsContentAuthor)
        Catch ex As Exception
            Throw ex
        End Try

    End Function


    Public Sub SignOut()
        Try
            AccountManagerProxy.SignOut(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Public Function GetCPNIVerification(ByVal accountID As String, ByVal pin As String) As Boolean
        Try
            Return AccountManagerProxy.GetCPNIVerification(TrackingID, accountID, pin)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function AuthenticateLoginSecretQA(ByVal loginID As String, ByVal secretQuestion As String, ByVal secretAnswer As String) As Boolean
        Try
            Return AccountManagerProxy.AuthenticateLoginSecretQA(TrackingID, loginID, secretQuestion, secretAnswer, Nothing, False)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function AuthenticateLoginSecretQA(ByVal loginID As String, ByVal secretQuestion As String, ByVal secretAnswer As String, ByVal zipCode As String) As Boolean
        Try
            Return AccountManagerProxy.AuthenticateLoginSecretQA(TrackingID, loginID, secretQuestion, secretAnswer, zipCode, True)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function UpdateAccountObj(ByVal lAccount As BLAccount) As Boolean
        Try
            AccountManagerProxy.UpdateAccountObj(TrackingID, lAccount)

            Return True
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function GetAccount() As IAccount
        Try
            Return AccountManagerProxy.GetAccount(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Function MyAccount_GetServiceability() As Boolean
        Try
            Return AccountManagerProxy.MyAccount_GetServiceability(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function LocalizeByPhone(ByVal phoneNumber As String, Optional ByVal affiliateID As Integer = CharterDotCom.CommonEntities.Library.Common.m_CHARTER_AFFLIATE_ID) As Boolean
        Try
            Return AccountManagerProxy.LocalizeByPhone(TrackingID, phoneNumber, affiliateID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    '9/18/2007 Brad Miller - Add promoCode to signature for G2B 4.1
    Public Function Localize(ByVal addr1 As String, ByVal addr2 As String, ByVal zipCode As String, ByVal promoCode As String, Optional ByVal affliateID As Integer = CharterDotCom.CommonEntities.Library.Common.m_CHARTER_AFFLIATE_ID) As Boolean
        Try
            Return AccountManagerProxy.Localize(TrackingID, addr1, addr2, zipCode, promoCode, affliateID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    '12/5/2007 Brad Miller - overload added for localize by phone requirement
    'Public Function Localize(ByVal phoneNumber As String, ByVal promoCode As String, Optional ByVal affliateID As Integer = CharterDotCom.CommonEntities.Library.Common.CHARTER_AFFLIATE_ID) As Boolean
    '    Try
    '        Return AccountManagerProxy.Localize(TrackingID, phoneNumber, promoCode, affliateID)
    '    Catch ex As Exception
    '        Throw ex
    '    End Try
    'End Function

    Public Function Arealize(ByVal zipCode As String) As String
        Try
            Return AccountManagerProxy.Arealize(TrackingID, zipCode)
        Catch ex As Exception
            Throw ex
            Return Nothing
        Finally
        End Try
    End Function

    Public Function SetLocaleID(ByVal localeName As String) As Boolean
        Try
            Return AccountManagerProxy.SetLocaleID(TrackingID, localeName)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function GetAddresses() As Dictionary(Of String, IAddress)
        Try
            Return AccountManagerProxy.GetAddresses(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try

    End Function

    '9/18/2007 Brad Miller - Add promoCode to signature for G2B 4.1
    Public Function SelectAddress(ByVal addressID As String, ByVal promoCode As String) As Boolean
        Try
            Return AccountManagerProxy.SelectAddress(TrackingID, addressID, promoCode)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Sub SetShippingAddress(ByVal street As String, ByVal apt As String, ByVal city As String, ByVal state As String, ByVal zip As String)
        Try
            AccountManagerProxy.SetShippingAddress(TrackingID, street, apt, city, state, zip)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Public Sub ChangeCustomerStatus(ByVal status As String)
        Try
            AccountManagerProxy.ChangeCustomerStatus(TrackingID, status)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
    '##############################
    'SHEILA SHAHPARI 09/10/2009
    'ADDED GETOSSAUTHSTRING METHOD
    '##############################
    Public Function GetOSSAuthString(ByVal clientIp As String) As String
        Return AccountManagerProxy.GetOSSAuthString(TrackingID, clientIp)
    End Function

    ''' ------------------------------------------------------------------------
    ''' <summary>
    ''' 
    '''      Method:  SetBillingAddress
    ''' 
    ''' Description:  Assigns the specified billing address to the account in
    '''               the current session.
    ''' 
    ''' </summary>
    ''' <param name="billingAddress"></param>
    ''' <remarks></remarks>
    ''' ------------------------------------------------------------------------
    Public Sub SetBillingAddress(ByVal billingAddress As IAddress)
        If billingAddress IsNot Nothing Then
            AccountManagerProxy.SetBillingAddress(Me.TrackingID, billingAddress)
        End If
    End Sub

#End Region

#Region "Manage Account"

    Public Function GetMSBillingSystemLink(ByVal successPage As String) As String
        Try
            Return AccountManagerProxy.GetMSBillingSystemLink(TrackingID, successPage)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Function GetMSBillingSystemLink(ByVal strSiblingAccountIDClicked As String, ByVal successPage As String) As String
        '#################################################################
        'MODIFICATION   ROD COPELAND    ISSUE ID 6782   AUG 13, 2009
        '#################################################################
        'SUPPORT CSG MULTI-STATEMENT LINKS NOT DIRECTING TO SPECIFIC ACCTS 
        'ON THE BILL VENDOR DOMAIN
        '#################################################################
        Try
            Return AccountManagerProxy.GetMSBillingSystemLink(TrackingID, strSiblingAccountIDClicked, successPage)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangeAccountUserID(ByVal newUserID As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeAccountUserID(TrackingID, newUserID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangeAccountPassword(ByVal newPassword As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeAccountPassword(TrackingID, newPassword)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    '##################################################################
    'JPIRKEY: This routine is ONLY to be called from the MyAccount/RetrieveUsername flow
    'It will pull the username from a different object than the standard Account object!
    '##################################################################
    Public Function ChangeMyAccountPasswordFromForgotUserName(ByVal newPassword As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeMyAccountPasswordFromForgotUserName(TrackingID, newPassword)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangeSecurityQA(ByVal newQuestion As String, ByVal newAnswer As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeSecurityQA(TrackingID, newQuestion, newAnswer)
        Catch ex As Exception
            Throw ex
        End Try
        Return True
    End Function

    '9/18/2007 Brad Miller - Add ShippingAddress to signature for G2B 4.1
    Public Sub UpdateMemberInformation(ByVal lName As String, ByVal fName As String, ByVal phone As String, ByVal email As String, _
      Optional ByVal street1 As String = Nothing, Optional ByVal street2 As String = Nothing, Optional ByVal city As String = Nothing, Optional ByVal state As String = Nothing, Optional ByVal zip As String = Nothing, Optional ByVal isShippingAddress As Boolean = False)
        Try
            AccountManagerProxy.UpdateMemberInformation(TrackingID, lName, fName, phone, email, street1, street2, city, state, zip, isShippingAddress)
        Catch ex As Exception
            Throw ex
        End Try

    End Sub

    Public Function GetSecurityQA() As List(Of String)
        Try
            Return AccountManagerProxy.GetSecurityQA(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function GetSecurityQAWithoutAccount() As List(Of String)
        Try
            Return AccountManagerProxy.GetSecurityQAWithoutAccount(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    'Public Function ForgotPassword(ByVal eMailID As String) As Boolean
    '    Try
    '        Return AccountManagerProxy.ForgotPassword(TrackingID, eMailID)
    '    Catch ex As Exception
    '        Throw ex
    '    End Try
    'End Function

    Public Function ChangeContactEMailAddress(ByVal newEmailAddress As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeContactEMailAddress(TrackingID, newEmailAddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ValidateUser(ByVal accountNumber As String) As String
        Try
            Return AccountManagerProxy.ValidateUser(TrackingID, accountNumber)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ValidateMyAccountIDandPW_NO_SIGN_IN(ByVal userName As String, ByVal password As String) As String
        Try
            Return AccountManagerProxy.ValidateMyAccountIDandPW_NO_SIGN_IN(TrackingID, userName, password)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Function GetCPNISecurityCode(ByVal accountnumber As String, ByVal customerID As String) As String

        '*************************************************
        'Sriman kanuri Security Code Update functionality 03/29/10
        '*************************************************
        'This call gets the customer info from EAI
        'Currently only Security code is extracted from the response
        Try
            Return AccountManagerProxy.GetCPNISecurityCode(TrackingID, accountnumber, customerID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Function UpdateCPNISecurityCode(ByVal accountnumber As String, ByVal customerID As String, ByVal SecurityCode As String) As Boolean

        '*************************************************
        'Sriman kanuri Security Code Update functionality 03/29/10
        '*************************************************
        'This call Updates the customer security code info using EAI webservice
        'Currently pass/fail is extracted from the response
        Try
            Return AccountManagerProxy.UpdateCPNISecurityCode(TrackingID, accountnumber, customerID, SecurityCode)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    '****************************************************************
    'JPIRKEY: 4-2010 MyAccount Update - Retrieve Username enhancement
    '****************************************************************
    Public Function GetAccountsForRetrieveUsername(ByVal AccountNumber As String, ByVal PhoneNumber As String, ByVal ZipCode As String) As BLRetUsernameStatus
        Return AccountManagerProxy.GetAccountsForRetrieveUsername(TrackingID, AccountNumber, PhoneNumber, ZipCode)
    End Function

    Public Function GetMyAccountRetUNameAccount() As IRetUNameAccount
        Return AccountManagerProxy.GetMyAccountRetUNameAccount(TrackingID)
    End Function

    Public Function GetLoginUserName() As Boolean
        Return AccountManagerProxy.GetLoginIDUserName(TrackingID)
    End Function

#End Region

#Region "Manage Email"

    Public Sub GetEmailAccounts()
        Try
            AccountManagerProxy.GetEmailAccounts(TrackingID)
        Catch ex As Exception
            Throw ex
        Finally
        End Try
    End Sub

    Public Function AddEmailAccount(ByVal eMailID As String, ByVal password As String, ByVal lProvisioningID As String) As Boolean
        Try
            Return AccountManagerProxy.AddEmailAccount(TrackingID, eMailID, password, lProvisioningID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangeAccountEmailPassword(ByVal eMailID As String, ByVal newPassword As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeAccountEmailPassword(TrackingID, eMailID, newPassword)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function DeleteEmailAccount(ByVal eMailID As String) As Boolean
        Try
            Return AccountManagerProxy.DeleteEmailAccount(TrackingID, eMailID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangePrimaryEmail(ByVal emailID As String) As Boolean
        Try
            Return AccountManagerProxy.ChangePrimaryEmail(TrackingID, emailID)

        Catch ex As Exception
            Throw ex
        End Try

    End Function
    Public Function GetMSSecurityKeys() As Boolean
        Try
            Return AccountManagerProxy.GetMSSecurityKeys(TrackingID)

        Catch ex As Exception
            Throw ex
        End Try

    End Function

    Public Function GetLastCCOMDisplayFriendlyExceptionMessage() As String
        Try
            Return AccountManagerProxy.LastCCOMDisplayFriendlyExceptionMessage(TrackingID)

        Catch ex As Exception
            Throw ex
        End Try

    End Function
    Public Sub ClearCCOMDisplayFriendlyExceptionMessage()
        Try
            AccountManagerProxy.ClearCCOMDisplayFriendlyExceptionMessage(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Sub


#End Region

#Region "Payment Management"

    Public Function PayByBankAccount(ByVal accountnumber As String, ByVal amount As Decimal, ByVal bankName As String, ByVal routing As String, ByVal BankAccountNumber As String, ByVal accountType As BankAccountType, ByVal emailAddress As String) As IConfirmation
        Try
            Return AccountManagerProxy.PayByBankAccount(TrackingID, accountnumber, amount, bankName, routing, BankAccountNumber, accountType, emailAddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function PayByCreditCard(ByVal accountnumber As String, ByVal amount As Decimal, ByVal nameOnCard As String, ByVal cardType As CreditCardType, ByVal cardNumber As String, ByVal expDate As Date, ByVal emailAddress As String) As IConfirmation
        Try
            Return AccountManagerProxy.PayByCreditCard(TrackingID, accountnumber, amount, nameOnCard, cardType, cardNumber, expDate, emailAddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function PayByBankAccount(ByVal amount As Decimal, ByVal bankName As String, ByVal routing As String, ByVal accountNumber As String, ByVal accountType As BankAccountType, ByVal emailAddress As String) As IConfirmation
        Try
            Return AccountManagerProxy.PayByBankAccount(TrackingID, amount, bankName, routing, accountNumber, accountType, emailAddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function PayByCreditCard(ByVal amount As Decimal, ByVal nameOnCard As String, ByVal cardType As CreditCardType, ByVal cardNumber As String, ByVal expDate As Date, ByVal emailAddress As String) As IConfirmation
        Try
            Return AccountManagerProxy.PayByCreditCard(TrackingID, amount, nameOnCard, cardType, cardNumber, expDate, emailAddress)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function GetBillSummary(ByVal telephoneNumber As String, ByVal ZipCode As String, ByVal email As String) As List(Of IAccount.IBill)
        Try
            Return AccountManagerProxy.GetBillingSummaryByTelephoneNumber(TrackingID, telephoneNumber, ZipCode, email)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

#End Region

#Region "WebSpace Management"

    Public Function CreateWebSpaceAccount(ByVal userID As String, ByVal password As String, ByVal provisioningID As String) As Boolean
        Try
            Return AccountManagerProxy.CreateWebSpaceAccount(TrackingID, userID, password, provisioningID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function RemoveWebSpaceAccount(ByVal provisioningID As String) As Boolean
        Try
            Return AccountManagerProxy.RemoveWebSpaceAccount(TrackingID, provisioningID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function CheckWebSpaceAccount() As Boolean
        Try
            Return AccountManagerProxy.CheckWebSpaceAccount(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
    Public Function ActivateMSSecurityKey(ByVal ProvisioningID As String) As Boolean
        Try
            Return AccountManagerProxy.ActivateMSSecurityKey(TrackingID, ProvisioningID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function ChangeWebSpaceAccountPassword(ByVal WebSpaceLogin As String, ByVal newWebSpacePassword As String, ByVal lProvisioningID As String) As Boolean
        Try
            Return AccountManagerProxy.ChangeWebSpaceAccountPassword(TrackingID, WebSpaceLogin, newWebSpacePassword, lProvisioningID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function
#End Region

#Region "Other"

    Public Function CheckTelephoneNumberPortability(ByVal areaCode As String, ByVal prefixCode As String) As String
        Try
            Return AccountManagerProxy.CheckTelephoneNumberPortability(TrackingID, areaCode, prefixCode)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

    Public Function GetHouseRefID() As String
        '#################################################################
        'ISSUE ID 6146      ROD COPELAND    JUNE 16, 2009
        'USED FOR KNOTICE 'COOKIE' TRACKING IN A GET TO KNOTICE DOMAIN.
        '#################################################################
        Try
            Return AccountManagerProxy.GetHouseRefID(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try

    End Function

    Public Function GetEntityID() As String
        '#################################################################
        'ISSUE ID 6146      ROD COPELAND    JUNE 16, 2009
        'USED FOR KNOTICE 'COOKIE' TRACKING IN A GET TO KNOTICE DOMAIN.
        '#################################################################
        Try
            Return AccountManagerProxy.GetEntityID(TrackingID)
        Catch ex As Exception
            Throw ex
        End Try
    End Function

#End Region

End Class
