Imports System.Collections.Generic
Imports CharterDotCom.CommonEntities.Library.Enumerations


<Serializable()> _
Public Class BLAccount
    Implements IAccount


    '##################################################################################
    'MODIFICATION   ROD COPELAND    Issue ID:  7334 BIG SKY FIX FOR MULTI-STATEMENTS
    '##################################################################################
    Private m_OSSProvidedAccountNumber As String
    Private m_key As Byte()
    Private m_iv As Byte()
    Private m_status As UserStatus
    Private m_regionID As Integer
    Private m_KMAID As Integer
    Private m_blMember As BLMember
    Private m_messages As List(Of IAccount.IMessage)
    Private m_address As BLAddress
    Private m_bAddress As BLAddress
    Private m_bill As List(Of IAccount.IBill)
    Private m_billingcode As Integer
    Private m_billingSystemURL As String
    Private m_FTA As String
    Private m_areaID As Integer
    Private m_areaname As String
    Private m_availableLOB As List(Of BLServiceType)
    Private m_webspaceID As String
    Private m_password As String
    Private m_shippingAddress As BLAddress
    Private m_loginID As String
    Private m_phone As String
    Private m_ssn As Byte()
    Private m_vendorType As BillingVendorType
    Private m_trackingID As Integer
    Private m_msoid As Integer
    Private m_addressID As String
    Private m_existingUser As Boolean
    Private m_returningUser As Boolean
    Private m_existingLOB As List(Of Category)
    Private m_userType As UserType
    Private m_securityQuestion As String
    Private m_SecurityQuestionList As List(Of String)
    Private m_securityAnswer As String
    'Private m_securityKeys As List(Of String)
    'Private m_billing As List(Of IAccount.IBill)
    Private m_paid As Boolean
    Private m_site As String
    Private m_isMoving As Boolean
    Private m_affliateID As Integer
    Private m_last_WSResponseCode As Integer
    Private m_MyAccountCachedPropertyNames As List(Of String)
    ' 8/2007 jwg added for 4.1
    Private m_eligibility As List(Of IAccount.IEligibility)
    ' 10/2007 jbm added for 4.1
    Private m_authQuestion As Dictionary(Of String, IAccount.IAuthQuestion)
    Private m_accountType As String
    Private m_EBPP As String
                            '###########################################################################
                            '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.
                            '###########################################################################
    Private m_ConvertedBillingAccountsSummary As List(Of BLConvertedBillingAccount)
    '###########################################################################
    'MyAccount Security Code functionality, March 2010     Sriman Kanuri
    '###########################################################################
    'Pull customer ID from getSignDataResponse and store it in customerID field 
    'This field will be passed to webservice to retrieve and update security code
    '###########################################################################
    Private m_CSGcustomerID As String
    Private m_CPNISecurityCode As String


    

    Public Sub New()
        m_address = New BLAddress(String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty)
        m_key = Guid.NewGuid.ToByteArray
        m_MyAccountCachedPropertyNames = New List(Of String)
    End Sub




    '##################################################################################
    'MODIFICATION   ROD COPELAND    Issue ID:  7334 BIG SKY FIX FOR MULTI-STATEMENTS
    '##################################################################################
    Public Property OSSProvidedAccountNumber() As String Implements IAccount.OSSProvidedAccountNumber
        Get
            Return m_OSSProvidedAccountNumber
        End Get
        Set(ByVal value As String)
            m_OSSProvidedAccountNumber = value
        End Set
    End Property
    Public Property MyAccountCachedPropertyNames() As List(Of String) Implements IAccount.MyAccountCachedPropertyNames
        Get
            Return m_MyAccountCachedPropertyNames
        End Get
        Set(ByVal value As List(Of String))
            m_MyAccountCachedPropertyNames = value
        End Set
    End Property
    Public Property last_WS_ResponseCode() As Integer Implements IAccount.last_WS_ResponseCode
        Get
            Return m_last_WSResponseCode
        End Get
        Set(ByVal value As Integer)
            m_last_WSResponseCode = value
        End Set
    End Property
    Public Property Key() As Byte()
        Get
            Return m_key
        End Get
        Set(ByVal value As Byte())
            m_key = value
        End Set
    End Property
    Public Property InitializationVector() As Byte()
        Get
            Return m_iv
        End Get
        Set(ByVal value As Byte())
            m_iv = value
        End Set
    End Property
    Public Property LoginID() As String Implements IAccount.LoginID
        Get
            Return m_loginID
        End Get
        Set(ByVal value As String)
            m_loginID = value
        End Set
    End Property
    Public Property WebSpaceID() As String Implements IAccount.WebSpcaeID
        Get
            Return m_webspaceID
        End Get
        Set(ByVal value As String)
            m_webspaceID = value
        End Set
    End Property
    Public Property Password() As String
        Get
            Return m_password
        End Get
        Set(ByVal value As String)
            m_password = value
        End Set
    End Property
    Public Property AccountType() As String Implements IAccount.AccountType
        Get
            Return m_accountType
        End Get
        Set(ByVal value As String)
            m_accountType = value
        End Set
    End Property
    Public Property Address() As IAddress Implements IAccount.Address
        Get
            Return m_address
        End Get
        Set(ByVal value As IAddress)
            m_address = CType(value, BLAddress)
        End Set
    End Property
    Public Property BillingAddress() As IAddress Implements IAccount.BillingAddress
        Get
            Return m_bAddress
        End Get
        Set(ByVal value As IAddress)
            m_bAddress = CType(value, BLAddress)
        End Set
    End Property
    Public Property ShippingAddress() As IAddress Implements IAccount.ShippingAddress
        Get
            Return m_shippingAddress
        End Get
        Set(ByVal value As IAddress)
            m_shippingAddress = CType(value, BLAddress)
        End Set
    End Property
    Public Property HomePhone() As String Implements IAccount.Phone
        Get
            Return m_phone
        End Get
        Set(ByVal value As String)
            m_phone = value
        End Set
    End Property
    Public Property SSN() As String Implements IAccount.SSN
        Get
            Return TripleDESEncryption.Decrypt(m_ssn, Key, InitializationVector)
        End Get
        Set(ByVal value As String)
            m_ssn = TripleDESEncryption.Encrypt(value, Key, InitializationVector)
        End Set
    End Property
    Public Property BillingVendorType() As BillingVendorType Implements IAccount.BillingVendorType
        Get
            Return m_vendorType
        End Get
        Set(ByVal value As BillingVendorType)
            m_vendorType = value
        End Set
    End Property
    Public Property RegionID() As Integer
        Get
            Return m_regionID
        End Get
        Set(ByVal value As Integer)
            m_regionID = value
        End Set
    End Property
    Public Property KMAID() As Integer
        Get
            Return m_KMAID
        End Get
        Set(ByVal value As Integer)
            m_KMAID = value
        End Set
    End Property
    Public Property BillingCode() As Integer
        Get
            Return m_billingcode
        End Get
        Set(ByVal value As Integer)
            m_billingcode = value
        End Set
    End Property
    Public Property BillingSystemURL() As String Implements IAccount.BillingSystemURL
        Get
            Return m_billingSystemURL
        End Get
        Set(ByVal value As String)
            m_billingSystemURL = value
        End Set
    End Property
    Public Property FTA() As String
        Get
            Return m_FTA
        End Get
        Set(ByVal value As String)
            m_FTA = value
        End Set
    End Property
    Private ReadOnly Property AffliatesID() As Integer Implements IAccount.AffliateID
        Get
            Return m_affliateID
        End Get
    End Property
    Public Property AffliateID() As Integer
        Get
            Return m_affliateID
        End Get
        Set(ByVal value As Integer)
            m_affliateID = value
        End Set
    End Property
    Public Property TrackingID() As Integer Implements IAccount.TrackingID
        Get
            Return m_trackingID
        End Get
        Set(ByVal value As Integer)
            m_trackingID = value
        End Set
    End Property
    Public Property MSOID() As Integer Implements IAccount.MSOID
        Get
            Return m_msoid
        End Get
        Set(ByVal value As Integer)
            m_msoid = value
        End Set
    End Property
    Public Property AddressID() As String
        Get
            Return m_addressID
        End Get
        Set(ByVal value As String)
            m_addressID = value
        End Set
    End Property
    Public Property User() As IAccount.IMember Implements IAccount.Person
        Get
            Return m_blMember
        End Get
        Set(ByVal value As IAccount.IMember)
            m_blMember = CType(value, BLAccount.BLMember)
        End Set
    End Property
    Public Property UserStatus() As UserStatus Implements IAccount.UserStatus
        Get
            Return m_status
        End Get
        Set(ByVal value As UserStatus)
            m_status = value
        End Set
    End Property
    Public Property IsReturningUser() As Boolean
        Get
            Return m_returningUser
        End Get
        Set(ByVal value As Boolean)
            m_returningUser = value
        End Set
    End Property
    Public Property IsExistingUser() As Boolean Implements IAccount.IsExistingUser
        Get
            Return m_existingUser
        End Get
        Set(ByVal value As Boolean)
            m_existingUser = value
        End Set
    End Property
    Public Property ExistingLOB() As List(Of Category) Implements IAccount.ExistingService
        Get
            Return m_existingLOB
        End Get
        Set(ByVal value As List(Of Category))
            m_existingLOB = value
        End Set
    End Property
    Public Property AvailableLOB() As List(Of BLServiceType) Implements IAccount.AvailableServices
        Get
            Return m_availableLOB
        End Get
        Set(ByVal value As List(Of BLServiceType))
            m_availableLOB = value
        End Set
    End Property
    'Public ReadOnly Property AvailableServices() As List(Of BLServiceType) Implements IAccount.AvailableServices
    '  Get
    '    Return m_availableLOB
    '  End Get
    'End Property
    Public Property AreaID() As Integer Implements IAccount.AreaID
        Get
            Return m_areaID
        End Get
        Set(ByVal value As Integer)
            m_areaID = value
        End Set
    End Property
    Public Property AreaName() As String Implements IAccount.AreaName
        Get
            Return m_areaname
        End Get
        Set(ByVal value As String)
            m_areaname = value
        End Set
    End Property
    Public Property UserType() As UserType Implements IAccount.UserType
        Get
            Return m_userType
        End Get
        Set(ByVal value As UserType)
            m_userType = value
        End Set
    End Property
    Public Property SecurityQuestion() As String Implements IAccount.SecurityQuestion
        Get
            Return m_securityQuestion
        End Get
        Set(ByVal value As String)
            m_securityQuestion = value
        End Set
    End Property
    Public Property SecurityQuestionList() As List(Of String) Implements IAccount.SecurityQuestionList
        Get
            Return m_SecurityQuestionList
        End Get
        Set(ByVal value As List(Of String))
            m_SecurityQuestionList = value
        End Set
    End Property
    Public Property SecurityAnswer() As String Implements IAccount.SecurityAnswer
        Get
            Return m_securityAnswer
        End Get
        Set(ByVal value As String)
            m_securityAnswer = value
        End Set
    End Property
    'Public Property SecurityKeys() As List(Of String) Implements IAccount.SecurityKeys
    '    Get
    '        Return m_securityKeys
    '    End Get
    '    Set(ByVal value As List(Of String))
    '        m_securityKeys = value
    '    End Set
    'End Property


    Public ReadOnly Property Messages() As List(Of IAccount.IMessage) Implements IAccount.Messages
        Get
            Return m_messages
        End Get
    End Property
    Private ReadOnly Property Billing() As List(Of IAccount.IBill) Implements IAccount.Bill
        Get
            Return m_bill
        End Get
    End Property
    Public Property Bill() As List(Of IAccount.IBill)
        Get
            Return m_bill
        End Get
        Set(ByVal value As List(Of IAccount.IBill))
            m_bill = value
        End Set
    End Property
    Protected ReadOnly Property PaidCurrentBill() As Boolean Implements IAccount.PaidCurrentBill
        Get
            Return m_paid
        End Get
    End Property
    Public Property Paid() As Boolean
        Get
            Return m_paid
        End Get
        Set(ByVal value As Boolean)
            m_paid = value
        End Set
    End Property
    Public Property Site() As String
        Get
            Return m_site
        End Get
        Set(ByVal value As String)
            m_site = value
        End Set
    End Property
    Private ReadOnly Property IsMovingToAddress() As Boolean Implements IAccount.IsMovingToAddress
        Get
            Return m_isMoving
        End Get
    End Property
    Public Property IsMoving() As Boolean
        Get
            Return m_isMoving
        End Get
        Set(ByVal value As Boolean)
            m_isMoving = value
        End Set
    End Property
    ''Public Sub SetAddress(ByVal AddressLine1 As String, ByVal AddressLine2 As String, ByVal City As String, ByVal State As String, ByVal Zip As String, Optional ByVal AddressType As Boolean = False)
    ''  Try
    ''    If AddressType Then
    ''      m_Address1 = AddressLine1
    ''      m_Address2 = AddressLine2
    ''      m_City = City
    ''      m_State = State
    ''      m_Zip = Zip
    ''    Else
    ''      m_BillingAddress1 = AddressLine1
    ''      m_BillingAddress2 = AddressLine2
    ''      m_BillingCity = City
    ''      m_BillingState = State
    ''      m_BillingZip = Zip
    ''    End If
    ''  Catch ex As Exception
    ''    Throw ex
    ''  End Try
    ''End Sub

    ''Public Sub SetAccountdetails(ByVal acctNum As String, ByVal username As String, ByVal password As String)
    ''  Try

    ''  Catch ex As Exception
    ''    Throw ex
    ''  End Try
    ''End Sub

    <Serializable()> _
    Public Class BLMember
        Implements IAccount.IMember

        'Public gwyMember As Charter.Website.BL.Services.Entities.Account.Member
        Private m_salutation As String
        Private m_firstName As String
        Private m_middlename As String
        Private m_lastName As String
        Private m_memberType As String
        Private m_ContactEmailAddress As String

        '##############################################################################################
        'THE m_emailAddress PROPERTY IS BEING DECOMMISSIONED BY THE USE OF THE m_msPackageInfo PROPERTY.  
        'THIS HAPPEN BECAUSE THE MEMBER CAN HAVE MULTIPLE SERVICE PLANS (EACH PLAN CAN 
        'HAVE ITS OWN EMAIL IDS AND PROVISIONING IDS) TO ONE MEMBER.
        '##############################################################################################
        Private m_emailAddress As List(Of IAccount.IMember.IEmail)
        Private m_msPackageInfo As List(Of IAccount.IMember.IMemberServicePackageInfo)

        Public Sub New()

        End Sub
        Public Sub New(ByVal salutation As String, ByVal fName As String, ByVal mName As String, ByVal lName As String, ByVal type As String, ByVal email As List(Of IAccount.IMember.IEmail))
            m_salutation = salutation
            m_firstName = fName
            m_lastName = lName
            m_memberType = type
            m_emailAddress = email
        End Sub
        Public Sub New(ByVal salutation As String, ByVal fName As String, ByVal mName As String, ByVal lName As String, ByVal type As String, ByVal email As List(Of IAccount.IMember.IEmail), ByVal msPackageInfo As List(Of IAccount.IMember.IMemberServicePackageInfo))
            m_salutation = salutation
            m_firstName = fName
            m_lastName = lName
            m_memberType = type
            m_emailAddress = email
            m_msPackageInfo = msPackageInfo
        End Sub
        Public Property Salutation() As String Implements IAccount.IMember.Salutation
            Get
                Return m_salutation
            End Get

            Set(ByVal value As String)
                m_salutation = value
            End Set
        End Property
        Public Property FirstName() As String Implements IAccount.IMember.FirstName
            Get
                Return m_firstName
            End Get

            Set(ByVal value As String)
                m_firstName = value
            End Set
        End Property
        Public Property MiddleName() As String Implements IAccount.IMember.MiddleName
            Get
                Return m_middlename
            End Get

            Set(ByVal value As String)
                m_middlename = value
            End Set
        End Property
        Public Property LastName() As String Implements IAccount.IMember.LastName
            Get
                Return m_lastName
            End Get

            Set(ByVal value As String)
                m_lastName = value
            End Set
        End Property
        Public Property Relation() As String Implements IAccount.IMember.Relation
            Get
                Return m_memberType
            End Get

            Set(ByVal value As String)
                m_memberType = value
            End Set
        End Property
        Public Property EmailAddress() As List(Of IAccount.IMember.IEmail) Implements IAccount.IMember.Email
            Get
                Return m_emailAddress
            End Get

            Set(ByVal value As List(Of IAccount.IMember.IEmail))
                m_emailAddress = value
            End Set

        End Property

        <Serializable()> _
        Public Class BLEMail
            Implements IAccount.IMember.IEmail

            Private m_mailAddress As String
            Private m_primary As Boolean

            Public Sub New()

            End Sub
            Public Sub New(ByVal mailID As String, ByVal parent As Boolean)
                m_mailAddress = mailID
                m_primary = parent
            End Sub
            Public Property MailAddress() As String Implements IAccount.IMember.IEmail.MailID
                Get
                    Return m_mailAddress
                End Get

                Set(ByVal value As String)
                    m_mailAddress = value
                End Set
            End Property
            Public Property IsPrimary() As Boolean Implements IAccount.IMember.IEmail.IsPrimary
                Get
                    Return m_primary
                End Get

                Set(ByVal value As Boolean)
                    m_primary = value
                End Set
            End Property
        End Class

        <Serializable()> _
        Public Class BLMSPackageInfo
            Implements IAccount.IMember.IMemberServicePackageInfo

            Private m_description As String
            Private m_emails As List(Of IAccount.IMember.IMemberServiceEmailInfo)
            Private m_provisioningId As String
            Private m_status As String
            Private m_type As String
            Private m_webspaceField As String
            Private m_securityKeys As List(Of String)
            Private m_MaxSecurityKeysAllowed As Integer
            Private m_MaxEmailsAllowed As Integer


            Public Sub New()

            End Sub
            Public Sub New(ByVal description As String, ByVal emails As List(Of IAccount.IMember.IMemberServiceEmailInfo), ByVal provisioningId As String, ByVal status As String, ByVal type As String, ByVal securityKeys As List(Of String))
                m_description = description
                m_emails = emails
                m_provisioningId = provisioningId
                m_status = status
                m_type = type
                m_securityKeys = securityKeys
            End Sub

            Public Property descriptionField() As String Implements IAccount.IMember.IMemberServicePackageInfo.descriptionField
                Get
                    Return m_description
                End Get
                Set(ByVal value As String)
                    m_description = value
                End Set
            End Property
            Public Property emailsField() As List(Of IAccount.IMember.IMemberServiceEmailInfo) Implements IAccount.IMember.IMemberServicePackageInfo.emailsField
                Get
                    Return m_emails
                End Get
                Set(ByVal value As List(Of IAccount.IMember.IMemberServiceEmailInfo))
                    m_emails = value
                End Set
            End Property
            Public Property provisioningIdField() As String Implements IAccount.IMember.IMemberServicePackageInfo.provisioningIdField
                Get
                    Return m_provisioningId
                End Get
                Set(ByVal value As String)
                    m_provisioningId = value
                End Set
            End Property
            Public Property statusField() As String Implements IAccount.IMember.IMemberServicePackageInfo.statusField
                Get
                    Return m_status
                End Get
                Set(ByVal value As String)
                    m_status = value
                End Set
            End Property
            Public Property typeField() As String Implements IAccount.IMember.IMemberServicePackageInfo.typeField
                Get
                    Return m_type
                End Get
                Set(ByVal value As String)
                    m_type = value
                End Set
            End Property

            Public Property webspaceField() As String Implements IAccount.IMember.IMemberServicePackageInfo.webspaceField
                Get
                    Return m_webspaceField
                End Get
                Set(ByVal value As String)
                    m_webspaceField = value
                End Set
            End Property
            Public Property SecurityKeys() As List(Of String) Implements IAccount.IMember.IMemberServicePackageInfo.SecurityKeys
                Get
                    Return m_securityKeys
                End Get
                Set(ByVal value As System.Collections.Generic.List(Of String))
                    m_securityKeys = value
                End Set
            End Property
            Public Property MaxSecurityKeysAllowed() As Integer Implements IAccount.IMember.IMemberServicePackageInfo.MaxSecurityKeysAllowed
                Get
                    Return m_MaxSecurityKeysAllowed
                End Get
                Set(ByVal value As Integer)
                    m_MaxSecurityKeysAllowed = value
                End Set
            End Property
            Public Property MaxEmailsAllowed() As Integer Implements IAccount.IMember.IMemberServicePackageInfo.MaxEmailsAllowed
                Get
                    Return m_MaxEmailsAllowed
                End Get
                Set(ByVal value As Integer)
                    m_MaxEmailsAllowed = value
                End Set
            End Property
        End Class


        <Serializable()> _
        Public Class BLMSEmailInfo
            Implements IAccount.IMember.IMemberServiceEmailInfo

            Private m_hOHStatus As String
            Private m_domainField As String
            Private m_provisioningIdField As String
            Private m_statusField As String
            Private m_userNameField As String
            Private m_IsParentEAddressField As Boolean
            Private m_FullEmailAddressField As String

            Public Sub New()

            End Sub
            Public Sub New(ByVal hOHStatus As String, ByVal domain As String, ByVal provisioningId As String, ByVal status As String, ByVal userName As String)
                m_hOHStatus = hOHStatus
                m_domainField = domain
                m_provisioningIdField = provisioningId
                m_statusField = status
                m_userNameField = userName
            End Sub
            Public Sub New(ByVal hOHStatus As String, ByVal domain As String, ByVal provisioningId As String, ByVal status As String, ByVal userName As String, ByVal IsParentEAddress As Boolean)
                m_hOHStatus = hOHStatus
                m_domainField = domain
                m_provisioningIdField = provisioningId
                m_statusField = status
                m_userNameField = userName
                m_IsParentEAddressField = IsParentEAddress
            End Sub

            Public Property domainField() As String Implements IAccount.IMember.IMemberServiceEmailInfo.domainField
                Get
                    Return m_domainField
                End Get
                Set(ByVal value As String)
                    m_domainField = value
                End Set
            End Property
            Public Property hOHStatusField() As String Implements IAccount.IMember.IMemberServiceEmailInfo.hOHStatusField
                Get
                    Return m_hOHStatus
                End Get
                Set(ByVal value As String)
                    m_hOHStatus = value
                End Set
            End Property
            Public Property provisioningIdField() As String Implements IAccount.IMember.IMemberServiceEmailInfo.provisioningIdField
                Get
                    Return m_provisioningIdField
                End Get
                Set(ByVal value As String)
                    m_provisioningIdField = value
                End Set
            End Property
            Public Property statusField() As String Implements IAccount.IMember.IMemberServiceEmailInfo.statusField
                Get
                    Return m_statusField
                End Get
                Set(ByVal value As String)
                    m_statusField = value
                End Set
            End Property
            Public Property userNameField() As String Implements IAccount.IMember.IMemberServiceEmailInfo.userNameField
                Get
                    Return m_userNameField
                End Get
                Set(ByVal value As String)
                    m_userNameField = value
                End Set
            End Property
            Public Property IsParentEAddress() As Boolean Implements IAccount.IMember.IMemberServiceEmailInfo.IsParentEAddressField
                Get
                    Return m_IsParentEAddressField

                End Get
                Set(ByVal value As Boolean)
                    m_IsParentEAddressField = value
                End Set
            End Property
            Public ReadOnly Property FullEmailAddress() As String Implements IAccount.IMember.IMemberServiceEmailInfo.FullEmailAddressField
                Get
                    If Not (m_userNameField Is Nothing) Then
                        If Not (m_domainField Is Nothing) Then
                            Return m_userNameField & "@" & m_domainField
                        Else
                            Return m_userNameField & "@unknowndomain.net"
                        End If
                    Else
                        Return "unknownuser" & "@unknowndomain.net"
                    End If
                End Get
            End Property
        End Class

        Public Property MSPackageInfo() As List(Of IAccount.IMember.IMemberServicePackageInfo) Implements IAccount.IMember.MSPackageInfo
            Get
                Return m_msPackageInfo
            End Get
            Set(ByVal value As List(Of IAccount.IMember.IMemberServicePackageInfo))
                m_msPackageInfo = value
            End Set
        End Property

        Public Property ContactEmailAddress() As String Implements IAccount.IMember.ContactEmailAddress
            Get
                Return m_ContactEmailAddress
            End Get
            Set(ByVal value As String)
                m_ContactEmailAddress = value
            End Set
        End Property
    End Class

    <Serializable()> _
    Public Class BLMessage
        Implements IAccount.IMessage

        Private m_subject As String
        Private m_sentdate As Date
        Private m_body As String

        Public Sub New()

        End Sub

        Public Sub New(ByVal subject As String, ByVal sentdate As Date, ByVal body As String)
            m_subject = subject
            m_sentdate = sentdate
            m_body = body
        End Sub

        Public ReadOnly Property Subject() As String Implements IAccount.IMessage.Subject
            Get
                Return m_subject
            End Get
        End Property

        Public ReadOnly Property SentDate() As Date Implements IAccount.IMessage.SentDate
            Get
                Return m_sentdate
            End Get
        End Property

        Public ReadOnly Property Body() As String Implements IAccount.IMessage.Body
            Get
                Return m_body
            End Get
        End Property

    End Class

    <Serializable()> _
    Public Class BillSummary
        Implements IAccount.IBill

        Private m_accountNumber As String
        Private m_description As String
        Private m_dueDate As Date
        Private m_dueUponReceipt As Boolean = False
        Private m_amount As Decimal
        Private m_paid As Boolean
        Private m_DisplayBillSummary As Boolean

        '##############
        'CURRENT ICOMS
        '##############
        Private m_ICOMSlastStatementDate As Date
        Private m_ICOMSstatementDueDate As Date
        Private m_ICOMStotalStatementAmount As Decimal
        '##############

        '##############
        'CURRENT CSG
        '##############
        Private m_CSGCurrentStatementDate As Date
        Private m_CSGPaymentDueDate As Date
        Private m_DueDateDescription As String
        Private m_CSGStatementBalance As Decimal
        Private m_CSGCalculatedBalance As Decimal
        Private m_CSGCalculatedBalanceStatus As String
        '##############

        Public Sub New(ByVal accountNumber As String)
            m_accountNumber = accountNumber
        End Sub

        Public ReadOnly Property AccountNumber_Bill() As String Implements IAccount.IBill.AccountNumber
            Get
                Return m_accountNumber
            End Get
        End Property

        Public Property AccountNumber() As String
            Get
                Return m_accountNumber
            End Get
            Set(ByVal value As String)
                m_accountNumber = value
            End Set
        End Property

        Public ReadOnly Property Description() As String Implements IAccount.IBill.Description
            Get
                Return m_description
            End Get
        End Property

        Public ReadOnly Property DueDate() As Date Implements IAccount.IBill.DueDate
            Get
                Return m_dueDate
            End Get
        End Property

        Public ReadOnly Property DueUponReceipt() As Boolean Implements IAccount.IBill.DueUponReceipt
            Get
                Return m_dueUponReceipt
            End Get
        End Property

        Public ReadOnly Property Amount() As Decimal Implements IAccount.IBill.Amount
            Get
                Return m_amount
            End Get
        End Property

        Public ReadOnly Property Paid() As Boolean Implements IAccount.IBill.Paid
            Get
                Return m_paid
            End Get
        End Property

        Public WriteOnly Property BillDescription() As String
            Set(ByVal value As String)
                m_description = value
            End Set
        End Property

        Public WriteOnly Property BillDuedDate() As Date
            Set(ByVal value As Date)
                m_dueDate = value
            End Set
        End Property

        Public WriteOnly Property BillDueUponReceipt() As Boolean
            Set(ByVal value As Boolean)
                m_dueUponReceipt = value
            End Set
        End Property

        Public WriteOnly Property BillAmount() As Decimal
            Set(ByVal value As Decimal)
                m_amount = value
            End Set
        End Property

        Public WriteOnly Property BillPaid() As Boolean
            Set(ByVal value As Boolean)
                m_paid = value
            End Set
        End Property

        Public Property LastStatementDate_ICOMS_ONLY() As Date Implements IAccount.IBill.LastStatementDate_ICOMS_ONLY
            Get
                Return m_ICOMSlastStatementDate
            End Get
            Set(ByVal value As Date)
                m_ICOMSlastStatementDate = value
            End Set
        End Property
        Public Property StatementDueDate_ICOMS_ONLY() As Date Implements IAccount.IBill.StatementDueDate_ICOMS_ONLY
            Get
                Return m_ICOMSstatementDueDate
            End Get
            Set(ByVal value As Date)
                m_ICOMSstatementDueDate = value
            End Set
        End Property
        Public Property TotalStatementAmount_ICOMS_ONLY() As Decimal Implements IAccount.IBill.TotalStatementAmount_ICOMS_ONLY
            Get
                Return m_ICOMStotalStatementAmount
            End Get
            Set(ByVal value As Decimal)
                m_ICOMStotalStatementAmount = value
            End Set
        End Property

        Public Property CurrentStatementDate_CSG_ONLY() As Date Implements IAccount.IBill.CurrentStatementDate_CSG_ONLY
            Get
                Return m_CSGCurrentStatementDate
            End Get
            Set(ByVal value As Date)
                m_CSGCurrentStatementDate = value
            End Set
        End Property
        Public Property PaymentDueDate_CSG_ONLY() As Date Implements IAccount.IBill.PaymentDueDate_CSG_ONLY
            Get
                Return m_CSGPaymentDueDate
            End Get
            Set(ByVal value As Date)
                m_CSGPaymentDueDate = value
            End Set
        End Property

        Public Property DueDateDescription() As String Implements IAccount.IBill.DueDateDescription
            Get
                Return Me.m_DueDateDescription
            End Get
            Set(ByVal value As String)
                Me.m_DueDateDescription = value
            End Set
        End Property


        Public Property StatementBalance_CSG_ONLY() As Decimal Implements IAccount.IBill.StatementBalance_CSG_ONLY
            Get
                Return m_CSGStatementBalance
            End Get
            Set(ByVal value As Decimal)
                m_CSGStatementBalance = value
            End Set
        End Property
        Public Property CalculatedBalance_CSG_ONLY() As Decimal Implements IAccount.IBill.CalculatedBalance_CSG_ONLY
            Get
                Return m_CSGCalculatedBalance
            End Get
            Set(ByVal value As Decimal)
                m_CSGCalculatedBalance = value
            End Set
        End Property
        Public Property CalculatedBalanceStatus_CSG_ONLY() As String Implements IAccount.IBill.CalculatedBalanceStatus_CSG_ONLY
            Get
                Return m_CSGCalculatedBalanceStatus
            End Get
            Set(ByVal value As String)
                m_CSGCalculatedBalanceStatus = value
            End Set
        End Property

        Public Property DisplayBillSummary() As Boolean Implements IAccount.IBill.DisplayBillSummary
            Get
                Return m_DisplayBillSummary
            End Get
            Set(ByVal value As Boolean)
                m_DisplayBillSummary = value
            End Set
        End Property
    End Class





    Public Property Eligibility() As IAccount.IEligibility Implements IAccount.Eligibility
        Get
            Return m_eligibility
        End Get
        Set(ByVal value As IAccount.IEligibility)
            m_eligibility = value
        End Set
    End Property

    Public Property G2B_AuthQuestion() As Dictionary(Of String, IAccount.IAuthQuestion) Implements IAccount.AuthQuestion
        Get
            Return m_authQuestion
        End Get
        Set(ByVal value As Dictionary(Of String, IAccount.IAuthQuestion))
            m_authQuestion = value
        End Set
    End Property

    '##########################################################################
    'MODIFICATION   ROD COPELAND    DEC 10, 2008    ISSUE ID 4617
    '##########################################################################
    'PULL THE EBPP VALUE FROM EAI TO DETERMINE IF THE USER HAS REGISTERED FOR 
    'ONLINE BILL PAY AT THE BILL VENDOR SITE. RIGHT NOW, THIS INDICATION IS 
    'ONLY FOR CSG USERS.
    '##########################################################################
    Public Property EBPP() As String Implements IAccount.EBPP
        Get
            Return m_EBPP
        End Get
        Set(ByVal value As String)
            m_EBPP = value
        End Set
    End Property

    '###########################################################################
    '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 Property ConvertedBillingAccountsSummary() As List(Of BLConvertedBillingAccount) Implements IAccount.ConvertedBillingAccountsSummary
        Get
            Return m_ConvertedBillingAccountsSummary
        End Get
        Set(ByVal value As List(Of BLConvertedBillingAccount))
            m_ConvertedBillingAccountsSummary = value
        End Set
    End Property
    '    ###########################################################################
    'MyAccount Security Code functionality, March 2010     Sriman Kanuri
    '###########################################################################
    'Pull customer ID from getSignDataResponse and store it in this customerID field 
    'This field will be passed to webservice to retrieve and update security code
    '###########################################################################

    Public Property CSGcustomerID() As String Implements IAccount.CSGcustomerID
        Get
            Return m_CSGcustomerID
        End Get
        Set(ByVal value As String)
            m_CSGcustomerID = value
        End Set
    End Property
    Public Property CPNISecuritycode() As String Implements IAccount.CPNISecurityCode
        Get
            Return m_CPNISecurityCode
        End Get
        Set(ByVal value As String)
            m_CPNISecurityCode = value
        End Set
    End Property

