<Serializable()> _
Public Class CouponServices

#Region "Coupon Redemption Request Object"
    ''' <summary>
    ''' CouponRedemptionRequest contains data used to pass information
    ''' from the Web Server front end to the App Server layer to make a
    ''' RedemtionService Redeem Coupon web service call
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class CouponRedemptionRequest
        Inherits ProviderRequests
        Implements IProviderParameters

        Private m_accountIdField As String
        Private m_couponIdField As String
        Private m_csrIdField As String
        Private m_csrLocationField As String
        Private m_csrRoleField As String
        Private m_csrFirstNameField As String
        Private m_csrLastNameField As String
        Private m_csrOverrideFlagField As String
        Private m_csrOverrideReasonField As String
        Private m_channelTypeField As ChannelType

        Public Property AccountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property

        Public Property CouponId() As String
            Get
                Return Me.m_couponIdField
            End Get
            Set(ByVal value As String)
                Me.m_couponIdField = value
            End Set
        End Property

        Public Property CSRId() As String
            Get
                Return Me.m_csrIdField
            End Get
            Set(ByVal value As String)
                Me.m_csrIdField = value
            End Set
        End Property

        Public Property CSRLocation() As String
            Get
                Return Me.m_csrLocationField
            End Get
            Set(ByVal value As String)
                Me.m_csrLocationField = value
            End Set
        End Property

        Public Property CSRRole() As String
            Get
                Return Me.m_csrRoleField
            End Get
            Set(ByVal value As String)
                Me.m_csrRoleField = value
            End Set
        End Property

        Public Property CSRFirstName() As String
            Get
                Return Me.m_csrFirstNameField
            End Get
            Set(ByVal value As String)
                Me.m_csrFirstNameField = value
            End Set
        End Property

        Public Property CSRLastName() As String
            Get
                Return Me.m_csrLastNameField
            End Get
            Set(ByVal value As String)
                Me.m_csrLastNameField = value
            End Set
        End Property

        Public Property CSROverrideFlag() As Char
            Get
                Return Me.m_csrOverrideFlagField
            End Get
            Set(ByVal value As Char)
                Me.m_csrOverrideFlagField = value
            End Set
        End Property

        Public Property CSROverrideReason() As String
            Get
                Return Me.m_csrOverrideReasonField
            End Get
            Set(ByVal value As String)
                Me.m_csrOverrideReasonField = value
            End Set
        End Property
        Public Property ChannelType() As ChannelType
            Get
                Return Me.m_channelTypeField
            End Get
            Set(ByVal value As ChannelType)
                Me.m_channelTypeField = value
            End Set
        End Property

    End Class
    Public Enum ChannelType
        m_CSR = 1
        m_CharterDotCom = 2
    End Enum
#End Region

