import * as chrono from 'chrono-node'
import { TapiContact } from './tapi-contact'
import { axios, extractNumber } from './utils'
export class CallHistory {
private callerIds: { [number: string]: TapiContact } = {}
private updateCallHistoryEntry (call: HTMLElement, callerId: TapiContact) {
if (callerId.tD_NAME !== '') {
var span = call.querySelector('span')
this.showTimeManager(call, span.nextSibling.textContent, callerId)
var text = span.textContent
span.textContent = callerId.tD_NAME
var br = document.createElement('br')
var span2 = document.createElement('span')
span2.style.fontSize = 'small'
span2.textContent = text
span.parentNode.insertBefore(br, span.nextSibling)
span.parentNode.insertBefore(span2, span.nextSibling)
}
}
private showTimeManager (call: HTMLElement, time: string, callerId: TapiContact) {
if (!callerId.tD_ID) {
return
}
var timeParts = time.split(/, /)
var duration = '00:00:00'
if (timeParts.length >= 1) {
time = timeParts[0]
}
if (timeParts.length >= 2) {
duration = timeParts[1]
}
var parsedDate = chrono.de.parseDate(time)
if (!parsedDate) {
parsedDate = chrono.parseDate(time)
}
if (!parsedDate) {
return
}
var parsedDuration = chrono.parseDate(duration)
console.log('TAPI call history time:', time, 'parsedDate:', parsedDate, 'duration:', duration, 'parsedDuration:', parsedDuration)
var connect = parsedDate.getFullYear().toString() +
(parsedDate.getMonth() + 1).toString().padStart(2, '0') + // (January gives 0)
parsedDate.getDate().toString().padStart(2, '0') +
parsedDate.getHours().toString().padStart(2, '0') +
parsedDate.getMinutes().toString().padStart(2, '0')
var length = (parsedDuration.getHours() * 60 + parsedDuration.getMinutes()).toString()
var toolbar = call.querySelector('.wcToolbarTiles')
var a = document.createElement('a')
var href = 'domizil://PM/Zeitbuchung?KontaktId=' + callerId.tD_ID + '&connect=' + connect + '&length=' + length
a.dataset.domizilLink = href
a.onclick = () => {
window.open(href)
}
a.innerHTML = ''
toolbar.insertBefore(a, toolbar.firstChild)
}
public async showCallHistory (element: HTMLElement) {
var span = element.querySelector('span')
var number = extractNumber(span.textContent)
if (!number) {
return
}
if (this.callerIds[number] !== undefined) {
this.updateCallHistoryEntry(element, this.callerIds[number])
} else {
var response = await axios.get('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number))
var callerId: TapiContact = { tD_NAME: '' }
if (response.status === 200) {
callerId = response.data
}
console.log('TAPI call histroy callerid response', number, response, callerId)
this.callerIds[number] = callerId
this.updateCallHistoryEntry(element, callerId)
}
}
}