Subversion Repositories SmartDukaan

Rev

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

Rev 15091 Rev 15096
Line 1... Line 1...
1
from bson import json_util
1
from bson import json_util
2
from bson.json_util import dumps
2
from bson.json_util import dumps
3
from datetime import datetime
3
from datetime import datetime, timedelta
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
7
from dtr.storage.DataService import Retailers, Users, CallHistory
8
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
8
from dtr.utils import FetchLivePrices, DealSheet as X_DealSheet, \
9
    UserSpecificDeals
9
    UserSpecificDeals
10
from elixir import *
10
from elixir import *
11
from sqlalchemy.sql.expression import or_
11
from sqlalchemy.sql.expression import or_
12
import falcon
12
import falcon
Line 570... Line 570...
570
    def on_post(self, req, resp, agentId, callType):
570
    def on_post(self, req, resp, agentId, callType):
571
        self.agentId = int(agentId)
571
        self.agentId = int(agentId)
572
        self.callType = callType
572
        self.callType = callType
573
        jsonReq = json.loads(req.stream.read(), encoding='utf-8')
573
        jsonReq = json.loads(req.stream.read(), encoding='utf-8')
574
        self.jsonReq = jsonReq
574
        self.jsonReq = jsonReq
-
 
575
        retailer = session.query(Retailers).filter_by(id=int(jsonReq.get('retailerId'))).first()
-
 
576
#        if retailer is None:
-
 
577
#            resp.body = "{\"result\":{\"message\":\"Retailer Does not Exist\", \"status\":\"Error\"}}"
-
 
578
#            return
575
        
579
#        
576
        invalidNumber = self.invalidNumber
580
        invalidNumber = self.invalidNumber
577
        callLater = self.callLater
581
        callLater = self.callLater
578
        alreadyUser = self.alReadyUser()
582
        alreadyUser = self.alReadyUser
579
        verifiedLinkSent = self.verifiedLinkSent
583
        verifiedLinkSent = self.verifiedLinkSent
-
 
584
        self.retailerId = int(jsonReq.get('retailerid'))
-
 
585
        self.retailer = session.query(Retailers).filter_by(id=self.retailerId).first()
-
 
586
        self.callDisposition = jsonReq.get('calldispositiontype')
-
 
587
        self.mobile = jsonReq.get('number')
580
         
588
        
-
 
589
        self.callHistory = CallHistory()
-
 
590
        self.callHistory.agent_id=self.agentId
-
 
591
        self.callHistory.duration_sec = int(jsonReq.get("callduration"))
-
 
592
        self.callHistory.disposition_description = jsonReq.get('calldispositiondescritption')
-
 
593
        self.callHistory.call_time = datetime.strptime(jsonReq.get("calltime"), '%d/%m/%Y %H:%M:%S')
-
 
594
        self.callHistory.mobile_number = self.mobile
-
 
595
        self.callHistory.sms_verified = 0
-
 
596
        
581
        dispositionMap = {  'call_later':callLater,
597
        dispositionMap = {  'call_later':callLater,
582
                    'ringing_no_answer':callLater,
598
                    'ringing_no_answer':callLater,
583
                    'not_reachable':callLater,
599
                    'not_reachable':callLater,
584
                    'switch_off':callLater,
600
                    'switch_off':callLater,
585
                    'invalid_no':invalidNumber,
601
                    'invalid_no':invalidNumber,
Line 589... Line 605...
589
                    'alreadyuser':alreadyUser,
605
                    'alreadyuser':alreadyUser,
590
                    'verified_link_sent':verifiedLinkSent
606
                    'verified_link_sent':verifiedLinkSent
591
                  }
607
                  }
592
        dispositionMap[jsonReq.get('calldispositiontype')]()
608
        dispositionMap[jsonReq.get('calldispositiontype')]()
593
        
609
        
594
        retailer = session.query(Retailers).filter_by(id=jsonReq.get('retailerId')).one()
-
 
595
        if retailer is None:
-
 
596
            resp.body = "{\"result\":{\"message\":\"Retailer Does not Exist\", \"status\":\"Error\"}}"
-
 
597
            return
-
 
598
        
610
        
599
        resp.body = json.dumps(jsonReq, encoding='utf-8')
611
        resp.body = json.dumps(jsonReq, encoding='utf-8')
600
 
612
 
601
    def invalidNumber(self,):
613
    def invalidNumber(self,):
602
        callDisposition = self.jsonReq.get('calldispositiontype')
-
 
603
        dispositionDesc = self.jsonReq.get('calldispositiondescritption')
-
 
604
        retailerId = self.jsonReq.get('retailerid')
-
 
605
        mobile = self.jsonReq.get('number')
614
        pass
606
        callTime = self.jsonReq.get("calltime")
-
 
607
        callDuration = self.jsonReq.get("callduration") 
-
 
608
    def callLater(self,):
615
    def callLater(self,):
609
        callDisposition = self.jsonReq.get('calldispositiontype')
616
        if self.callDisposition == 'call_later':
610
        dispositionDesc = self.jsonReq.get('calldispositiondescritption')
617
            if self.dispositionDesc is not None:
611
        retailerId = self.jsonReq.get('retailerid')
618
                self.retailer.call_priority = 'system_initiated'
-
 
619
                self.retailer.next_call_time = datetime.strptime(self.callHistory.disposition_description, '%d/%m/%Y %H:%M:%S')
-
 
620
                self.callHistory.disposition_description = 'User requested to call on ' + self.callHistory.disposition_description
-
 
621
            else:
612
        mobile = self.jsonReq.get('number')
622
                self.retailer.call_priority = 'user_initiated'
613
        callTime = self.jsonReq.get("calltime")
623
                self.retailer.next_call_time = self.callHistory.call_time + timedelta(days=1)
614
        callDuration = self.jsonReq.get("callduration") 
624
                self.callHistory.disposition_description = 'User to be called next day'
-
 
625
            self.retailer.status = 'retry' if self.callType == 'fresh' else 'fretry'
-
 
626
            session.commit()
-
 
627
            return True
-
 
628
            
615
    def alReadyUser(self,):
629
    def alReadyUser(self,):
616
        print self.jsonReq
630
        print self.jsonReq
617
        callDisposition = self.jsonReq.get('calldispositiontype')
631
        callDisposition = self.jsonReq.get('calldispositiontype')
618
        dispositionDesc = self.jsonReq.get('calldispositiondescritption')
632
        dispositionDesc = self.jsonReq.get('calldispositiondescritption')
619
        retailerId = self.jsonReq.get('retailerid')
633
        retailerId = self.jsonReq.get('retailerid')
Line 654... Line 668...
654
    obj.title = retailer.title
668
    obj.title = retailer.title
655
    obj.contact1 = retailer.contact1
669
    obj.contact1 = retailer.contact1
656
    obj.contact2 = retailer.contact2
670
    obj.contact2 = retailer.contact2
657
    obj.address = retailer.address
671
    obj.address = retailer.address
658
    obj.id = retailer.id
672
    obj.id = retailer.id
659
    obj.scheduled = (retailer.call_priority == 'user_initiated')
673
    obj.scheduled = (retailer.call_priority is not None)
660
    return obj
674
    return obj
661
 
675
 
662
    
676
    
663
class Mock(object):
677
class Mock(object):
664
    pass
678
    pass