#Region "Coupon Redemption Response Object"
    ''' <summary>
    ''' CouponRedemptionResponse contains data used to pass information
    ''' from the App Server to the Web Server layer after completion of a
    ''' Redemption Service Redeem Coupon web service call
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
         Public Class CouponRedemptionResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_resultField As ResultCoupon
        Private m_couponRedemptionResultField As CouponRedemptionResult

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_resultField
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_resultField = value
            End Set
        End Property

        Public Property CouponRedemptionResult() As CouponRedemptionResult
            Get
                Return Me.m_couponRedemptionResultField
            End Get
            Set(ByVal value As CouponRedemptionResult)
                Me.m_couponRedemptionResultField = value
            End Set
        End Property
    End Class

    <Serializable()> _
    Public Class CouponRedemptionResult

        Private m_accountIdField As String
        Private m_couponIdField As String
        Private m_cSRIDField As String
        Private m_redemptionStatusField As Char
        Private m_adjustmentAmountField As Decimal
        Private m_redemptionDateField As Date
        Private m_confirmationNumberField As String
        Private m_cSRLocationField As String
        Private m_cSRRoleField As String
        Private m_cSRFirstNameField As String
        Private m_cSRLastNameField As String
        Private m_couponDescriptionField As String
        Private m_redeemedEventsField() As RedeemedEvent
        Private m_confirmationMessageField As String
        Private m_validationFailureMessageField As String

        Public Property AccountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property

        Public Property CouponId() As String
            Get
                Return Me.m_couponIdField
            End Get
            Set(ByVal value As String)
                Me.m_couponIdField = value
            End Set
        End Property

        Public Property CSRID() As String
            Get
                Return Me.m_cSRIDField
            End Get
            Set(ByVal value As String)
                Me.m_cSRIDField = value
            End Set
        End Property

        Public Property RedemptionStatus() As Char
            Get
                Return Me.m_redemptionStatusField
            End Get
            Set(ByVal value As Char)
                Me.m_redemptionStatusField = value
            End Set
        End Property

        Public Property AdjustmentAmount() As Decimal
            Get
                Return Me.m_adjustmentAmountField
            End Get
            Set(ByVal value As Decimal)
                Me.m_adjustmentAmountField = value
            End Set
        End Property

        Public Property RedemptionDate() As Date
            Get
                Return Me.m_redemptionDateField
            End Get
            Set(ByVal value As Date)
                Me.m_redemptionDateField = value
            End Set
        End Property

        Public Property ConfirmationNumber() As String
            Get
                Return Me.m_confirmationNumberField
            End Get
            Set(ByVal value As String)
                Me.m_confirmationNumberField = value
            End Set
        End Property

        Public Property CSRLocation() As String
            Get
                Return Me.m_cSRLocationField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLocationField = value
            End Set
        End Property

        Public Property CSRRole() As String
            Get
                Return Me.m_cSRRoleField
            End Get
            Set(ByVal value As String)
                Me.m_cSRRoleField = value
            End Set
        End Property

        Public Property CSRFirstName() As String
            Get
                Return Me.m_cSRFirstNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRFirstNameField = value
            End Set
        End Property

        Public Property CSRLastName() As String
            Get
                Return Me.m_cSRLastNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLastNameField = value
            End Set
        End Property

        Public Property CouponDescription() As String
            Get
                Return Me.m_couponDescriptionField
            End Get
            Set(ByVal value As String)
                Me.m_couponDescriptionField = value
            End Set
        End Property

        Public Property ConfirmationMessage() As String
            Get
                Return Me.m_confirmationMessageField
            End Get
            Set(ByVal value As String)
                Me.m_confirmationMessageField = value
            End Set
        End Property
        Public Property ValidationFailureMessage() As String
            Get
                Return Me.m_validationFailureMessageField
            End Get
            Set(ByVal value As String)
                Me.m_validationFailureMessageField = value
            End Set
        End Property
        Public Property RedeemedEvents() As RedeemedEvent()
            Get
                Return Me.m_redeemedEventsField
            End Get
            Set(ByVal value As RedeemedEvent())
                Me.m_redeemedEventsField = value
            End Set
        End Property
    End Class

    <Serializable()> _
    Public Class RedeemedEvent

        Private m_eventCodeField As String
        Private m_eventTitleField As String
        Private m_isRedeemedField As Char

        Public Property EventCode() As String
            Get
                Return Me.m_eventCodeField
            End Get
            Set(ByVal value As String)
                Me.m_eventCodeField = value
            End Set
        End Property

        Public Property EventTitle() As String
            Get
                Return Me.m_eventTitleField
            End Get
            Set(ByVal value As String)
                Me.m_eventTitleField = value
            End Set
        End Property

        Public Property IsRedeemed() As Char
            Get
                Return Me.m_isRedeemedField
            End Get
            Set(ByVal value As Char)
                Me.m_isRedeemedField = value
            End Set
        End Property
    End Class

    <Serializable()> _
    Public Class RedemptionMessage

        Private m_confirmationMessageField As String
        Private m_invalidRedemptionmessageField As String

        Public Property ConfirmationMessage() As String
            Get
                Return Me.m_confirmationMessageField
            End Get
            Set(ByVal value As String)
                Me.m_confirmationMessageField = value
            End Set
        End Property

        Public Property InvalidRedemptionMessage() As String
            Get
                Return Me.m_invalidRedemptionmessageField
            End Get
            Set(ByVal value As String)
                Me.m_invalidRedemptionmessageField = value
            End Set
        End Property
    End Class
#End Region

#Region "Get Coupon Status Request Object"
    ''' <summary>
    ''' GetCouponStatusRequest contains data used to pass information
    ''' from the Web Server front end to the App Server layer to make a
    ''' RedemtionService Get Coupon Status web service call
    ''' </summary>
    ''' <remarks></remarks>

    <Serializable()> _
    Public Class GetCouponStatusRequest
        Inherits ProviderRequests
        Implements IProviderParameters

        Private m_accountIdField As String
        Private m_couponIdField As String
        Private m_channelTypeField As ChannelType


        Public Property accountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property

        Public Property couponID() As String
            Get
                Return Me.m_couponIdField
            End Get
            Set(ByVal value As String)
                Me.m_couponIdField = value
            End Set
        End Property
        Public Property channelType() As ChannelType
            Get
                Return Me.m_channelTypeField
            End Get
            Set(ByVal value As ChannelType)
                Me.m_channelTypeField = value
            End Set
        End Property
    End Class