End Class

'###########################################################################
'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.
'###########################################################################
<Serializable()> _
Public Class BLConvertedBillingAccount
    Implements IAccount.IConvertedBillingAccount

    Private m_accountID As String
    Private m_linesOfBusiness As String
    Private m_preconversionParentAccountNumber As String

    Public Sub New()

    End Sub

    Public Property AccountID() As String Implements IAccount.IConvertedBillingAccount.AccountID
        Get
            Return Me.m_accountID
        End Get
        Set(ByVal value As String)
            Me.m_accountID = value
        End Set
    End Property
    Public Property LinesOfBusiness() As String Implements IAccount.IConvertedBillingAccount.LinesOfBusiness
        Get
            Return Me.m_linesOfBusiness
        End Get
        Set(ByVal value As String)
            Me.m_linesOfBusiness = value
        End Set
    End Property
    Public Property PreconversionParentAccountNumber() As String Implements IAccount.IConvertedBillingAccount.PreconversionParentAccountNumber
        Get
            Return Me.m_preconversionParentAccountNumber
        End Get
        Set(ByVal value As String)
            Me.m_preconversionParentAccountNumber = value
        End Set
    End Property
End Class


<Serializable()> _
Public Class BLAddress
    Implements IAddress

    Private m_address1 As String
    Private m_address2 As String
    Private m_city As String
    Private m_state As String
    Private m_zip As String
    Private m_zip4 As String

    Public Sub New()

    End Sub

    Public Sub New(ByVal addr1 As String, ByVal addr2 As String, ByVal city As String, ByVal state As String, ByVal zip As String, ByVal zip4 As String)
        m_address1 = addr1
        m_address2 = addr2
        m_city = city
        m_state = state
        m_zip = zip
        m_zip4 = zip4
    End Sub

    Public Property Street1() As String Implements IAddress.Street1
        Get
            Return m_address1
        End Get
        Set(ByVal value As String)
            m_address1 = value
        End Set
    End Property

    Public Property Street2() As String Implements IAddress.Street2
        Get
            Return m_address2
        End Get
        Set(ByVal value As String)
            m_address2 = value
        End Set
    End Property


    Public Property City() As String Implements IAddress.City
        Get
            Return m_city
        End Get
        Set(ByVal value As String)
            m_city = value
        End Set
    End Property


    Public Property State() As String Implements IAddress.State
        Get
            Return m_state
        End Get
        Set(ByVal value As String)
            m_state = value
        End Set
    End Property


    Public Property Zip() As String Implements IAddress.Zip
        Get
            Return m_zip
        End Get
        Set(ByVal value As String)
            m_zip = value
        End Set
    End Property

    Public Property Zip4() As String
        Get
            Return m_zip4
        End Get
        Set(ByVal value As String)
            m_zip4 = value
        End Set
    End Property

