Subversion Repositories SmartDukaan

Rev

Rev 15366 | Rev 15370 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 15366 Rev 15368
Line 4... Line 4...
4
from dtr import main
4
from dtr import main
5
from dtr.config import PythonPropertyReader
5
from dtr.config import PythonPropertyReader
6
from dtr.storage import Mongo
6
from dtr.storage import Mongo
7
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
7
from dtr.storage.DataService import Retailers, Users, CallHistory, RetryConfig, \
8
    RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
8
    RetailerLinks, Activation_Codes, Agents, Agent_Roles, AgentLoginTimings, \
9
    FetchDataHistory, RetailerContacts, Orders
9
    FetchDataHistory, RetailerContacts, Orders, OnboardedRetailerChecklists
10
from dtr.storage.Mongo import get_mongo_connection
10
from dtr.storage.Mongo import get_mongo_connection
11
from dtr.storage.Mysql import fetchResult
11
from dtr.storage.Mysql import fetchResult
12
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
12
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
13
    UserSpecificDeals
13
    UserSpecificDeals
14
from dtr.utils.utils import getLogger
14
from dtr.utils.utils import getLogger
Line 28... Line 28...
28
alphalist = list(string.uppercase)
28
alphalist = list(string.uppercase)
29
alphalist.remove('O')
29
alphalist.remove('O')
30
numList = ['1','2','3','4','5','6','7','8','9']
30
numList = ['1','2','3','4','5','6','7','8','9']
31
codesys = [alphalist, alphalist, numList, numList, numList]
31
codesys = [alphalist, alphalist, numList, numList, numList]
32
CONTACT_PRIORITY = ['sms', 'called', 'ringing']
32
CONTACT_PRIORITY = ['sms', 'called', 'ringing']
33
RETRY_MAP = {'fresh':'retry', 'folluwpup':'fretry', 'onboarding':'oretry'}
33
RETRY_MAP = {'fresh':'retry', 'followup':'fretry', 'onboarding':'oretry'}
34
ASSIGN_MAP = {'retry':'assigned', 'fretry':'fassigned', 'oretry':'oassigned'}
34
ASSIGN_MAP = {'retry':'assigned', 'fretry':'fassigned', 'oretry':'oassigned'}
35
 
35
 
36
def getNextCode(codesys, code=None):
36
def getNextCode(codesys, code=None):
37
    if code is None:
37
    if code is None:
38
        code = []
38
        code = []
Line 675... Line 675...
675
        self.jsonReq = jsonReq
675
        self.jsonReq = jsonReq
676
        invalidNumber = self.invalidNumber
676
        invalidNumber = self.invalidNumber
677
        callLater = self.callLater
677
        callLater = self.callLater
678
        alreadyUser = self.alReadyUser
678
        alreadyUser = self.alReadyUser
679
        verifiedLinkSent = self.verifiedLinkSent
679
        verifiedLinkSent = self.verifiedLinkSent
-
 
680
        onboarded = self.onboarded
680
        self.address = jsonReq.get('address')
681
        self.address = jsonReq.get('address')
681
        self.retailerId = int(jsonReq.get('retailerid'))
682
        self.retailerId = int(jsonReq.get('retailerid'))
682
        self.smsNumber = jsonReq.get('smsnumber') 
683
        self.smsNumber = jsonReq.get('smsnumber') 
683
        try:
684
        try:
684
            self.retailer = session.query(Retailers).filter_by(id=self.retailerId).first()
685
            self.retailer = session.query(Retailers).filter_by(id=self.retailerId).first()
Line 696... Line 697...
696
            lgr.info(self.callHistory.disposition_comments)
697
            lgr.info(self.callHistory.disposition_comments)
697
            self.callHistory.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
698
            self.callHistory.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
698
            self.callHistory.mobile_number = jsonReq.get('number')
699
            self.callHistory.mobile_number = jsonReq.get('number')
699
            self.callHistory.sms_verified = int(jsonReq.get("verified"))
700
            self.callHistory.sms_verified = int(jsonReq.get("verified"))
700
            lastFetchData = session.query(FetchDataHistory).filter_by(agent_id=self.agentId).order_by(FetchDataHistory.id.desc()).first()
701
            lastFetchData = session.query(FetchDataHistory).filter_by(agent_id=self.agentId).order_by(FetchDataHistory.id.desc()).first()
-
 
702
            if self.callDisposition == 'onboarded':
-
 
703
                self.checkList = jsonReq.get('checklist')
-
 
704
            else:
-
 
705
                
701
            if lastFetchData is None:
706
            if lastFetchData is None:
702
                raise
707
                raise
703
            self.callHistory.last_fetch_time= lastFetchData.created  