#End Region

#Region "Get Coupon Status Response Object"
    ''' <summary>
    ''' GetCouponStatusResponse contains data used to pass information
    ''' from the App Server to the Web Server layer after completion of a
    ''' Redemption Service Get Coupon Status web service call
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
         Public Class GetCouponStatusResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_resultField As ResultCoupon
        Private m_couponStatusResultField As CouponStatusResult

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_resultField
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_resultField = value
            End Set
        End Property

        Public Property CouponStatusResult() As CouponStatusResult
            Get
                Return Me.m_couponStatusResultField
            End Get
            Set(ByVal value As CouponStatusResult)
                Me.m_couponStatusResultField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class CouponStatusResult

        Private m_accountIdField As String
        Private m_couponIdField As String
        Private m_couponDescriptionField As String
        Private m_couponRedemptionStatusField As Char
        Private m_couponStatusField As CouponStatus
        Private m_couponOfferField As Decimal
        Private m_couponStartDateField As Date
        Private m_couponEndDateField As Date
        Private m_activationStartDateField As Date
        Private m_activationEndDateField As Date
        Private m_allowedRedemptionsField As Integer
        Private m_numberOfOrderedEventsField As Integer
        Private m_exclusionTypeField As String
        Private m_redemptionDateField As Date
        Private m_redemptionChannelField As String
        Private m_confirmationNumberField As String
        Private m_cSRIDField As String
        Private m_cSRLocationField As String
        Private m_cSRRoleField As String
        Private m_cSRFirstNameField As String
        Private m_cSRLastNameField As String
        Private m_redeemedEventsField() As RedeemedEventCouponStatus
        Private m_businessRuleField() As BusinessRuleCouponStatus
        Private m_redemptionAttemptsField() As RedemptionAttemptCouponStatus

        Public Property AccountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property

        Public Property CouponId() As String
            Get
                Return Me.m_couponIdField
            End Get
            Set(ByVal value As String)
                Me.m_couponIdField = value
            End Set
        End Property

        Public Property CouponDescription() As String
            Get
                Return Me.m_couponDescriptionField
            End Get
            Set(ByVal value As String)
                Me.m_couponDescriptionField = value
            End Set
        End Property

        Public Property CouponRedemptionStatus() As Char
            Get
                Return Me.m_couponRedemptionStatusField
            End Get
            Set(ByVal value As Char)
                Me.m_couponRedemptionStatusField = value
            End Set
        End Property

        Public Property CouponStatus() As CouponStatus
            Get
                Return Me.m_couponStatusField
            End Get
            Set(ByVal value As CouponStatus)
                Me.m_couponStatusField = value
            End Set
        End Property

        Public Property CouponOffer() As Decimal
            Get
                Return Me.m_couponOfferField
            End Get
            Set(ByVal value As Decimal)
                Me.m_couponOfferField = value
            End Set
        End Property

        Public Property CouponStartDate() As Date
            Get
                Return Me.m_couponStartDateField
            End Get
            Set(ByVal value As Date)
                Me.m_couponStartDateField = value
            End Set
        End Property

        Public Property CouponEndDate() As Date
            Get
                Return Me.m_couponEndDateField
            End Get
            Set(ByVal value As Date)
                Me.m_couponEndDateField = value
            End Set
        End Property

        Public Property ActivationStartDate() As Date
            Get
                Return Me.m_activationStartDateField
            End Get
            Set(ByVal value As Date)
                Me.m_activationStartDateField = value
            End Set
        End Property

        Public Property ActivationEndDate() As Date
            Get
                Return Me.m_activationEndDateField
            End Get
            Set(ByVal value As Date)
                Me.m_activationEndDateField = value
            End Set
        End Property

        Public Property AllowedRedemptions() As Integer
            Get
                Return Me.m_allowedRedemptionsField
            End Get
            Set(ByVal value As Integer)
                Me.m_allowedRedemptionsField = value
            End Set
        End Property

        Public Property NumberOfOrderedEvents() As Integer
            Get
                Return Me.m_numberOfOrderedEventsField
            End Get
            Set(ByVal value As Integer)
                Me.m_numberOfOrderedEventsField = value
            End Set
        End Property

        Public Property ExclusionType() As String
            Get
                Return Me.m_exclusionTypeField
            End Get
            Set(ByVal value As String)
                Me.m_exclusionTypeField = value
            End Set
        End Property

        Public Property RedemptionDate() As Date
            Get
                Return Me.m_redemptionDateField
            End Get
            Set(ByVal value As Date)
                Me.m_redemptionDateField = value
            End Set
        End Property

        Public Property RedemptionChannel() As String
            Get
                Return Me.m_redemptionChannelField
            End Get
            Set(ByVal value As String)
                Me.m_redemptionChannelField = value
            End Set
        End Property

        Public Property ConfirmationNumber() As String
            Get
                Return Me.m_confirmationNumberField
            End Get
            Set(ByVal value As String)
                Me.m_confirmationNumberField = value
            End Set
        End Property

        Public Property CSRID() As String
            Get
                Return Me.m_cSRIDField
            End Get
            Set(ByVal value As String)
                Me.m_cSRIDField = value
            End Set
        End Property

        Public Property CSRLocation() As String
            Get
                Return Me.m_cSRLocationField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLocationField = value
            End Set
        End Property

        Public Property CSRRole() As String
            Get
                Return Me.m_cSRRoleField
            End Get
            Set(ByVal value As String)
                Me.m_cSRRoleField = value
            End Set
        End Property

        Public Property CSRFirstName() As String
            Get
                Return Me.m_cSRFirstNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRFirstNameField = value
            End Set
        End Property

        Public Property CSRLastName() As String
            Get
                Return Me.m_cSRLastNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLastNameField = value
            End Set
        End Property

        Public Property RedeemedEvents() As RedeemedEventCouponStatus()
            Get
                Return Me.m_redeemedEventsField
            End Get
            Set(ByVal value As RedeemedEventCouponStatus())
                Me.m_redeemedEventsField = value
            End Set
        End Property

        Public Property BusinessRule() As BusinessRuleCouponStatus()
            Get
                Return Me.m_businessRuleField
            End Get
            Set(ByVal value As BusinessRuleCouponStatus())
                Me.m_businessRuleField = value
            End Set
        End Property

        Public Property RedemptionAttempts() As RedemptionAttemptCouponStatus()
            Get
                Return Me.m_redemptionAttemptsField
            End Get
            Set(ByVal value As RedemptionAttemptCouponStatus())
                Me.m_redemptionAttemptsField = value
            End Set
        End Property
    End Class

    Public Enum CouponStatus
        Active = 1
        Expired = 2
        InActive = 4
        Redeemed = 8
    End Enum

    Public Enum CouponServiceStatus
        m_Active = 1
        m_Expired = 2
        m_InActive = 4
        m_Redeemed = 8
    End Enum
    <Serializable()> _
   Public Class RedeemedEventCouponStatus

        Private m_eventCodeField As String
        Private m_eventTitleField As String
        Private m_isRedeemedField As Char


        Public Property EventCode() As String
            Get
                Return Me.m_eventCodeField
            End Get
            Set(ByVal value As String)
                Me.m_eventCodeField = value
            End Set
        End Property

        Public Property EventTitle() As String
            Get
                Return Me.m_eventTitleField
            End Get
            Set(ByVal value As String)
                Me.m_eventTitleField = value
            End Set
        End Property


        Public Property IsRedeemed() As Char
            Get
                Return Me.m_isRedeemedField
            End Get
            Set(ByVal value As Char)
                Me.m_isRedeemedField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class BusinessRuleCouponStatus

        Private m_ruleIDField As String
        Private m_ruleDescriptionField As String

        Public Property RuleID() As String
            Get
                Return Me.m_ruleIDField
            End Get
            Set(ByVal value As String)
                Me.m_ruleIDField = value
            End Set
        End Property

        Public Property RuleDescription() As String
            Get
                Return Me.m_ruleDescriptionField
            End Get
            Set(ByVal value As String)
                Me.m_ruleDescriptionField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class RedemptionAttemptCouponStatus

        Private m_channelField As String
        Private m_invalidMessageField As String

        Public Property Channel() As String
            Get
                Return Me.m_channelField
            End Get
            Set(ByVal value As String)
                Me.m_channelField = value
            End Set
        End Property

        Public Property InvalidMessage() As String
            Get
                Return Me.m_invalidMessageField
            End Get
            Set(ByVal value As String)
                Me.m_invalidMessageField = value
            End Set
        End Property
    End Class
