Subversion Repositories SmartDukaan

Rev

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

Rev 18416 Rev 18620
Line 1667... Line 1667...
1667
                user.counter=1
1667
                user.counter=1
1668
                user.modified = datetime.now()
1668
                user.modified = datetime.now()
1669
                session.commit()
1669
                session.commit()
1670
                resp.body = json.dumps(todict(getUserObject(user)), encoding='utf-8')
1670
                resp.body = json.dumps(todict(getUserObject(user)), encoding='utf-8')
1671
                session.close()
1671
                session.close()
-
 
1672
        if project_name == 'accs_order':
-
 
1673
            if retryFlag:
-
 
1674
                user = self.getRetryUser(3)
-
 
1675
            else:
-
 
1676
                user = self.getNewUser(3)
1672
 
1677
            
-
 
1678
            if user is None:
-
 
1679
                resp.body ={}
-
 
1680
            else:        
-
 
1681
                user.status =  'assigned'
-
 
1682
                user.agent_id = req.get_param("agent_id")
-
 
1683
                user.counter=1
-
 
1684
                user.modified = datetime.now()
-
 
1685
                session.commit()
-
 
1686
                resp.body = json.dumps(todict(getUserObject(user)), encoding='utf-8')
-
 
1687
                session.close()
1673
                
1688
                    
1674
    def getRetryUser(self,projectId,failback=True):
1689
    def getRetryUser(self,projectId,failback=True):
1675
        status = "retry"
1690
        status = "retry"
1676
        user = session.query(UserCrmCallingData).filter_by(status=status,project_id=projectId).filter(UserCrmCallingData.next_call_time<=datetime.now()).filter(~(UserCrmCallingData.contact1).like('')).order_by(UserCrmCallingData.next_call_time).with_lockmode("update").first()
1691
        user = session.query(UserCrmCallingData).filter_by(status=status,project_id=projectId).filter(UserCrmCallingData.next_call_time<=datetime.now()).filter(~(UserCrmCallingData.contact1).like('')).order_by(UserCrmCallingData.next_call_time).with_lockmode("update").first()
1677
        
1692
        
1678
        if user is not None:
1693
        if user is not None:
Line 1793... Line 1808...
1793
                if returned:
1808
                if returned:
1794
                    resp.body = "{\"result\":\"success\"}"
1809
                    resp.body = "{\"result\":\"success\"}"
1795
                else:
1810
                else:
1796
                    resp.body = "{\"result\":\"failed\"}"
1811
                    resp.body = "{\"result\":\"failed\"}"
1797
 
1812
 
-
 
1813
        if project_name == 'accs_order':
-
 
1814
                jsonReq = json.loads(req.stream.read(), encoding='utf-8')
-
 
1815
                lgr.info( "Request ----\n"  + str(jsonReq))
-
 
1816
                self.jsonReq = jsonReq
-
 
1817
                self.callType="default"
-
 
1818
                callLaterAccs = self.callLaterAccs
-
 
1819
                accsDisposition = self.accsDisposition
-
 
1820
                self.userId = int(jsonReq.get('user_id'))
-
 
1821
                try:
-
 
1822
                    self.user = session.query(UserCrmCallingData).filter_by(user_id=self.userId).filter(UserCrmCallingData.project_id==2).first()
-
 
1823
                    self.callDisposition = jsonReq.get('calldispositiontype')
-
 
1824
                    self.callHistoryCrm = CallHistoryCrm()
-
 
1825
                    self.callHistoryCrm.agent_id=self.agentId
-
 
1826
                    self.callHistoryCrm.project_id = 3
-
 
1827
                    self.callHistoryCrm.call_disposition = self.callDisposition
-
 
1828
                    self.callHistoryCrm.user_id=self.userId
-
 
1829
                    self.callHistoryCrm.duration_sec = int(jsonReq.get("callduration"))
-
 
1830
                    self.callHistoryCrm.disposition_comments = jsonReq.get('calldispositioncomments')
-
 
1831
                    self.callHistoryCrm.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
-
 
1832
                    self.callHistoryCrm.mobile_number = jsonReq.get('number')
-
 
1833
                    self.callHistoryCrm.feedback = jsonReq.get('feedbacks')
-
 
1834
                    self.inputs = jsonReq.get("inputs")
-
 
1835
                    dispositionMap = {  'call_later':callLaterAccs,
-
 
1836
                                'ringing_no_answer':callLaterAccs,
-
 
1837
                                'not_reachable':callLaterAccs,
-
 
1838
                                'switch_off':callLaterAccs,
-
 
1839
                                'technical_issue':accsDisposition,
-
 
1840
                                'pricing_issue':accsDisposition,
-
 
1841
                                'shipping_issue':accsDisposition,
-
 
1842
                                'internet_issue':accsDisposition,
-
 
1843
                                'checking_price':accsDisposition,
-
 
1844
                                'order_process':accsDisposition,
-
 
1845
                                'placed_order':accsDisposition,
-
 
1846
                                'place_order':accsDisposition
-
 
1847
                              }
-
 
1848
                    returned = dispositionMap[jsonReq.get('calldispositiontype')]()
