Imports CharterDotCom.CommonEntities.Library.Enumerations

''' ----------------------------------------------------------------------------
''' <summary>
''' 
'''     Project:  CharterDotCom.CommonEntities.Library
'''       Class:  AccountClient
''' 
''' Description:  Base class for account information and functionality.
''' 
''' </summary>
''' <remarks></remarks>
''' <history>
''' 	[jnaes]		11/22/2010	Issue #10934.  Added IsGiftCard().
''' 	[jnaes]		11/24/2010	Issue #10934.  Changed RedeemCoupon to return
'''                                            IRedeemCoupon instead of array.
''' 	[jnaes]		11/26/2010	Issue #10934.  Added RedeemGiftCard().
''' 	[jnaes]		01/05/2011	Issue #10934.  Added GetBillingAddress().
''' 	[jnaes]		01/05/2011	Issue #10934.  Added SetBillingAddress().
''' </history>
''' ----------------------------------------------------------------------------
Public MustInherit Class AccountClient
    Inherits GenericClient

#Region "Basic Account Functions"

    Public MustOverride Sub SetVisitorID(ByVal trackingID As String, ByVal value As String)

    Public MustOverride Function RegisterUser(ByVal trackingid As String, 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

    Public MustOverride Function SignIn(ByVal trackingID As String, ByVal userName As String, ByVal password As String, Optional ByVal IsContentAuthor As Boolean = False) As Boolean
    Public MustOverride Function SignIn(ByVal trackingid As String, ByVal userName As String, ByVal password As String, ByVal AffiliateID As Integer, Optional ByVal IsContentAuthor As Boolean = False) As Boolean

    '###########################################################################
    'MODIFICATION   ROD COPELAND    ISSUE ID 4376   OCT 22
    '########################################################################### 
    Public MustOverride Function SignIn(ByVal trackingid As String, ByVal userName As String, ByVal password As String, ByVal zipCode As String, Optional ByVal IsContentAuthor As Boolean = False) As Boolean
    '########################################################################### 

    '###########################################################################
    'MODIFICATION SHEILA SHAHPARI   ADDED GET OSS AUTH STRING METHOD
    '###########################################################################
    Public MustOverride Function GetOSSAuthString(ByVal trackingid As String, ByVal clientIp As String) As String



    Public MustOverride Function ValidateMyAccountIDandPW_NO_SIGN_IN(ByVal trackingID As String, ByVal userName As String, ByVal password As String) As String

    Public MustOverride Sub SignOut(ByVal trackingID As String)

    ' UI uses this method to get account object
    Public MustOverride Function UpdateAccountObj(ByVal trackingid As String, ByVal lAccount As BLAccount) As Boolean

    Public MustOverride Function GetAccount(ByVal trackingID As String) As IAccount

    Public MustOverride Function MyAccount_GetServiceability(ByVal trackingID As String) As Boolean

    Public MustOverride Function LocalizeByPhone(ByVal trackingID As String, ByVal phoneNumber As String, ByVal affiliateID As Integer) As Boolean

    Public MustOverride Sub ClearCCOMDisplayFriendlyExceptionMessage(ByVal trackingID As String)

    Public MustOverride Function Localize(ByVal trackingID As String, ByVal addr1 As String, ByVal addr2 As String, ByVal zipCode As String, ByVal promoCode As String, ByVal affliateID As Integer) As Boolean

    'Public MustOverride Function Localize(ByVal trackingid As String, ByVal phoneNumber As String, ByVal promoCode As String, ByVal affliateID As Integer) As Boolean

    Public MustOverride Function Arealize(ByVal trackingID As String, ByVal zipCode As String) As String

    Public MustOverride Function SetLocaleID(ByVal trackingID As String, ByVal localeName As String) As Boolean

    Public MustOverride Function GetAddresses(ByVal trackingID As String) As Dictionary(Of String, IAddress)

    Public MustOverride Function SelectAddress(ByVal trackingID As String, ByVal addressID As String, ByVal promoCode As String) As Boolean

    Public MustOverride Sub SetShippingAddress(ByVal trackingID As String, ByVal street As String, ByVal apt As String, ByVal city As String, ByVal state As String, ByVal zip As String)

    Public MustOverride Sub ChangeCustomerStatus(ByVal trackingID As String, ByVal status As String)

    Public MustOverride Sub SetBillingAddress(ByVal trackingID As String, ByVal billingAddress As IAddress)

#End Region

#Region "Manage Account"

    Public MustOverride Function GetMSBillingSystemLink(ByVal trackingID As String, ByVal strSuccessPage 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
    '#################################################################
    Public MustOverride Function GetMSBillingSystemLink(ByVal trackingID As String, ByVal strSiblingAccountIDClicked As String, ByVal strSuccessPage As String) As String

    Public MustOverride Function ChangeAccountUserID(ByVal trackingID As String, ByVal newUserID As String) As Boolean

    Public MustOverride Function ChangeAccountPassword(ByVal trackingID As String, ByVal newPassword As String) As Boolean


    Public MustOverride Function ChangeSecurityQA(ByVal trackingID As String, ByVal newQuestion As String, ByVal newAnswer As String) As Boolean

    Public MustOverride Sub UpdateMemberInformation(ByVal trackingID As String, 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)


    Public MustOverride Function GetMSSecurityKeys(ByVal trackingID As String) As Boolean

    Public MustOverride Function ActivateMSSecurityKey(ByVal trackingID As String, ByVal ProvisioningID As String) As Boolean

    Public MustOverride Function GetSecurityQA(ByVal trackingID As String) As List(Of String)

    Public MustOverride Function GetSecurityQAWithoutAccount(ByVal trackingID As String) As List(Of String)


    'Public MustOverride Function ForgotPassword(ByVal trackingID As String, ByVal eMailID As String) As Boolean

    Public MustOverride Function ChangeContactEMailAddress(ByVal trackingid As String, ByVal newEmailAddress As String) As Boolean

    'Public MustOverride Function ValidateUser(ByVal trackingid As String, ByVal ssn As String) As String
    Public MustOverride Function ValidateUser(ByVal trackingid As String, ByVal accountNumber As String) As String

    Public MustOverride Function GetCPNIVerification(ByVal trackingid As String, ByVal accountID As String, ByVal pin As String) As Boolean

    Public MustOverride Function AuthenticateLoginSecretQA(ByVal trackingid As String, ByVal loginID As String, ByVal secretQuestion As String, ByVal secretAnswer As String, ByVal zipCode As String, Optional ByVal validateZipCode As Boolean = False) As Boolean

    '###########################################################################
    '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 MustOverride Function FindCSGAccountNumber(ByVal trackingid As String, ByVal accountnumber As String) As String

    '******************************************************
    'MyAccount Secuirty Code Update functionality Sriman kanuri 03/29/10
    '***************************************************
    Public MustOverride Function GetCPNISecurityCode(ByVal trackingID As String, ByVal accountnumber As String, ByVal customerID As String) As String
    Public MustOverride Function UpdateCPNISecurityCode(ByVal trackingID As String, ByVal accountnumber As String, ByVal customerID As String, ByVal securityCode As String) As Boolean
    Public MustOverride Function GetLoginIDUserName(ByVal trackingID As String) As Boolean

#End Region

#Region "Manage Email"

    Public MustOverride Sub GetEmailAccounts(ByVal trackingID As String)

    Public MustOverride Function AddEmailAccount(ByVal trackingID As String, ByVal eMailID As String, ByVal password As String, ByVal lProvisioningID As String) As Boolean

    Public MustOverride Function ChangeAccountEmailPassword(ByVal trackingID As String, ByVal eMailID As String, ByVal newPassword As String) As Boolean

    Public MustOverride Function DeleteEmailAccount(ByVal trackingID As String, ByVal eMailID As String) As Boolean

    Public MustOverride Function ChangePrimaryEmail(ByVal trackingID As String, ByVal emailID As String) As Boolean

#End Region

#Region "Payment Management"

    Public MustOverride Function PayByCreditCard(ByVal trackingID As String, 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

    Public MustOverride Function PayByBankAccount(ByVal trackingid As String, 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

    Public MustOverride Function PayByCreditCard(ByVal trackingID 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

    Public MustOverride Function PayByBankAccount(ByVal trackingID As String, 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

    Public MustOverride Function GetBillingSummaryByTelephoneNumber(ByVal trackingid As String, ByVal telephoneNumber As String, ByVal ZipCode As String, ByVal email As String) As List(Of IAccount.IBill)

#End Region

#Region "WebSpace Management"

    Public MustOverride Function CreateWebSpaceAccount(ByVal trackingID As String, ByVal userID As String, ByVal password As String, ByVal provisioningID As String) As Boolean
    Public MustOverride Function RemoveWebSpaceAccount(ByVal trackingID As String, ByVal provisioningID As String) As Boolean

    Public MustOverride Function CheckWebSpaceAccount(ByVal trackingID As String) As Boolean
    Public MustOverride Function ChangeWebSpaceAccountPassword(ByVal trackingid As String, ByVal WebSpaceLogin As String, ByVal newWebSpacePassword As String, ByVal lProvisioningID As String) As Boolean

#End Region

#Region "Other"

    ''' <summary>
    ''' Check for Telephone number portability 
    ''' </summary>
    ''' <param name="areaCode">First three digits of phone number(Area Code)</param>
    ''' <param name="prefixCode">Three digits after the Area Code</param>
    ''' <returns>Returns boolean which represents portable/ not</returns>
    ''' <remarks></remarks>
    Public MustOverride Function CheckTelephoneNumberPortability(ByVal trackingID As String, ByVal areaCode As String, ByVal prefixCode As String) As String

#End Region

#Region "Coupon Management"

    Public MustOverride Function RedeemCoupon(ByVal accountNumber As String, ByVal couponId As String) As IRedeemCoupon
    Public MustOverride Function RedeemGiftCard(ByVal accountNumber As String, ByVal couponId As String, ByVal address As IAddress) As IRedeemCoupon
    Public MustOverride Function GetBillingAddress(ByVal accountNumber As String) As IAddress
    Public MustOverride Function GetCouponStatus(ByVal accountNumber As String, ByVal couponId As String) As List(Of ICouponStatus)
    Public MustOverride Function GetCustomerRedemptionHistory(ByVal accountNumber As String) As List(Of ICustomerRedemptionHistory)
    Public MustOverride Function IsGiftCard(ByVal accountNumber As String, ByVal couponId As String) As Boolean

#End Region

End Class
