import React from 'react'; import { useLanguage } from '@/contexts/LanguageContext'; import { format } from 'date-fns'; import { Separator } from '@/components/ui/separator'; import { Badge } from '@/components/ui/badge'; import { MaintenanceItem } from '@/services/types/maintenance.types'; import { User } from '@/services/userService'; interface MaintenanceDetailSectionsProps { maintenance: MaintenanceItem; assignedUsers: User[]; } export const MaintenanceDetailSections = ({ maintenance, assignedUsers }: MaintenanceDetailSectionsProps) => { const { t } = useLanguage(); const formatDateTime = (dateString: string) => { try { return format(new Date(dateString), 'PPP p'); } catch (error) { return dateString; } }; const calculateDuration = (start: string, end: string): string => { try { const startTime = new Date(start); const endTime = new Date(end); const durationMs = endTime.getTime() - startTime.getTime(); // Convert to hours and minutes const hours = Math.floor(durationMs / (1000 * 60 * 60)); const minutes = Math.floor((durationMs % (1000 * 60 * 60)) / (1000 * 60)); if (hours === 0) { return `${minutes}m`; } else if (minutes === 0) { return `${hours}h`; } else { return `${hours}h ${minutes}m`; } } catch (error) { return "N/A"; } }; const affectedServices = typeof maintenance.affected === 'string' ? maintenance.affected.split(',').map(item => item.trim()) : []; return (
{/* Print Header - Only visible when printing */}

Scheduled Maintenance Report

{maintenance.title}

Reference ID: {maintenance.id}

Generated on {format(new Date(), 'PPP')}

{/* Reference ID - Only visible in UI */}
{t('referenceID')} {maintenance.id}
{/* Description Section */}

{t('description')}

{maintenance.description || t('noDescriptionProvided')}
{/* Time Information */}

{t('timeInformation')}

{t('scheduledStart')}

{formatDateTime(maintenance.start_time)}

{t('scheduledEnd')}

{formatDateTime(maintenance.end_time)}

{t('duration')}

{calculateDuration(maintenance.start_time, maintenance.end_time)}

{t('maintenanceType')}

{maintenance.field}

{/* Affected Services */}

{t('affectedServices')}

{affectedServices.length > 0 ? (
{affectedServices.map((service, index) => ( {service} ))}
) : ( {t('noAffectedServices')} )}
{/* Assigned Users - Simplified for print */}

{t('assignedPersonnel')}

{assignedUsers && assignedUsers.length > 0 ? (
{assignedUsers.map((user) => (
{user && (user.full_name?.[0] || user.username?.[0] || 'U').toUpperCase()}
{user.full_name || user.username}
))}
) : ( {t('noAssignedUsers')} )}
{/* Metadata - Condensed for print */}

{t('additionalInformation')}

{t('createdBy')}

{maintenance.created_by || t('notSpecified')}

{t('notificationChannel')}

{maintenance.notification_channel_name || t('notSpecified')}

{t('created')}

{formatDateTime(maintenance.created)}

{t('lastUpdated')}

{formatDateTime(maintenance.updated)}

{/* Notification Settings - Simplified for print */}

{t('notificationSettings')}

{maintenance.notify_subscribers === 'yes' ? t('subscribersWillBeNotified') : t('noNotifications')}

{/* Print Footer - Only visible when printing */}
Maintenance ID: {maintenance.id} Printed on {format(new Date(), 'PPP')}

This document is confidential and intended for internal use only.

); };