#End Region

#Region "GetCustomerAddressRequest Class"

    <Serializable()> _
    Public Class GetCustomerAddressRequest
        Inherits ProviderRequests
        Implements IProviderParameters

        Private m_accountId As String

        Public Property AccountId() As String
            Get
                Return Me.m_accountId
            End Get
            Set(ByVal value As String)
                Me.m_accountId = value
            End Set
        End Property

    End Class

#End Region

#Region "GetCustomerAddressResponse Class"

    <Serializable()> _
    Public Class GetCustomerAddressResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_result As ResultCoupon
        Private m_accountId As String
        Private m_serviceAddress As IAddress
        Private m_billingAddress As IAddress

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_result
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_result = value
            End Set
        End Property

        Public Property AccountId() As String
            Get
                Return Me.m_accountId
            End Get
            Set(ByVal value As String)
                Me.m_accountId = value
            End Set
        End Property

        Public Property ServiceAddress() As IAddress
            Get
                Return Me.m_serviceAddress
            End Get
            Set(ByVal value As IAddress)
                Me.m_serviceAddress = value
            End Set
        End Property

        Public Property BillingAddress() As IAddress
            Get
                Return Me.m_billingAddress
            End Get
            Set(ByVal value As IAddress)
                Me.m_billingAddress = value
            End Set
        End Property

    End Class