-
 
1849
                finally:
-
 
1850
                    session.close()
-
 
1851
                
-
 
1852
                if returned:
-
 
1853
                    resp.body = "{\"result\":\"success\"}"
-
 
1854
                else:
-
 
1855
                    resp.body = "{\"result\":\"failed\"}"
-
 
1856
 
1798
    def accsDisposition(self):
1857
    def accsDisposition(self):
1799
        self.user.status='done'
1858
        self.user.status='done'
1800
        self.user.user_available = 1
1859
        self.user.user_available = 1
1801
        self.user.disposition=self.callDisposition
1860
        self.user.disposition=self.callDisposition
1802
        self.user.modified = datetime.now()
1861
        self.user.modified = datetime.now()
Line 1892... Line 1951...
1892
def insertUserCrmData(project_id):
1951
def insertUserCrmData(project_id):
1893
    if project_id==1:  
1952
    if project_id==1:  
1894
        getCartDetailsUser()
1953
        getCartDetailsUser()
1895
    if project_id==2:  
1954
    if project_id==2:  
1896
        getCartTabsUser()
1955
        getCartTabsUser()
-
 
1956
    if project_id==3:
-
 
1957
        getAccsRepeatUsers(project_id)
1897
      
1958
    
-
 
1959
def getAccsRepeatUsers(project_id):
-
 
1960
    
-
 
1961
    usersMasterList=[]
-
 
1962
    ACCS_ALL_ORDERS = "select distinct user_id from allorder where category in ('Accs','Accessories') and store_id='spice';"
-
 
1963
    result = fetchResult(ACCS_ALL_ORDERS)
-
 
1964
    for r in result:
-
 
1965
        usersMasterList.append(r[0])
-
 
1966
    
-
 
1967
    ACCS_LAST_FIFTEEN_DAYS = "select distinct user_id from allorder where category in ('Accs','Accessories') and store_id='spice' and (date(created_on) between date(curdate() - interval 15 day) and date(curdate())) order by user_id;"
-
 
1968
    result = fetchResult(ACCS_LAST_FIFTEEN_DAYS)
-
 
1969
    for r in result:
-
 
1970
        if r[0] in usersMasterList:
-
 
1971
            usersMasterList.remove(r[0])        
-
 
1972
    
-
 
1973
    PRIOPRITIZING_USER_QUERY = "select user_id from allorder where category in ('Accs','Accessories')and store_id ='spice' and user_id in (%s)" % ",".join(map(str,usersMasterList)) + "group by user_id order by sum(amount_paid) desc;"
-
 
1974
    userFinalList=[]
-
 
1975
    result = fetchResult(PRIOPRITIZING_USER_QUERY)
-
 
1976
    for r in result:
-
 
1977
        userFinalList.append(r[0])
-
 
1978
    
-
 
1979
    counter=0
-
 
1980
    for i in userFinalList:
-
 
1981
        try:
-
 
1982
            userId=i
-
 
1983
            if counter==2:
-
 
1984
                break
-
 
1985
            userPresent = session.query(UserCrmCallingData).filter_by(user_id=userId).order_by(desc(UserCrmCallingData.modified)).first()
-
 
1986
            if userPresent is not None:
-
 
1987
                if userPresent.user_available==1:
-
 
1988
                    if userPresent.project_id==project_id:
-
 
1989
                        if userPresent.modified.date()>=(datetime.now().date()-timedelta(days=30)):
-
 
1990
                            continue
-
 
1991
                        else:
-
 
1992
                            pass    
-
 
1993
                    elif userPresent.modified>=(datetime.now().date()-timedelta(days=3)):
-
 
1994
                        continue
-
 
1995
                else:
-
 
1996
                    continue     
-
 
1997
            counter=counter+1
-
 
1998
            lgr.info("Counter while adding",str(counter))
-
 
1999
            userMasterData = UserCrmCallingData()
-
 
2000
            userMasterData.user_id = userId 
-
 
2001
            userMasterData.name =getUsername(userId) 
-
 
2002
            userMasterData.project_id = project_id
-
 
2003
            userMasterData.user_available=0
-
 
2004
            userMasterData.contact1 = getUserContactDetails(userId)
-
 
2005
            userMasterData.counter = 0
-
 
2006
            userMasterData.retry_count=0
-
 
2007
            userMasterData.invalid_retry_count=0
-
 
2008
            userMasterData.created = datetime.now()
-
 
2009
            userMasterData.modified = datetime.now()
-
 
2010
            userMasterData.status = 'new'
-
 
2011
            userMasterData.pincode_servicable = checkPincodeServicable(userId)
-
 
2012
            session.commit()
-
 
2013
        except:
-
 
2014
            print traceback.print_exc()
-
 
2015
        finally:
-
 
2016
            session.close()
-
 
2017
 
1898
def getCartDetailsUser():
2018
def getCartDetailsUser():
1899
    userList=[]
2019
    userList=[]
1900
    orderUserList=[]
2020
    orderUserList=[]
1901
    userMasterMap={}
2021
    userMasterMap={}
1902
    queryfilter = {"$and":
2022
    queryfilter = {"$and":