End Class

<Serializable()> _
Public Class BLG2BEligibility
    Implements IAccount.IEligibility

    Private m_accountNumber As String
    Private m_billingCycle As Integer
    Private m_billingCycleFieldSpecified As Boolean
    Private m_depositAmountField As Decimal
    Private m_depositAmountFieldSpecified As Boolean
    Private m_creditClassField As String

    Public Sub New()

    End Sub

    Public Sub New(ByVal accountNumber As String, ByVal billingCycle As String, ByVal billingCycleFieldSpecified As Boolean, _
        ByVal depositAmountField As Boolean, ByVal depositAmountFieldSpecified As Integer, ByVal creditClassField As String)
        m_accountNumber = accountNumber
        m_billingCycle = billingCycle
        m_billingCycleFieldSpecified = billingCycleFieldSpecified
        m_depositAmountField = DepositAmountField
        m_depositAmountFieldSpecified = DepositAmountFieldSpecified
        m_creditClassField = CreditClassField
    End Sub

    Public Property AccountNumber() As String Implements IAccount.IEligibility.AccountNumber
        Get
            Return m_accountNumber
        End Get
        Set(ByVal value As String)
            m_accountNumber = value
        End Set
    End Property

    Public Property BillingCycle() As Integer Implements IAccount.IEligibility.BillingCycle
        Get
            Return m_billingCycle
        End Get
        Set(ByVal value As Integer)
            m_billingCycle = value
        End Set
    End Property

    Public Property BillingCycleFieldSpecified() As Boolean Implements IAccount.IEligibility.BillingCycleFieldSpecified
        Get
            Return m_billingCycleFieldSpecified
        End Get
        Set(ByVal value As Boolean)
            m_billingCycleFieldSpecified = value
        End Set
    End Property

    Public Property CreditClassField() As String Implements IAccount.IEligibility.CreditClassField
        Get
            Return m_creditClassField
        End Get
        Set(ByVal value As String)
            m_creditClassField = value
        End Set
    End Property

    Public Property DepositAmountField() As Decimal Implements IAccount.IEligibility.DepositAmountField
        Get
            Return m_depositAmountField
        End Get
        Set(ByVal value As Decimal)
            m_depositAmountField = value
        End Set
    End Property

    Public Property DepositAmountFieldSpecified() As Boolean Implements IAccount.IEligibility.DepositAmountFieldSpecified
        Get
            Return m_depositAmountFieldSpecified
        End Get
        Set(ByVal value As Boolean)
            m_depositAmountFieldSpecified = value
        End Set
    End Property
