def setCustomerJourneyTS()

in visualizeConnectData/scripts/mockCTRs/create.py [0:0]


def setCustomerJourneyTS(templateCTR, year, month, day):
    isoTimestampFormat = '%Y-%m-%dT%H:%M:%SZ'
    
    startTime = datetime.datetime(year, month, day) + datetime.timedelta(hours=random.randint(8, 18))
    strStartTime = startTime.strftime(isoTimestampFormat)
    templateCTR['InitiationTimestamp'] = strStartTime
    templateCTR['ConnectedToSystemTimestamp'] = strStartTime
    
    timeInIVRSec = random.randint(10, 45)
    
    timeInQueueSec = 0
    if (templateCTR['Queue'] is not None):
        enqueueTime = startTime + datetime.timedelta(seconds=timeInIVRSec)
        templateCTR['Queue']['EnqueueTimestamp'] = enqueueTime.strftime(isoTimestampFormat)
        
        timeInQueueSec = random.randint(10, 120)
        templateCTR['Queue']['Duration'] = timeInQueueSec
        
        dequeueTime = enqueueTime + datetime.timedelta(seconds=timeInQueueSec)
        templateCTR['Queue']['DequeueTimestamp'] = dequeueTime.strftime(isoTimestampFormat)
    
    timeWithAgentSec = 0
    acwSec = 0
    if (templateCTR['Agent'] is not None):
        if (templateCTR['Queue'] is None):
            raise RuntimeError('Queue cannot be None')  
        
        templateCTR['Agent']['ConnectedToAgentTimestamp'] = templateCTR['Queue']['DequeueTimestamp']
        
        holdDuration = templateCTR['Agent']['CustomerHoldDuration']
        timeWithAgentSec = (random.randint(1, 10) * 60) + holdDuration
        templateCTR['Agent']['AgentInteractionDuration'] = timeWithAgentSec
        
        acwStartTime = dequeueTime + datetime.timedelta(seconds=timeWithAgentSec)
        templateCTR['Agent']['AfterContactWorkStartTimestamp'] = acwStartTime.strftime(isoTimestampFormat)
        
        acwSec = random.randint(1, 10) * 60
        templateCTR['Agent']['AfterContactWorkDuration'] = acwSec
        
        acwEndTime = acwStartTime + datetime.timedelta(seconds=acwSec)
        templateCTR['Agent']['AfterContactWorkEndTimestamp'] = acwEndTime.strftime(isoTimestampFormat)
        
    endTime = startTime + \
        datetime.timedelta(seconds=timeInIVRSec) + \
        datetime.timedelta(seconds=timeInQueueSec) + \
        datetime.timedelta(seconds=timeWithAgentSec) + \
        datetime.timedelta(seconds=acwSec)
    strEndTime = endTime.strftime(isoTimestampFormat)
    templateCTR['DisconnectTimestamp'] = strEndTime
    templateCTR['LastUpdateTimestamp'] = strEndTime

    return templateCTR