Subversion Repositories SmartDukaan

Rev

Rev 4494 | Rev 6250 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1976 varun.gupt 1
'''
2
Created on: May 24, 2011
3
@author: Varun Gupta
4
'''
5
 
6
from shop2020.model.v1.user.impl.PromotionDataAccessors import initialize, create_promotion,\
3386 varun.gupt 7
    generate_coupons_for_promotion, apply_coupon, track_coupon_usage, is_alive,\
4189 varun.gupt 8
    get_active_coupons, get_successful_payment_count_for_coupon, get_rule_doc_string, \
5469 rajveer 9
    get_item_discount_map, get_discounts_for_entity, add_voucher, assign_voucher,\
10
    mark_voucher_as_redeemed
2121 varun.gupt 11
from shop2020.model.v1.user.impl.PromotionRuleDataUtilities import get_coupon_usage_count_by_user
1976 varun.gupt 12
from shop2020.model.v1.user.impl import PromotionDataAccessors
5469 rajveer 13
from shop2020.model.v1.user.impl.Converters import to_t_coupon, to_t_item_coupon_discount,\
14
    to_t_voucher
1976 varun.gupt 15
 
16
class PromotionServiceHandler:
17
 
3187 rajveer 18
    def __init__(self, dbname='user', db_hostname='localhost'):
19
        initialize(dbname, db_hostname)
1976 varun.gupt 20
 
21
    def createPromotion(self, name, ruleExecutionSrc, startOn, endOn):
22
        '''
23
        Parameters:
24
        - name
25
        - ruleExecutionSrc
26
        - startOn
27
        - endOn
28
        '''
29
        try:
30
            create_promotion(name, ruleExecutionSrc, startOn, endOn)
31
        finally:
32
            PromotionDataAccessors.close_session()
33
 
34
    def getAllPromotions(self):
35
        try:
36
            pass
37
        finally:
38
            PromotionDataAccessors.close_session()
39
 
40
    def getPromotionById(self, promotionId):
41
        '''
42
        Parameters:
43
        - promotionId
44
        '''
45
        try:
46
            pass
47
        finally:
48
            PromotionDataAccessors.close_session()
49
 
50
    def generateCouponsForPromotion(self, promotionId, couponCode):
51
        '''
52
        Parameters:
53
        - promotionId
54
        - couponCode
55
        '''
56
        try:
57
            generate_coupons_for_promotion(promotionId, couponCode)
58
        finally:
59
            PromotionDataAccessors.close_session()
60
 
61
    def applyCoupon(self, couponCode, cartId):
62
        '''
63
        Parameters:
64
        - couponCode
65
        - cartId
66
        '''
67
        try:
68
            print 'Calling apply_coupon'
69
            return apply_coupon(couponCode, cartId)
70
        finally:
71
            PromotionDataAccessors.close_session()
72
 
73
    def trackCouponUsage(self, couponCode, transactionId, userId):
74
        '''
75
        Parameters:
76
        - couponCode
77
        - transactionId
78
        - userId
79
        '''
80
        try:
81
            track_coupon_usage(couponCode, transactionId, userId)
82
        finally:
83
            PromotionDataAccessors.close_session()
84
 
85
    def getCouponUsageCountByUser(self, couponCode, userId):
86
        '''
87
        Parameters:
88
        - couponCode
89
        - userId
90
        '''
91
        try:
92
            return get_coupon_usage_count_by_user(couponCode, userId)
93
        finally:
3376 rajveer 94
            PromotionDataAccessors.close_session()
3386 varun.gupt 95
 
96
    def getActiveCoupons(self):
97
        '''
98
        Returns a list of active coupons
99
        '''
100
        try:
101
            return [to_t_coupon(coupon) for coupon in get_active_coupons()]
102
        finally:
103
            PromotionDataAccessors.close_session()
104
 
105
    def getSuccessfulPaymentCountForCoupon(self, couponCode):
106
        '''
107
        Returns the count of successful payments done using this coupon
108
 
109
        Parameters:
110
        - couponCode
111
        '''
112
        try:
113
            return get_successful_payment_count_for_coupon(couponCode)
114
        finally:
115
            PromotionDataAccessors.close_session()
116
 
117
    def getRuleDocString(self, ruleName):
118
        '''
119
        Returns the doc string of the rule module
120
 
121
        Parameters:
122
        - ruleName
123
        '''
124
        try:
125
            return get_rule_doc_string(ruleName)
126
        finally:
127
            PromotionDataAccessors.close_session()
4189 varun.gupt 128
 
129
    def getItemDiscountMap(self, itemIds):
130
        '''
131
        Returns 
132
        '''
133
        try:
134
            return [to_t_item_coupon_discount(item_coupon_discount) for item_coupon_discount in get_item_discount_map(itemIds)]
135
        finally:
136
            PromotionDataAccessors.close_session()
4494 varun.gupt 137
 
138
    def getDiscountsForEntity(self, entityId):
139
        '''
140
        Returns the tuple containing discount coupon and discount value applicable for this entity
4189 varun.gupt 141
 
4494 varun.gupt 142
        Parameters:
143
         - entityId
144
        '''
145
        try:
146
            return get_discounts_for_entity(entityId)
147
        finally:
148
            PromotionDataAccessors.close_session()
5469 rajveer 149
 
150
    def addVoucher(self, voucher):
151
        """
152
        Parameters:
153
         - voucher
154
        """
155
        try:
156
            return add_voucher(voucher)
157
        finally:
158
            PromotionDataAccessors.close_session()
159
 
160
    def assignVoucher(self, userId, userEmail, voucherType, amount):
161
        """
162
        Parameters:
163
         - userId
164
         - voucherType
165
         - amount
166
        """
167
        try:
168
            return to_t_voucher(assign_voucher(userId, userEmail, voucherType, amount))
169
        finally:
170
            PromotionDataAccessors.close_session()
171
 
172
    def markVoucherAsRedeemed(self, voucherCode, redeemedOn):
173
        """
174
        Parameters:
175
         - voucherCode
176
         - redeemedOn
177
        """
178
        try:
179
            return mark_voucher_as_redeemed(voucherCode, redeemedOn)
180
        finally:
181
            PromotionDataAccessors.close_session()
182
 
3386 varun.gupt 183
    def isAlive(self):
3376 rajveer 184
        """
185
        For checking weather service is active alive or not. It also checks connectivity with database
186
        """
187
        try:
188
            return is_alive()
189
        finally:
3386 varun.gupt 190
            PromotionDataAccessors.close_session()