#End Region

#Region "Get Customer Redemption History Request Object"
    ''' <summary>
    ''' GetCouponStatusRequest contains data used to pass information
    ''' from the Web Server front end to the App Server layer to make a
    ''' RedemtionService Get Coupon Status web service call
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
    Public Class GetCustomerRedemptionHistoryRequest
        Inherits ProviderRequests
        Implements IProviderParameters

        Private m_accountIdField As String
        Private m_channelTypeField As ChannelType

        Public Property accountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property
        Public Property channelType() As ChannelType
            Get
                Return Me.m_channelTypeField
            End Get
            Set(ByVal value As ChannelType)
                Me.m_channelTypeField = value
            End Set
        End Property
    End Class
#End Region

#Region "Get Customer Redemption History Response Object"
    ''' <summary>
    ''' GetCouponStatusResponse contains data used to pass information
    ''' from the App Server to the Web Server layer after completion of a
    ''' Redemption Service Get Coupon Status web service call
    ''' </summary>
    ''' <remarks></remarks>
    <Serializable()> _
         Public Class GetCustomerRedemptionHistoryResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_resultField As ResultCoupon
        Private m_couponRedemptionHistoryResultField() As CustomerRedemptionHistoryResult

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_resultField
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_resultField = value
            End Set
        End Property

        Public Property CouponRedemptionHistoryResult() As CustomerRedemptionHistoryResult()
            Get
                Return Me.m_couponRedemptionHistoryResultField
            End Get
            Set(ByVal value As CustomerRedemptionHistoryResult())
                Me.m_couponRedemptionHistoryResultField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class CustomerRedemptionHistoryResult

        Private m_accountIdField As String
        Private m_couponIdField As String
        Private m_couponDescriptionField As String
        Private m_couponRedemptionStatusField As Char
        Private m_couponStatusField As CouponStatus
        Private m_couponOfferField As Decimal
        Private m_couponStartDateField As Date
        Private m_couponEndDateField As Date
        Private m_activationStartDateField As Date
        Private m_activationEndDateField As Date
        Private m_allowedRedemptionsField As Integer
        Private m_numberOfOrderedEventsField As Integer
        Private m_exclusionTypeField As String
        Private m_redemptionDateField As Date
        Private m_redemptionChannelField As String
        Private m_confirmationNumberField As String
        Private m_cSRIDField As String
        Private m_cSRLocationField As String
        Private m_cSRRoleField As String
        Private m_cSRFirstNameField As String
        Private m_cSRLastNameField As String
        Private m_redeemedEventsField() As RedeemedEventCustomerRedemptionHistory
        Private m_businessRuleField() As BusinessRuleCustomerRedemptionHistory
        Private m_redemptionAttemptsField() As RedemptionAttemptCustomerRedemptionHistory

        Public Property AccountId() As String
            Get
                Return Me.m_accountIdField
            End Get
            Set(ByVal value As String)
                Me.m_accountIdField = value
            End Set
        End Property

        Public Property CouponId() As String
            Get
                Return Me.m_couponIdField
            End Get
            Set(ByVal value As String)
                Me.m_couponIdField = value
            End Set
        End Property

        Public Property CouponDescription() As String
            Get
                Return Me.m_couponDescriptionField
            End Get
            Set(ByVal value As String)
                Me.m_couponDescriptionField = value
            End Set
        End Property

        Public Property CouponRedemptionStatus() As Char
            Get
                Return Me.m_couponRedemptionStatusField
            End Get
            Set(ByVal value As Char)
                Me.m_couponRedemptionStatusField = value
            End Set
        End Property

        Public Property CouponStatus() As CouponStatus
            Get
                Return Me.m_couponStatusField
            End Get
            Set(ByVal value As CouponStatus)
                Me.m_couponStatusField = value
            End Set
        End Property

        Public Property CouponOffer() As Decimal
            Get
                Return Me.m_couponOfferField
            End Get
            Set(ByVal value As Decimal)
                Me.m_couponOfferField = value
            End Set
        End Property

        Public Property CouponStartDate() As Date
            Get
                Return Me.m_couponStartDateField
            End Get
            Set(ByVal value As Date)
                Me.m_couponStartDateField = value
            End Set
        End Property

        Public Property CouponEndDate() As Date
            Get
                Return Me.m_couponEndDateField
            End Get
            Set(ByVal value As Date)
                Me.m_couponEndDateField = value
            End Set
        End Property

        Public Property ActivationStartDate() As Date
            Get
                Return Me.m_activationStartDateField
            End Get
            Set(ByVal value As Date)
                Me.m_activationStartDateField = value
            End Set
        End Property

        Public Property ActivationEndDate() As Date
            Get
                Return Me.m_activationEndDateField
            End Get
            Set(ByVal value As Date)
                Me.m_activationEndDateField = value
            End Set
        End Property

        Public Property AllowedRedemptions() As Integer
            Get
                Return Me.m_allowedRedemptionsField
            End Get
            Set(ByVal value As Integer)
                Me.m_allowedRedemptionsField = value
            End Set
        End Property

        Public Property NumberOfOrderedEvents() As Integer
            Get
                Return Me.m_numberOfOrderedEventsField
            End Get
            Set(ByVal value As Integer)
                Me.m_numberOfOrderedEventsField = value
            End Set
        End Property

        Public Property ExclusionType() As String
            Get
                Return Me.m_exclusionTypeField
            End Get
            Set(ByVal value As String)
                Me.m_exclusionTypeField = value
            End Set
        End Property

        Public Property RedemptionDate() As Date
            Get
                Return Me.m_redemptionDateField
            End Get
            Set(ByVal value As Date)
                Me.m_redemptionDateField = value
            End Set
        End Property

        Public Property RedemptionChannel() As String
            Get
                Return Me.m_redemptionChannelField
            End Get
            Set(ByVal value As String)
                Me.m_redemptionChannelField = value
            End Set
        End Property

        Public Property ConfirmationNumber() As String
            Get
                Return Me.m_confirmationNumberField
            End Get
            Set(ByVal value As String)
                Me.m_confirmationNumberField = value
            End Set
        End Property

        Public Property CSRID() As String
            Get
                Return Me.m_cSRIDField
            End Get
            Set(ByVal value As String)
                Me.m_cSRIDField = value
            End Set
        End Property

        Public Property CSRLocation() As String
            Get
                Return Me.m_cSRLocationField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLocationField = value
            End Set
        End Property

        Public Property CSRRole() As String
            Get
                Return Me.m_cSRRoleField
            End Get
            Set(ByVal value As String)
                Me.m_cSRRoleField = value
            End Set
        End Property

        Public Property CSRFirstName() As String
            Get
                Return Me.m_cSRFirstNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRFirstNameField = value
            End Set
        End Property

        Public Property CSRLastName() As String
            Get
                Return Me.m_cSRLastNameField
            End Get
            Set(ByVal value As String)
                Me.m_cSRLastNameField = value
            End Set
        End Property

        Public Property RedeemedEvents() As RedeemedEventCustomerRedemptionHistory()
            Get
                Return Me.m_redeemedEventsField
            End Get
            Set(ByVal value As RedeemedEventCustomerRedemptionHistory())
                Me.m_redeemedEventsField = value
            End Set
        End Property

        Public Property BusinessRule() As BusinessRuleCustomerRedemptionHistory()
            Get
                Return Me.m_businessRuleField
            End Get
            Set(ByVal value As BusinessRuleCustomerRedemptionHistory())
                Me.m_businessRuleField = value
            End Set
        End Property

        Public Property RedemptionAttempts() As RedemptionAttemptCustomerRedemptionHistory()
            Get
                Return Me.m_redemptionAttemptsField
            End Get
            Set(ByVal value As RedemptionAttemptCustomerRedemptionHistory())
                Me.m_redemptionAttemptsField = value
            End Set
        End Property
    End Class
    <Serializable()> _
   Public Class RedeemedEventCustomerRedemptionHistory
        Private m_eventCodeField As String
        Private m_eventTitleField As String
        Private m_isRedeemedField As String

        Public Property EventCode() As String
            Get
                Return Me.m_eventCodeField
            End Get
            Set(ByVal value As String)
                Me.m_eventCodeField = value
            End Set
        End Property

        Public Property EventTitle() As String
            Get
                Return Me.m_eventTitleField
            End Get
            Set(ByVal value As String)
                Me.m_eventTitleField = value
            End Set
        End Property

        Public Property IsRedeemed() As Char
            Get
                Return Me.m_isRedeemedField
            End Get
            Set(ByVal value As Char)
                Me.m_isRedeemedField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class BusinessRuleCustomerRedemptionHistory

        Private m_ruleIDField As String
        Private m_ruleDescriptionField As String

        Public Property RuleID() As String
            Get
                Return Me.m_ruleIDField
            End Get
            Set(ByVal value As String)
                Me.m_ruleIDField = value
            End Set
        End Property

        Public Property RuleDescription() As String
            Get
                Return Me.m_ruleDescriptionField
            End Get
            Set(ByVal value As String)
                Me.m_ruleDescriptionField = value
            End Set
        End Property
    End Class
    <Serializable()> _
    Public Class RedemptionAttemptCustomerRedemptionHistory

        Private m_channelField As String
        Private m_invalidMessageField As String

        Public Property Channel() As String
            Get
                Return Me.m_channelField
            End Get
            Set(ByVal value As String)
                Me.m_channelField = value
            End Set
        End Property

        Public Property InvalidMessage() As String
            Get
                Return Me.m_invalidMessageField
            End Get
            Set(ByVal value As String)
                Me.m_invalidMessageField = value
            End Set
        End Property
    End Class

