/** * Dealer Claim Request Overview Tab * * This component is specific to Dealer Claim requests. * Located in: src/dealer-claim/components/request-detail/ */ import { ActivityInformationCard, DealerInformationCard, ProposalDetailsCard, RequestInitiatorCard, } from './claim-cards'; import { isClaimManagementRequest } from '@/utils/claimRequestUtils'; import { mapToClaimManagementRequest, determineUserRole, getRoleBasedVisibility, type RequestRole, } from '@/utils/claimDataMapper'; interface ClaimManagementOverviewTabProps { request: any; // Original request object apiRequest: any; // API request data currentUserId: string; isInitiator: boolean; onEditClaimAmount?: () => void; className?: string; } export function ClaimManagementOverviewTab({ request: _request, apiRequest, currentUserId, isInitiator: _isInitiator, onEditClaimAmount: _onEditClaimAmount, className = '', }: ClaimManagementOverviewTabProps) { // Check if this is a claim management request if (!isClaimManagementRequest(apiRequest)) { return (

This is not a claim management request.

); } // Map API data to claim management structure const claimRequest = mapToClaimManagementRequest(apiRequest, currentUserId); if (!claimRequest) { console.warn('[ClaimManagementOverviewTab] Failed to map claim data:', { apiRequest, hasClaimDetails: !!apiRequest?.claimDetails, hasProposalDetails: !!apiRequest?.proposalDetails, hasCompletionDetails: !!apiRequest?.completionDetails, }); return (

Unable to load claim management data.

Please ensure the request has been properly initialized.

); } // Debug: Log mapped data for troubleshooting console.debug('[ClaimManagementOverviewTab] Mapped claim data:', { activityInfo: claimRequest.activityInfo, dealerInfo: claimRequest.dealerInfo, hasProposalDetails: !!claimRequest.proposalDetails, closedExpenses: claimRequest.activityInfo?.closedExpenses, closedExpensesBreakdown: claimRequest.activityInfo?.closedExpensesBreakdown, hasDealerCode: !!claimRequest.dealerInfo?.dealerCode, hasDealerName: !!claimRequest.dealerInfo?.dealerName, }); // Determine user's role const userRole: RequestRole = determineUserRole(apiRequest, currentUserId); // Get visibility settings based on role const visibility = getRoleBasedVisibility(userRole); console.debug('[ClaimManagementOverviewTab] User role and visibility:', { userRole, visibility, currentUserId, showDealerInfo: visibility.showDealerInfo, dealerInfoPresent: !!(claimRequest.dealerInfo?.dealerCode || claimRequest.dealerInfo?.dealerName), }); // Extract initiator info from request // The apiRequest has initiator object with displayName, email, department, phone, etc. const initiatorInfo = { name: apiRequest.initiator?.name || apiRequest.initiator?.displayName || apiRequest.initiator?.email || 'Unknown', role: apiRequest.initiator?.role || apiRequest.initiator?.designation || 'Initiator', department: apiRequest.initiator?.department || apiRequest.department || '', email: apiRequest.initiator?.email || 'N/A', phone: apiRequest.initiator?.phone || apiRequest.initiator?.mobile, }; return (
{/* Activity Information - Always visible */} {/* Dealer Information - Always visible */} {/* Proposal Details - Only shown after dealer submits proposal */} {visibility.showProposalDetails && claimRequest.proposalDetails && ( )} {/* Request Initiator */}
); } // Export as DealerClaimOverviewTab for consistency export { ClaimManagementOverviewTab as DealerClaimOverviewTab };