End Class

<Serializable()> _
Public Class BLG2BAuthQuestion
    Implements IAccount.IAuthQuestion

    Private m_questionID As String
    Private m_questionName As String
    Private m_isMasked As Boolean
    Private m_isBoolean As Boolean
    Private m_maxLen As Integer
    Private m_questionDescription As String
    Private m_userResponded As Boolean
    Private m_answerFromUser As String
    Private m_eAuthQuestionType As eAuthQuestionType
    Private m_customerType As CustomerType

    Public Sub New()

    End Sub

    Public Sub New(ByVal questionID As String, ByVal questionName As String, ByVal isMasked As Boolean, ByVal isBoolean As Boolean, _
        ByVal maxLen As Integer, ByVal questionDescription As String, ByVal eAuthQuestionType As eAuthQuestionType, ByVal customerType As CustomerType)
        m_questionID = questionID
        m_questionName = questionName
        m_isMasked = isMasked
        m_isBoolean = isBoolean
        m_maxLen = MaxLen
        m_questionDescription = QuestionDescription
        m_eAuthQuestionType = eAuthQuestionType
        m_customerType = CustomerType
    End Sub

    Public Property IsBoolean() As Boolean Implements IAccount.IAuthQuestion.IsBoolean
        Get
            Return m_isBoolean
        End Get
        Set(ByVal value As Boolean)
            m_isBoolean = value
        End Set
    End Property
    Public Property IsMasked() As Boolean Implements IAccount.IAuthQuestion.IsMasked
        Get
            Return m_isMasked
        End Get
        Set(ByVal value As Boolean)
            m_isMasked = value
        End Set
    End Property
    Public Property MaxLen() As Integer Implements IAccount.IAuthQuestion.MaxLen
        Get

            Return m_maxLen
        End Get
        Set(ByVal value As Integer)
            m_maxLen = value
        End Set
    End Property
    Public Property QuestionDescription() As String Implements IAccount.IAuthQuestion.QuestionDescription
        Get
            Return m_questionDescription
        End Get
        Set(ByVal value As String)
            m_questionDescription = value
        End Set
    End Property
    Public Property QuestionID() As String Implements IAccount.IAuthQuestion.QuestionID
        Get
            Return m_questionID
        End Get
        Set(ByVal value As String)
            m_questionID = value
        End Set
    End Property
    Public Property QuestionName() As String Implements IAccount.IAuthQuestion.QuestionName
        Get
            Return m_questionName
        End Get
        Set(ByVal value As String)
            m_questionName = value
        End Set
    End Property
    Public Property UserResponded() As Boolean Implements IAccount.IAuthQuestion.UserResponded
        Get
            Return m_userResponded
        End Get
        Set(ByVal value As Boolean)
            m_userResponded = value
        End Set
    End Property
    Public Property AnswerFromUser() As String Implements IAccount.IAuthQuestion.AnswerFromUser
        Get
            Return m_answerFromUser
        End Get
        Set(ByVal value As String)
            m_answerFromUser = value
        End Set
    End Property
    Public Property AuthQuestionType() As eAuthQuestionType Implements IAccount.IAuthQuestion.AuthQuestionType
        Get
            Return m_eAuthQuestionType
        End Get
        Set(ByVal value As eAuthQuestionType)
            m_eAuthQuestionType = value
        End Set
    End Property
    Public Property CustomerType() As CustomerType Implements IAccount.IAuthQuestion.CustomerType
        Get
            Return m_customerType
        End Get
        Set(ByVal value As CustomerType)
            m_customerType = value
        End Set
    End Property
