38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
/**
|
|
* Request data transformation utilities
|
|
*/
|
|
|
|
import { ClosedRequest } from '../types/closedRequests.types';
|
|
|
|
export function transformClosedRequest(r: any): ClosedRequest {
|
|
return {
|
|
id: r.requestNumber || r.request_number || r.requestId, // Use requestNumber as primary identifier
|
|
requestId: r.requestId, // Keep requestId for reference
|
|
displayId: r.requestNumber || r.request_number || r.requestId,
|
|
title: r.title,
|
|
description: r.description,
|
|
status: (r.status || '').toString().toLowerCase() as 'rejected' | 'closed',
|
|
priority: (r.priority || '').toString().toLowerCase() as 'express' | 'standard',
|
|
initiator: {
|
|
name: r.initiator?.displayName || r.initiator?.email || '—',
|
|
avatar: (r.initiator?.displayName || 'NA')
|
|
.split(' ')
|
|
.map((s: string) => s[0])
|
|
.join('')
|
|
.slice(0, 2)
|
|
.toUpperCase()
|
|
},
|
|
createdAt: r.submittedAt || r.createdAt || r.created_at || '—',
|
|
dueDate: r.closureDate || r.closure_date || r.closedAt || undefined,
|
|
reason: r.conclusionRemark || r.conclusion_remark,
|
|
department: r.department,
|
|
totalLevels: r.totalLevels || 0,
|
|
completedLevels: r.summary?.approvedLevels || 0,
|
|
};
|
|
}
|
|
|
|
export function transformClosedRequests(data: any[]): ClosedRequest[] {
|
|
return data.map(transformClosedRequest);
|
|
}
|
|
|