#End Region

#Region "GiftCardLookupRequest Class"

    <Serializable()> _
    Public Class GiftCardLookupRequest
        Inherits ProviderRequests
        Implements IProviderParameters

        Private m_accountId As String
        Private m_couponId As String

        Public Property AccountId() As String
            Get
                Return Me.m_accountId
            End Get
            Set(ByVal value As String)
                Me.m_accountId = value
            End Set
        End Property

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

    End Class

#End Region

#Region "GiftCardLookupResponse Class"

    <Serializable()> _
    Public Class GiftCardLookupResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_result As ResultCoupon
        Private m_accountId As String
        Private m_couponId As String
        Private m_couponType As String

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_result
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_result = value
            End Set
        End Property

        Public Property AccountId() As String
            Get
                Return Me.m_accountId
            End Get
            Set(ByVal value As String)
                Me.m_accountId = value
            End Set
        End Property

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

        Public Property CouponType() As String
            Get
                Return Me.m_couponType
            End Get
            Set(ByVal value As String)
                Me.m_couponType = value
            End Set
        End Property

    End Class

#End Region

#Region "GiftCardRedemptionRequest Class"

    <Serializable()> _
    Public Class GiftCardRedemptionRequest
        Inherits CouponRedemptionRequest

        Private m_address As IAddress

        Public Property Address() As IAddress
            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 "GiftCardRedemptionResponse Class"

    <Serializable()> _
    Public Class GiftCardRedemptionResponse
        Inherits ProviderResults
        Implements IProviderResults

        Private m_result As ResultCoupon
        Private m_giftCardRedemptionResult As CouponRedemptionResult
        Private m_address As IAddress

        Public Property Result() As ResultCoupon
            Get
                Return Me.m_result
            End Get
            Set(ByVal value As ResultCoupon)
                Me.m_result = value
            End Set
        End Property

        Public Property GiftCardRedemptionResult() As CouponRedemptionResult
            Get
                Return Me.m_giftCardRedemptionResult
            End Get
            Set(ByVal value As CouponRedemptionResult)
                Me.m_giftCardRedemptionResult = value
            End Set
        End Property

        Public Property Address() As IAddress
            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 "Common"
    <Serializable()> _
    Public Class ResultCoupon

        Private m_returnCodeField As ResultReturnCodeCoupon
        Private m_referenceCodeField As String
        Private m_typeField As ResultTypeCoupon
        Private m_descriptionField As String
        Private m_dateTimeField As Date
        Private m_sourceField As String
        Private m_serverField As String
        Private m_exceptionInfoField As ResultExceptionInfoCoupon
        Private m_statusMessagesField() As CsgStatusMessageCoupon

        Public Property ReturnCode() As ResultReturnCodeCoupon
            Get
                Return Me.m_returnCodeField
            End Get
            Set(ByVal value As ResultReturnCodeCoupon)
                Me.m_returnCodeField = value
            End Set
        End Property

        Public Property ReferenceCode() As String
            Get
                Return Me.m_referenceCodeField
            End Get
            Set(ByVal value As String)
                Me.m_referenceCodeField = value
            End Set
        End Property

        Public Property Type() As ResultTypeCoupon
            Get
                Return Me.m_typeField
            End Get
            Set(ByVal value As ResultTypeCoupon)
                Me.m_typeField = value
            End Set
        End Property

        Public Property Description() As String
            Get
                Return Me.m_descriptionField
            End Get
            Set(ByVal value As String)
                Me.m_descriptionField = value
            End Set
        End Property

        Public Property DateTime() As Date
            Get
                Return Me.m_dateTimeField
            End Get
            Set(ByVal value As Date)
                Me.m_dateTimeField = value
            End Set
        End Property

        Public Property Source() As String
            Get
                Return Me.m_sourceField
            End Get
            Set(ByVal value As String)
                Me.m_sourceField = value
            End Set
        End Property

        Public Property Server() As String
            Get
                Return Me.m_serverField
            End Get
            Set(ByVal value As String)
                Me.m_serverField = value
            End Set
        End Property

        Public Property ExceptionInfo() As ResultExceptionInfoCoupon
            Get
                Return Me.m_exceptionInfoField
            End Get
            Set(ByVal value As ResultExceptionInfoCoupon)
                Me.m_exceptionInfoField = value
            End Set
        End Property

        Public Property StatusMessages() As CsgStatusMessageCoupon()
            Get
                Return Me.m_statusMessagesField
            End Get
            Set(ByVal value As CsgStatusMessageCoupon())
                Me.m_statusMessagesField = value
            End Set
        End Property

    End Class
    <Serializable()> _
    Public Class ResultExceptionInfoCoupon

        Private m_typeField As String
        Private m_messageField As String
        Private m_stackTraceField As String
        Private m_codeField As String

        Public Property Type() As String
            Get
                Return Me.m_typeField
            End Get
            Set(ByVal value As String)
                Me.m_typeField = value
            End Set
        End Property

        Public Property Message() As String
            Get
                Return Me.m_messageField
            End Get
            Set(ByVal value As String)
                Me.m_messageField = value
            End Set
        End Property

        Public Property StackTrace() As String
            Get
                Return Me.m_stackTraceField
            End Get
            Set(ByVal value As String)
                Me.m_stackTraceField = value
            End Set
        End Property

        Public Property Code() As String
            Get
                Return Me.m_codeField
            End Get
            Set(ByVal value As String)
                Me.m_codeField = value
            End Set
        End Property
    End Class

    Public Enum ResultReturnCodeCoupon
        m_Success
        m_NoDataFound
        m_InvalidXml
        m_BusinessRuleNotMet
        m_Exception
        m_DatabaseError
    End Enum
    Public Enum ResultTypeCoupon
        m_Informational
        m_Error
    End Enum
    <Serializable()> _
    Public Class CsgStatusMessageCoupon

        Private m_codeField As String
        Private m_messageField As String

        Public Property Code() As String
            Get
                Return Me.m_codeField
            End Get
            Set(ByVal value As String)
                Me.m_codeField = value
            End Set
        End Property

        Public Property Message() As String
            Get
                Return Me.m_messageField
            End Get
            Set(ByVal value As String)
                Me.m_messageField = value
            End Set
        End Property
    End Class
#End Region

End Class