End Class


<Serializable()> _
Public Class BLMSBillingSystemURL
    Implements IMSBillingSystemURL

    Private m_BillingSys As String
    Private m_URL As String
    Private m_D As String
    Private m_K As String
    Private m_S As String

    Public Property BillingSys() As String Implements IMSBillingSystemURL.BillingSys
        Get
            Return m_BillingSys
        End Get
        Set(ByVal value As String)
            m_BillingSys = value
        End Set
    End Property
    Public Property D() As String Implements IMSBillingSystemURL.D
        Get
            Return m_D
        End Get
        Set(ByVal value As String)
            m_D = value
        End Set
    End Property
    Public Property K() As String Implements IMSBillingSystemURL.K
        Get
            Return m_K
        End Get
        Set(ByVal value As String)
            m_K = value
        End Set
    End Property
    Public Property S() As String Implements IMSBillingSystemURL.S
        Get
            Return m_S
        End Get
        Set(ByVal value As String)
            m_S = value
        End Set
    End Property
    Public Property URL() As String Implements IMSBillingSystemURL.URL
        Get
            Return m_URL
        End Get
        Set(ByVal value As String)
            m_URL = value
        End Set
    End Property
End Class


#Region "Coupon Management System"

#Region "Redeem Coupon"
<Serializable()> _
Public Class BLRedeemCoupon
    Implements IRedeemCoupon

    Private m_accountNumber As String
    Private m_couponId As String
    Private m_redemptionStatus As Char
    Private m_couponDescription As String
    Private m_adjustmentAmount As Decimal
    Private m_redemptionDate As Date
    Private m_confirmationNumber As String
    Private m_confirmationMessage As String
    Private m_validationErrorMessage As String
    Private m_redeemedEvents As List(Of ICouponRedeemedEvents)
    Private m_address As IAddress

    Public Property AccountNumber() As String Implements IRedeemCoupon.AccountNumber
        Get
            Return m_accountNumber
        End Get
        Set(ByVal value As String)
            m_accountNumber = value
        End Set
    End Property

    Public Property CouponId() As String Implements IRedeemCoupon.CouponId
        Get
            Return m_couponId
        End Get
        Set(ByVal value As String)
            m_couponId = value
        End Set
    End Property

    Public Property RedemptionStatus() As Char Implements IRedeemCoupon.RedemptionStatus
        Get
            Return m_redemptionStatus
        End Get
        Set(ByVal value As Char)
            m_redemptionStatus = value
        End Set
    End Property

    Public Property CouponDescription() As String Implements IRedeemCoupon.CouponDescription
        Get
            Return m_couponDescription
        End Get
        Set(ByVal value As String)
            m_couponDescription = value
        End Set
    End Property

    Public Property AdjustmentAmount() As Decimal Implements IRedeemCoupon.AdjustmentAmount
        Get
            Return m_adjustmentAmount
        End Get
        Set(ByVal value As Decimal)
            m_adjustmentAmount = value
        End Set
    End Property

    Public Property RedemptionDate() As Date Implements IRedeemCoupon.RedemptionDate
        Get
            Return m_redemptionDate
        End Get
        Set(ByVal value As Date)
            m_redemptionDate = value
        End Set
    End Property

    Public Property ConfirmationNumber() As String Implements IRedeemCoupon.ConfirmationNumber
        Get
            Return m_confirmationNumber
        End Get
        Set(ByVal value As String)
            m_confirmationNumber = value
        End Set
    End Property
    Public Property ConfirmationMessage() As String Implements IRedeemCoupon.ConfirmationMessage
        Get
            Return m_confirmationMessage
        End Get
        Set(ByVal value As String)
            m_confirmationMessage = value
        End Set
    End Property

    Public Property ValidationErrorMessage() As String Implements IRedeemCoupon.ValidationErrorMessage
        Get
            Return m_validationErrorMessage
        End Get
        Set(ByVal value As String)
            m_validationErrorMessage = value
        End Set
    End Property


    Public Property RedeemedEvents() As List(Of ICouponRedeemedEvents) Implements IRedeemCoupon.RedeemedEvents
        Get
            Return m_redeemedEvents
        End Get
        Set(ByVal value As List(Of ICouponRedeemedEvents))
            m_redeemedEvents = value
        End Set
    End Property

    Public Property Address() As IAddress Implements IRedeemCoupon.Address
        Get
            Return Me.m_address
        End Get
        Set(ByVal value As IAddress)
            Me.m_address = value
        End Set
    End Property

