Untitled

 avatar
unknown
javascript
6 months ago
2.4 kB
2
Indexable
export function calculateTAT(serviceRequest, statusHistory) {
    console.log('serviceRequest', serviceRequest)
    console.log('statusHistory', statusHistory)
    const createdAt = new Date(serviceRequest.createdAt);

    function getEarliestDate(statusList) {
        for (const status of statusList) {
            const statusEntry = statusHistory.find(entry => entry.status === status);
            if (statusEntry) {
                return new Date(statusEntry.date);
            }
        }
        return null
    }
    function getDateForStatus(status) {
        const statusEntry = statusHistory.find(entry => entry.status === status);
        if (statusEntry) {
            return new Date(statusEntry.date);
        }
        return null;
    }
    function getLatestDate(statusList) {
        for (const status of [...statusList].reverse()) {
            const statusEntry = statusHistory.find(entry => entry.status === status);
            if (statusEntry) {
                return new Date(statusEntry.date);
            }
        }
        return null
    }

    const earliestVisitStatusDate = getLatestDate(visitStatuses);
    const earliestQuoteSubmissionStatusDate = getLatestDate(quoteSubmissionStatuses);
    const earliestQuoteApprovalStatusDate = getLatestDate(quoteApprovalStatuses);
    const earliestWorkCompletedStatusDate = getEarliestDate(workCompletedStatuses);
    console.log('')
    //quoteApproaval  = earliestQuoate
    const tat = {
        visitTAT: earliestVisitStatusDate ? msToDays(earliestVisitStatusDate - createdAt) : null,
        quoteSubmissionTAT: earliestQuoteSubmissionStatusDate ? msToDays(earliestQuoteSubmissionStatusDate - createdAt) : null,
        quoteApprovalTAT: earliestQuoteApprovalStatusDate ? msToDays(earliestQuoteApprovalStatusDate - getDateForStatus('QUOTATION_APPROVAL_PENDING')) : null,
        workCompletedTAT: earliestWorkCompletedStatusDate ? msToDays(earliestWorkCompletedStatusDate - getDateForStatus('QUOTATION_APPROVED')) : null,
        visitCompleted: earliestVisitStatusDate !== null,
        quoteSubmitted: earliestQuoteSubmissionStatusDate !== null,
        workCompleted: earliestWorkCompletedStatusDate !== null,
        quoteApproved: earliestQuoteApprovalStatusDate !== null
    };
    Object.keys(tat).forEach(key => {
        if (key.endsWith('TAT') && tat[key] >= 1980) {
            tat[key] = 'N/A'
        }
    })
    return tat;
}
Editor is loading...
Leave a Comment