708
            self.callHistory.last_fetch_time= lastFetchData.created  
704
            
709
            
705
            dispositionMap = {  'call_later':callLater,
710
            dispositionMap = {  'call_later':callLater,
Line 713... Line 718...
713
                        'retailer_not_interested':invalidNumber,
718
                        'retailer_not_interested':invalidNumber,
714
                        'recharge_retailer':invalidNumber,
719
                        'recharge_retailer':invalidNumber,
715
                        'accessory_retailer':invalidNumber,
720
                        'accessory_retailer':invalidNumber,
716
                        'service_center_retailer':invalidNumber,
721
                        'service_center_retailer':invalidNumber,
717
                        'alreadyuser':alreadyUser,
722
                        'alreadyuser':alreadyUser,
718
                        'verified_link_sent':verifiedLinkSent
723
                        'verified_link_sent':verifiedLinkSent,
-
 
724
                        'onboarded':onboarded
719
                      }
725
                      }
720
            returned = dispositionMap[jsonReq.get('calldispositiontype')]()
726
            returned = dispositionMap[jsonReq.get('calldispositiontype')]()
721
        finally:
727
        finally:
722
            session.close()
728
            session.close()
723
        
729
        
Line 765... Line 771...
765
                newCode=lastLink.code
771
                newCode=lastLink.code
766
        return getNextCode(codesys, newCode)
772
        return getNextCode(codesys, newCode)
767
    
773
    
768
    
774
    
769
    def callLater(self,):
775
    def callLater(self,):
770
        self.retailer.status = 'retry' if self.callType == 'fresh' else 'fretry'
776
        self.retailer.status = RETRY_MAP.get(self.callType)
771
        self.retailer.call_priority = None
777
        self.retailer.call_priority = None
772
        if self.callDisposition == 'call_later':
778
        if self.callDisposition == 'call_later':
773
            if self.callHistory.disposition_description is not None:
779
            if self.callHistory.disposition_description is not None:
774
                self.retailer.call_priority = 'user_initiated'
780
                self.retailer.call_priority = 'user_initiated'
775
                self.retailer.next_call_time = datetime.strptime(self.callHistory.disposition_description, '%d/%m/%Y %H:%M:%S')
781
                self.retailer.next_call_time = datetime.strptime(self.callHistory.disposition_description, '%d/%m/%Y %H:%M:%S')
Line 821... Line 827...
821
            self.retailer.next_call_time = self.callHistory.call_time + timedelta(days=7)
827
            self.retailer.next_call_time = self.callHistory.call_time + timedelta(days=7)
822
            self.callHistory.disposition_description = 'App link sent via' + self.callHistory.disposition_description + '. Followup again on ' + datetime.strftime(self.retailer.next_call_time, '%d/%m/%Y %H:%M:%S')
828
            self.callHistory.disposition_description = 'App link sent via' + self.callHistory.disposition_description + '. Followup again on ' + datetime.strftime(self.retailer.next_call_time, '%d/%m/%Y %H:%M:%S')
823
        addContactToRetailer(self.agentId, self.retailerId, self.smsNumber, self.callType, 'sms')     
829
        addContactToRetailer(self.agentId, self.retailerId, self.smsNumber, self.callType, 'sms')     
824
        session.commit()
830
        session.commit()
825
        return True
831
        return True
-
 
832
    def onboarded(self,):
-
 
833
        self.retailer.status = self.callDisposition
-
 
834
        checkList = OnboardedRetailerChecklists()
-
 
835
        checkList.contact_us = self.checkList.get('contactus')
-
 
836
        checkList.doa_return_policy = self.checkList.get('daoreturnpolicy')
-
 
837
        checkList.number_verification = self.checkList.get('numberverification')
-
 
838
        checkList.payment_option = self.checkList.get('paymentoption')
-
 
839
        checkList.preferences = self.checkList.get('preferences')
-
 
840
        checkList.product_info = self.checkList.get('productinfo')
-
 
841
        checkList.retailer_id = self.retailerId
-
 
842
        session.commit()
-
 
843
        return True
-
 
844
        
-
 
845
        
826
def isActivated(retailerId):
846
def isActivated(retailerId):
827
    retailerLink = session.query(RetailerLinks).filter_by(retailer_id=retailerId).first()
847
    retailerLink = session.query(RetailerLinks).filter_by(retailer_id=retailerId).first()
828
    user = session.query(Users).filter_by(referrer=retailerLink.code).first()
848
    user = session.query(Users).filter_by(referrer=retailerLink.code).first()
829
    if user is None:
849
    if user is None:
830
        mobileNumbers = list(session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailerId).all())
850
        mobileNumbers = list(session.query(RetailerContacts.mobile_number).filter_by(retailer_id=retailerId).all())