End Class
#End Region

#Region "Coupon Status"
<Serializable()> _
Public Class BLCouponStatus
    Implements ICouponStatus

    Private m_accountNumber As String
    Private m_couponId As String
    Private m_couponDescription As String
    Private m_couponStatus As Char
    Private m_couponOffer As Decimal
    Private m_couponStartDate As Date
    Private m_couponEndDate As Date
    Private m_activationStartDate As Date
    Private m_activationEndDate As Date
    Private m_allowedRedemptions As Integer
    Private m_numberOfOrderedEvents As Integer
    Private m_exclusionType As String
    Private m_redemptionDate As Date
    Private m_redemptionChannel As String
    Private m_confirmationNumber As String
    Private m_cSRID As String
    Private m_cSRLocation As String
    Private m_cSRRole As String
    Private m_cSRFirstName As String
    Private m_cSRLastName As String
    Private m_couponStatusRedeemedEvents As List(Of ICouponRedeemedEvents)
    Private m_businessRule As List(Of ICouponBusinessRule)
    Private m_redemptionAttempts As List(Of ICouponRedemptionAttempt)

    Public Property AccountNumber() As String Implements ICouponStatus.AccountId
        Get
            Return m_accountNumber
        End Get
        Set(ByVal value As String)
            m_accountNumber = value
        End Set
    End Property

    Public Property CouponId() As String Implements ICouponStatus.CouponId
        Get
            Return m_couponId
        End Get
        Set(ByVal value As String)
            m_couponId = value
        End Set
    End Property

    Public Property CouponDescription() As String Implements ICouponStatus.CouponDescription
        Get
            Return m_couponDescription
        End Get
        Set(ByVal value As String)
            m_couponDescription = value
        End Set
    End Property

    Public Property CouponStatus() As String Implements ICouponStatus.CouponStatus
        Get
            Return m_couponStatus
        End Get
        Set(ByVal value As String)
            m_couponStatus = value
        End Set
    End Property

    Public Property CouponOffer() As Decimal Implements ICouponStatus.CouponOffer
        Get
            Return m_couponOffer
        End Get
        Set(ByVal value As Decimal)
            m_couponOffer = value
        End Set
    End Property

    Public Property CouponStartDate() As Date Implements ICouponStatus.CouponStartDate
        Get
            Return m_couponStartDate
        End Get
        Set(ByVal value As Date)
            m_couponStartDate = value
        End Set
    End Property

    Public Property CouponEndDate() As Date Implements ICouponStatus.CouponEndDate
        Get
            Return m_couponEndDate
        End Get
        Set(ByVal value As Date)
            m_couponEndDate = value
        End Set
    End Property

    Public Property ActivationStartDate() As Date Implements ICouponStatus.ActivationStartDate
        Get
            Return m_activationStartDate
        End Get
        Set(ByVal value As Date)
            m_activationStartDate = value
        End Set
    End Property

    Public Property ActivationEndDate() As Date Implements ICouponStatus.ActivationEndDate
        Get
            Return m_activationEndDate
        End Get
        Set(ByVal value As Date)
            m_activationEndDate = value
        End Set
    End Property

    Public Property AllowedRedemptions() As Integer Implements ICouponStatus.AllowedRedemptions
        Get
            Return m_allowedRedemptions
        End Get
        Set(ByVal value As Integer)
            m_allowedRedemptions = value
        End Set
    End Property

    Public Property NumberOfOrderedEvents() As Integer Implements ICouponStatus.NumberOfOrderedEvents
        Get
            Return m_numberOfOrderedEvents
        End Get
        Set(ByVal value As Integer)
            m_numberOfOrderedEvents = value
        End Set
    End Property

    Public Property ExclusionType() As String Implements ICouponStatus.ExclusionType
        Get
            Return m_exclusionType
        End Get
        Set(ByVal value As String)
            m_exclusionType = value
        End Set
    End Property

    Public Property RedemptionDate() As Date Implements ICouponStatus.RedemptionDate
        Get
            Return m_redemptionDate
        End Get
        Set(ByVal value As Date)
            m_redemptionDate = value
        End Set
    End Property

    Public Property RedemptionChannel() As String Implements ICouponStatus.RedemptionChannel
        Get
            Return m_redemptionChannel
        End Get
        Set(ByVal value As String)
            m_redemptionChannel = value
        End Set
    End Property

    Public Property ConfirmationNumber() As String Implements ICouponStatus.ConfirmationNumber
        Get
            Return m_confirmationNumber
        End Get
        Set(ByVal value As String)
            m_confirmationNumber = value
        End Set
    End Property

    Public Property CSRID() As String Implements ICouponStatus.CSRID
        Get
            Return m_cSRID
        End Get
        Set(ByVal value As String)
            m_cSRID = value
        End Set
    End Property

    Public Property CSRLocation() As String Implements ICouponStatus.CSRLocation
        Get
            Return m_cSRLocation
        End Get
        Set(ByVal value As String)
            m_cSRLocation = value
        End Set
    End Property

    Public Property CSRRole() As String Implements ICouponStatus.CSRRole
        Get
            Return m_cSRRole
        End Get
        Set(ByVal value As String)
            m_cSRRole = value
        End Set
    End Property

    Public Property CSRFirstName() As String Implements ICouponStatus.CSRFirstName
        Get
            Return m_cSRFirstName
        End Get
        Set(ByVal value As String)
            m_cSRFirstName = value
        End Set
    End Property

    Public Property CSRLastName() As String Implements ICouponStatus.CSRLastName
        Get
            Return m_cSRLastName
        End Get
        Set(ByVal value As String)
            m_cSRLastName = value
        End Set
    End Property

    Public Property RedeemedEvents() As List(Of ICouponRedeemedEvents) Implements ICouponStatus.RedeemedEvents
        Get
            Return m_couponStatusRedeemedEvents

        End Get
        Set(ByVal value As List(Of ICouponRedeemedEvents))
            m_couponStatusRedeemedEvents = value
        End Set
    End Property

    Public Property BusinessRule() As List(Of ICouponBusinessRule) Implements ICouponStatus.BusinessRule
        Get
            Return m_businessRule
        End Get
        Set(ByVal value As List(Of ICouponBusinessRule))
            m_businessRule = value
        End Set
    End Property

    Public Property RedemptionAttempts() As List(Of ICouponRedemptionAttempt) Implements ICouponStatus.RedemptionAttempts
        Get
            Return m_redemptionAttempts
        End Get
        Set(ByVal value As List(Of ICouponRedemptionAttempt))
            m_redemptionAttempts = value
        End Set
    End Property
End Class
#End Region

#Region "Customer Redenption History"
<Serializable()> _
Public Class BLCustomerRedemptionHistory
    Implements ICustomerRedemptionHistory
    Private m_couponStatus As List(Of ICouponStatus)
    Private m_returnCode As String

    Public Property CouponStatus() As List(Of ICouponStatus) Implements ICustomerRedemptionHistory.CouponStatus
        Get
            Return m_couponStatus
        End Get
        Set(ByVal value As List(Of ICouponStatus))
            m_couponStatus = value
        End Set
    End Property
    Public Property ReturnCode() As String Implements ICustomerRedemptionHistory.ReturnCode
        Get
            Return m_returnCode
        End Get
        Set(ByVal value As String)
            m_returnCode = value
        End Set
    End Property
End Class
#End Region

#Region "Coupon Common"
<Serializable()> _
Public Class BLRedeemedEvents
    Implements ICouponRedeemedEvents

    Private m_eventCode As String
    Private m_eventTitle As String
    Private m_IsRedeemed As Char

    Public Property EventCode() As String Implements ICouponRedeemedEvents.EventCode
        Get
            Return m_eventCode
        End Get
        Set(ByVal value As String)
            m_eventCode = value
        End Set
    End Property

    Public Property EventTitle() As String Implements ICouponRedeemedEvents.EventTitle
        Get
            Return m_eventTitle
        End Get
        Set(ByVal value As String)
            m_eventTitle = value
        End Set
    End Property

    Public Property IsRedeemed() As Char Implements ICouponRedeemedEvents.IsRedeemed
        Get
            Return m_IsRedeemed
        End Get
        Set(ByVal value As Char)
            m_IsRedeemed = value
        End Set
    End Property
End Class

<Serializable()> _
Public Class BLRedemptionMessage
    Implements ICouponRedemptionMessage
    Private m_confirmationMessage As String
    Private m_invalidRedemptionMessage As String
    Public Property ConfirmationMessage() As String Implements ICouponRedemptionMessage.ConfirmationMessage
        Get
            Return m_confirmationMessage
        End Get
        Set(ByVal value As String)
            m_confirmationMessage = value
        End Set
    End Property

    Public Property InvalidRedemptionMessage() As String Implements ICouponRedemptionMessage.InvalidRedemptionMessage
        Get
            Return m_invalidRedemptionMessage
        End Get
        Set(ByVal value As String)
            m_invalidRedemptionMessage = value
        End Set
    End Property
End Class

<Serializable()> _
Public Class BLBusinessRule
    Implements ICouponBusinessRule
    Private m_ruleID As String
    Private m_ruleDescription As String
    Public Property RuleID() As String Implements ICouponBusinessRule.RuleID
        Get
            Return m_ruleID
        End Get
        Set(ByVal value As String)
            m_ruleDescription = value
        End Set
    End Property

    Public Property RuleDescription() As String Implements ICouponBusinessRule.RuleDescription
        Get
            Return m_ruleDescription
        End Get
        Set(ByVal value As String)
            m_ruleDescription = value
        End Set
    End Property
End Class
<Serializable()> _
Public Class BLRedemptionAttempt
    Implements ICouponRedemptionAttempt
    Private m_channel As String
    Private m_invalidMessage As String
    Public Property Channel() As String Implements ICouponRedemptionAttempt.Channel
        Get
            Return m_channel
        End Get
        Set(ByVal value As String)
            m_invalidMessage = value
        End Set
    End Property

    Public Property InvalidMessage() As String Implements ICouponRedemptionAttempt.InvalidMessage
        Get
            Return m_invalidMessage
        End Get
        Set(ByVal value As String)
            m_invalidMessage = value
        End Set
    End Property
End Class
#End Region

#End Region


'****************************************************************
'JPIRKEY: 4-2010 MyAccount Update - Retrieve Username enhancement
'****************************************************************
<Serializable()> _
Public Class BLRetUserNameAccount
    Implements IRetUNameAccount

	Dim m_AccountNumber As String
	Dim m_UserName As String
	Dim m_ZipCode As String
	Dim m_SecretQuestion As String

    Public Property AccountNumber() As String Implements IRetUNameAccount.AccountNumber
        Get
			Return m_AccountNumber
        End Get
        Set(ByVal value As String)
			m_AccountNumber = value
        End Set
    End Property

    Public Property UserName() As String Implements IRetUNameAccount.UserName
        Get
			Return m_UserName
		End Get
        Set(ByVal value As String)
			m_UserName = value
        End Set
    End Property

    Public Property ZipCode() As String Implements IRetUNameAccount.ZipCode
        Get
			Return m_ZipCode
        End Get
        Set(ByVal value As String)
			m_ZipCode = value
        End Set
	End Property

	Public Property SecretQuestion() As String Implements IRetUNameAccount.SecretQuestion
		Get
			Return m_SecretQuestion
		End Get
		Set(ByVal value As String)
			m_SecretQuestion = value
		End Set
	End Property

	Public Sub New()

	End Sub
End Class